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"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel target="17" />
|
||||
<bytecodeTargetLevel target="21" />
|
||||
</component>
|
||||
</project>
|
|
@ -4,7 +4,7 @@
|
|||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="testRunner" value="GRADLE" />
|
||||
<option name="testRunner" value="CHOOSE_PER_TEST" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="gradleHome" value="$PROJECT_DIR$/../../../../gradle/gradle-7.5" />
|
||||
<option name="gradleJvm" value="jbr-17" />
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="KotlinJpsPluginSettings">
|
||||
<option name="version" value="2.0.0" />
|
||||
<option name="version" value="2.0.20" />
|
||||
</component>
|
||||
</project>
|
|
@ -280,7 +280,7 @@
|
|||
<option name="myDefaultNotNull" value="androidx.annotation.NonNull" />
|
||||
<option name="myNullables">
|
||||
<value>
|
||||
<list size="15">
|
||||
<list size="16">
|
||||
<item index="0" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
|
||||
<item index="1" class="java.lang.String" itemvalue="org.jspecify.nullness.Nullable" />
|
||||
<item index="2" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
|
||||
|
@ -296,12 +296,13 @@
|
|||
<item index="12" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
|
||||
<item index="13" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
|
||||
<item index="14" class="java.lang.String" itemvalue="android.annotation.Nullable" />
|
||||
<item index="15" class="java.lang.String" itemvalue="org.jspecify.annotations.Nullable" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
<option name="myNotNulls">
|
||||
<value>
|
||||
<list size="14">
|
||||
<list size="15">
|
||||
<item index="0" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
|
||||
<item index="1" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
|
||||
<item index="2" class="java.lang.String" itemvalue="jakarta.annotation.Nonnull" />
|
||||
|
@ -316,11 +317,12 @@
|
|||
<item index="11" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
||||
<item index="12" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.NonNull" />
|
||||
<item index="13" class="java.lang.String" itemvalue="android.annotation.NonNull" />
|
||||
<item index="14" class="java.lang.String" itemvalue="org.jspecify.annotations.NonNull" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
|
|
@ -40,6 +40,16 @@
|
|||
</config>
|
||||
</shared>
|
||||
<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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -50,11 +60,21 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</layout>
|
||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_restaurant_view.xml">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</layout>
|
||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/activity_sign.xml">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -75,11 +95,21 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -90,6 +120,16 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -125,6 +165,11 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -155,6 +200,11 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -170,6 +220,11 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -195,11 +250,21 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -220,6 +285,16 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -230,6 +305,11 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<state>Landscape</state>
|
||||
|
@ -286,6 +366,11 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -296,6 +381,11 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
|
@ -321,16 +411,46 @@
|
|||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</layout>
|
||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_ubication_row_6869.xml">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</layout>
|
||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_ubication_row_new.xml">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</layout>
|
||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/item_workermistake_row.xml">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</layout>
|
||||
<layout url="file://$PROJECT_DIR$/app/src/main/res/layout/sale_row_fragment.xml">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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">
|
||||
<config>
|
||||
<theme>@style/AppTheme</theme>
|
||||
</config>
|
||||
</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>
|
||||
</component>
|
||||
<component name="AndroidLogFilters">
|
||||
|
@ -373,103 +493,12 @@
|
|||
</select>
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refactorResponse PasillerosItem refs #7827">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/appInsightsSettings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/appInsightsSettings.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/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" />
|
||||
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refs#6845 userInterface">
|
||||
<change afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/changeLog.sh" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/build.gradle.kts" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle.kts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/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/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" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/model/ItemUbicadorVO.kt" afterDir="false" />
|
||||
</list>
|
||||
<list id="7b98f93d-6980-4bf1-8e61-c7afd10e56f2" name="Change_category" comment="Change_category" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
@ -484,7 +513,7 @@
|
|||
<component name="CodeInsightWorkspaceSettings">
|
||||
<option name="optimizeImportsOnTheFly" value="true" />
|
||||
</component>
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[21114523025303]" />
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="device_and_snapshot_combo_box_target[DeviceId(pluginId=LocalEmulator, isTemplate=false, identifier=path=C:\Users\sergiodt\.android\avd\Pixel_7a_API_30.avd)]" />
|
||||
<component name="ExportToHTMLSettings">
|
||||
<option name="OPEN_IN_BROWSER" value="true" />
|
||||
<option name="OUTPUT_DIRECTORY" value="C:\Program Files\Android\Android Studio\inspections" />
|
||||
|
@ -574,7 +603,7 @@
|
|||
</option>
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="dev" />
|
||||
<entry key="$PROJECT_DIR$" value="dev_6078" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
|
@ -635,63 +664,60 @@
|
|||
<option name="showLibraryContents" value="true" />
|
||||
<option name="showMembers" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"Android App.app.executor": "Run",
|
||||
"ApkExportedModule": "Gestor_Almacén.app",
|
||||
"DEBUGGABLE_DEVICE": "zebra_technologies-tc21-21114523025303",
|
||||
"DEBUGGABLE_PROCESS": "es.verdnatura.sfusion",
|
||||
"DEBUGGER_ID": "Auto",
|
||||
"ExportApk.ApkPathForGestor_Almacén.app": "C:\\Users\\sergiodt\\AndroidStudioProjects\\vn-warehouseManager\\app",
|
||||
"Gradle.vn-warehouseManager [clean].executor": "Run",
|
||||
"Gradle.vn-warehouseManager.executor": "Run",
|
||||
"KotlinFunctionFindUsagesOptions.isSearchForTextOccurrences": "true",
|
||||
"PROJECT_TRUSTED_KEY": "true",
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.cidr.known.project.marker": "true",
|
||||
"RunOnceActivity.readMode.enableVisualFormatting": "true",
|
||||
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||
"SHOW_ALL_PROCESSES": "false",
|
||||
"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/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-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/TextView.java_SELECTED": "TextView",
|
||||
"cf.first.check.clang-format": "false",
|
||||
"cidr.known.project.marker": "true",
|
||||
"com.developerphil.adbidea.selecteddevices": "G65TY9DQN7X4BIE6",
|
||||
"com.google.services.firebase.aqiPopupShown": "true",
|
||||
"git-widget-placeholder": "dev__6078",
|
||||
"ignore.virus.scanning.warn.message": "true",
|
||||
"kotlin-language-version-configured": "true",
|
||||
"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",
|
||||
"project.structure.last.edited": "Modules",
|
||||
"project.structure.proportion": "0.17",
|
||||
"project.structure.side.proportion": "0.2",
|
||||
"rearrange.code.on.save": "true",
|
||||
"run.code.analysis.last.selected.profile": "pProject Default",
|
||||
"settings.editor.selected.configurable": "actions.on.save"
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"Android App.app.executor": "Run",
|
||||
"ApkExportedModule": "Gestor_Almacén.app",
|
||||
"DEBUGGABLE_DEVICE": "zebra_technologies-tc21-21114523025303",
|
||||
"DEBUGGABLE_PROCESS": "es.verdnatura.sfusion",
|
||||
"DEBUGGER_ID": "Auto",
|
||||
"ExportApk.ApkPathForGestor_Almacén.app": "C:\\Users\\sergiodt\\AndroidStudioProjects\\vn-warehouseManager\\app",
|
||||
"Gradle.vn-warehouseManager [clean].executor": "Run",
|
||||
"Gradle.vn-warehouseManager.executor": "Run",
|
||||
"KotlinFunctionFindUsagesOptions.isSearchForTextOccurrences": "true",
|
||||
"PROJECT_TRUSTED_KEY": "true",
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.cidr.known.project.marker": "true",
|
||||
"RunOnceActivity.readMode.enableVisualFormatting": "true",
|
||||
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||
"SHOW_ALL_PROCESSES": "false",
|
||||
"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/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-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/TextView.java_SELECTED": "TextView",
|
||||
"cf.first.check.clang-format": "false",
|
||||
"cidr.known.project.marker": "true",
|
||||
"com.developerphil.adbidea.selecteddevices": "G65TY9DQN7X4BIE6",
|
||||
"com.google.services.firebase.aqiPopupShown": "true",
|
||||
"git-widget-placeholder": "dev",
|
||||
"ignore.virus.scanning.warn.message": "true",
|
||||
"kotlin-language-version-configured": "true",
|
||||
"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",
|
||||
"project.structure.last.edited": "Modules",
|
||||
"project.structure.proportion": "0.17",
|
||||
"project.structure.side.proportion": "0.2",
|
||||
"rearrange.code.on.save": "true",
|
||||
"run.code.analysis.last.selected.profile": "pProject Default",
|
||||
"settings.editor.selected.configurable": "preferences.pluginManager"
|
||||
},
|
||||
"keyToStringList": {
|
||||
"ExportApk.BuildVariants": [
|
||||
"betaRelease"
|
||||
"keyToStringList": {
|
||||
"ExportApk.BuildVariants": [
|
||||
"generalRelease"
|
||||
],
|
||||
"com.android.tools.idea.sqlite.queryhistory": [
|
||||
"select * from expedition where routeFk=182933;",
|
||||
"select * from expedition;",
|
||||
"select * from expeditionPending;",
|
||||
"select * from expedition where id = 7753995;\n\n",
|
||||
"\nselect * from expedition where id = 7753995;"
|
||||
],
|
||||
"kotlin-gradle-user-dirs": [
|
||||
"C:\\Users\\sergiodt\\.gradle"
|
||||
"com.android.tools.idea.sqlite.queryhistory": [
|
||||
"select * from expedition where routeFk=182933;",
|
||||
"select * from expedition;",
|
||||
"select * from expeditionPending;",
|
||||
"select * from expedition where id = 7753995;\n\n",
|
||||
"\nselect * from expedition where id = 7753995;"
|
||||
]
|
||||
}
|
||||
}]]></component>
|
||||
}</component>
|
||||
<component name="PsdUISettings">
|
||||
<option name="MODULE_TAB" value="Properties" />
|
||||
<option name="LAST_EDITED_SIGNING_CONFIG" value="debug" />
|
||||
|
@ -700,17 +726,17 @@
|
|||
<component name="RecentsManager">
|
||||
<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" />
|
||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\drawable" />
|
||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\java\es\verdnatura\domain" />
|
||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\xml" />
|
||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\raw" />
|
||||
</key>
|
||||
<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\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\raw" />
|
||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\assets" />
|
||||
</key>
|
||||
<key name="MoveKotlinTopLevelDeclarationsDialog.RECENTS_KEY">
|
||||
<recent name="es.verdnatura.presentation.view.feature.claim.fragment.ubication" />
|
||||
|
@ -720,11 +746,11 @@
|
|||
<recent name="es.verdnatura.presentation.view.feature.historicoshelving.fragment" />
|
||||
</key>
|
||||
<key name="CopyKotlinDeclarationDialog.RECENTS_KEY">
|
||||
<recent name="es.verdnatura.presentation.view.feature.paletizador.fragment" />
|
||||
<recent name="es.verdnatura.presentation.view.feature.parking.fragment" />
|
||||
<recent name="es.verdnatura.presentation.view.feature.collection.fragment" />
|
||||
<recent name="es.verdnatura.domain" />
|
||||
<recent name="es.verdnatura.presentation.view.feature.truck.adapter" />
|
||||
<recent name="es.verdnatura.presentation.view.feature.ubicador.adapter" />
|
||||
<recent name="es.verdnatura.presentation.view.feature.ubicador.fragment" />
|
||||
<recent name="es.verdnatura.presentation.view.feature.delivery.adapters" />
|
||||
<recent name="es.verdnatura.presentation.view.feature.delivery.fragments" />
|
||||
<recent name="es.verdnatura.domain.userCases" />
|
||||
</key>
|
||||
<key name="CopyClassDialog.RECENTS_KEY">
|
||||
<recent name="es.verdnatura.presentation.view.feature.delivery.activity" />
|
||||
|
@ -756,9 +782,10 @@
|
|||
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
|
||||
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
|
||||
<option name="MODE" value="default_activity" />
|
||||
<option name="RESTORE_ENABLED" value="false" />
|
||||
<option name="RESTORE_FILE" value="" />
|
||||
<option name="CLEAR_LOGCAT" value="false" />
|
||||
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
|
||||
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
|
||||
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
|
||||
|
@ -867,12 +894,22 @@
|
|||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Gradle.vn-warehouseManager [clean]" />
|
||||
<item itemvalue="Gradle.vn-warehouseManager" />
|
||||
<item itemvalue="Gradle.vn-warehouseManager [clean]" />
|
||||
<item itemvalue="Gradle.vn-warehouseManager" />
|
||||
<item itemvalue="Gradle.vn-warehouseManager [clean]" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<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">
|
||||
<configuration>C:\Users\sergiodt\AppData\Roaming\Subversion</configuration>
|
||||
</component>
|
||||
|
@ -1228,7 +1265,7 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1709725795643</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="338" />
|
||||
<option name="localTasksCounter" value="373" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.History.Properties">
|
||||
|
@ -1306,7 +1343,6 @@
|
|||
<entry key="MAIN">
|
||||
<value>
|
||||
<State>
|
||||
<option name="BEK_SORT_TYPE" value="1" />
|
||||
<option name="COLUMN_ID_WIDTH">
|
||||
<map>
|
||||
<entry key="Table.Default.Author.ColumnIdWidth" value="115" />
|
||||
|
@ -1322,8 +1358,21 @@
|
|||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="text">
|
||||
<value>
|
||||
<list>
|
||||
<option value="itemShelving" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
<option name="GRAPH_OPTIONS">
|
||||
<list>
|
||||
<option value="Base" />
|
||||
<option value="Standard" />
|
||||
</list>
|
||||
</option>
|
||||
</State>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -1356,24 +1405,6 @@
|
|||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<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 claimObservation refs #7541" />
|
||||
<MESSAGE value="feat reservas refs #6861" />
|
||||
|
@ -1381,32 +1412,50 @@
|
|||
<MESSAGE value="feat itemGetBalance refs #6769" />
|
||||
<MESSAGE value="feat: boxPickingPrepared refs #7855" />
|
||||
<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 name="XDebuggerManager">
|
||||
<breakpoint-manager>
|
||||
<breakpoints>
|
||||
<line-breakpoint enabled="true" type="kotlin-function">
|
||||
<url>file://$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixCallback.kt</url>
|
||||
<line>72</line>
|
||||
<properties class="es.verdnatura.domain.SalixCallback" method="onError">
|
||||
<line>76</line>
|
||||
<properties class="es.verdnatura.domain.SalixCallback" method="errorSalixMessage">
|
||||
<option name="WATCH_EXIT" value="false" />
|
||||
</properties>
|
||||
<option name="timeStamp" value="11" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="kotlin-line">
|
||||
<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" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="kotlin-line">
|
||||
<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" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="kotlin-line">
|
||||
<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" />
|
||||
</line-breakpoint>
|
||||
</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.
|
||||
# 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
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
|
|
@ -44,7 +44,6 @@ class MobileApplication : Application(), InteceptorListener {
|
|||
signListener = listener
|
||||
}
|
||||
|
||||
// lateinit var silex: VerdnaturaService
|
||||
lateinit var salix: SalixService
|
||||
var userId: Int? = null
|
||||
var userName: String? = null
|
||||
|
|
|
@ -178,7 +178,10 @@ class DataStoreLocal(var mobileApplication: MobileApplication) {
|
|||
editDataStoreKey(
|
||||
RESERVATIONMODE, operator.isOnReservationMode
|
||||
)
|
||||
|
||||
editDataStoreKey(
|
||||
ITEMPACKING,
|
||||
operator.itemPackingTypeFk
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun isPreferenceExists(key: String): Boolean {
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
package es.verdnatura.db
|
||||
|
||||
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.reflect.TypeToken
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||
|
@ -68,6 +77,9 @@ interface ExpedicionDao {
|
|||
|
||||
@Query("DELETE FROM expeditionPending WHERE code = :codeState")
|
||||
suspend fun getDeleteByState(codeState: String)
|
||||
|
||||
@Query("DELETE FROM expeditionPending")
|
||||
suspend fun getDeleteAllState()
|
||||
}
|
||||
|
||||
@Dao
|
||||
|
@ -102,7 +114,7 @@ interface RoutesDao {
|
|||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
suspend fun insertLoaded(routeLoaded: RouteLoaded)
|
||||
|
||||
@Query("DELETE FROM routes WHERE created != :today")
|
||||
@Query("DELETE FROM routes WHERE dated != :today")
|
||||
suspend fun deleteLoaded(today: String)
|
||||
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ object ConstAndValues {
|
|||
const val USER = "user"
|
||||
const val PASSWORD = "password"
|
||||
const val TOKEN = "token"
|
||||
const val TOKENMULTIMEDIA = "tokenMultimedia"
|
||||
const val TTL = "ttl"
|
||||
const val TOKENCREATED = "tokenCreated"
|
||||
const val SECTORDESCRIP = "sectordescrip"
|
||||
|
@ -44,6 +45,7 @@ object ConstAndValues {
|
|||
const val ENTRYOBSERVATIONORIGINAL = "ENTRYOBSERVATIONORIGINAL"
|
||||
const val ITEMPACKING = "itemPackingType"
|
||||
const val ITEMPACKINGFK = "itemPackingTypeFk"
|
||||
const val ITEMPACKINGTYPEFILTER = "itemPackingTypeFilter"
|
||||
const val BUYER = "buyernickname"
|
||||
const val BUYERID = "buyerid"
|
||||
const val WAGON = "wagon"
|
||||
|
|
|
@ -2,11 +2,16 @@ package es.verdnatura.domain
|
|||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.os.Build
|
||||
import android.text.Html
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.EditText
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import es.verdnatura.R
|
||||
import java.text.SimpleDateFormat
|
||||
import java.time.ZonedDateTime
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
@ -14,7 +19,15 @@ import java.util.Date
|
|||
import java.util.Locale
|
||||
|
||||
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)
|
||||
|
@ -33,6 +46,28 @@ fun Any.toast(
|
|||
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) {
|
||||
if (this != null) f(this)
|
||||
}
|
||||
|
@ -45,6 +80,7 @@ fun String.isParking(): Boolean {
|
|||
val regex = Regex("^[^ ]+-[^ ]+$")
|
||||
return this.length > 4 && regex.matches(this)
|
||||
}
|
||||
|
||||
fun String.isShelving(): Boolean {
|
||||
val regex = Regex("\\S{0,4}")
|
||||
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.ItemShelving
|
||||
import es.verdnatura.presentation.common.PackingSiteSalix
|
||||
import es.verdnatura.presentation.common.PickupResponse
|
||||
import es.verdnatura.presentation.common.SaleTrackingSalix
|
||||
import es.verdnatura.presentation.common.TicketState
|
||||
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.ItemProposal
|
||||
import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO
|
||||
import es.verdnatura.presentation.view.feature.calidad.model.Buyer
|
||||
import es.verdnatura.presentation.view.feature.calidad.model.BuyerVO
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
|
||||
import es.verdnatura.presentation.view.feature.collection.SalixSaleQuantity
|
||||
|
@ -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.ExpeditionInfoLog
|
||||
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.RouteInfo
|
||||
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.LoginDevice
|
||||
import es.verdnatura.presentation.view.feature.login.model.LoginSalixVO
|
||||
import es.verdnatura.presentation.view.feature.login.model.MultimediaTokenResponse
|
||||
import es.verdnatura.presentation.view.feature.login.model.NameWorker
|
||||
import es.verdnatura.presentation.view.feature.login.model.OperatorAdd
|
||||
import es.verdnatura.presentation.view.feature.login.model.OperatorSalix
|
||||
|
@ -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.ItemShelvingNewer
|
||||
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.ExpeditionMistakeSalix
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
|
||||
|
@ -140,11 +147,21 @@ interface SalixService {
|
|||
@Query("filter") filter: String
|
||||
): Call<List<AddressLoses>>
|
||||
|
||||
@POST("Applications/buy_getLastWithoutInventory/execute-func")
|
||||
fun buyGetLastWithoutInventory(
|
||||
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
||||
): Call<Long>
|
||||
|
||||
@GET("Buyers")
|
||||
fun getBuyers(
|
||||
@Query("filter") filter: String
|
||||
): Call<List<BuyerVO>>
|
||||
|
||||
@GET("itemTypes")
|
||||
fun getBuyersByItemPackingType(
|
||||
@Query("filter") filter: String
|
||||
): Call<List<Buyer>>
|
||||
|
||||
@GET("Tickets/myLastModified")
|
||||
fun myLastModified(
|
||||
@Query("filter") filter: String
|
||||
|
@ -181,10 +198,22 @@ interface SalixService {
|
|||
fun getRoutes(
|
||||
): 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(
|
||||
@Query("filter") filter: String
|
||||
): Call<NameWorker>
|
||||
): Call<List<NameWorker>>
|
||||
|
||||
@POST("Applications/{routine}/execute-proc")
|
||||
fun executeProc(
|
||||
|
@ -440,6 +469,12 @@ interface SalixService {
|
|||
@Query("barcode") barcode: Number, @Query("warehouseFk") warehouseFk: Int
|
||||
): 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")
|
||||
fun itemPlacementSupplyAiming(
|
||||
@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
|
||||
): Call<List<ItemShelvingNewer>>
|
||||
|
||||
@GET("ItemShelvings/getListItemNewer")
|
||||
fun getListItemNewerNew(
|
||||
@Query("shelvingFk") shelvingFkIn: Any,
|
||||
@Query("parking") parking: Any? = null,
|
||||
@Query("itemFk") itemFk: Any? = null
|
||||
): Call<List<ItemShelvingNewer>>
|
||||
|
||||
@GET("ItemShelvings/getItemsByReviewOrder")
|
||||
fun getItemsByReviewOrder(
|
||||
@Query("shelving") shelvingFkIn: Any,
|
||||
@Query("parking") parking: Any? = null,
|
||||
@Query("itemFk") itemFk: Any? = null
|
||||
): Call<List<ItemShelvingNewer>>
|
||||
|
||||
@POST("Applications/sectorCollectionSaleGroup_add/execute-proc")
|
||||
fun sectorCollectionSaleGroupAdd(
|
||||
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
||||
|
@ -515,10 +564,10 @@ interface SalixService {
|
|||
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
||||
): Call<Any>
|
||||
|
||||
@POST("Applications/machine_getWorkerPlate/execute-proc")
|
||||
fun machineGetWorkerPlate(
|
||||
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
||||
): Call<List<JsonObject>>
|
||||
/* @POST("Applications/machine_getWorkerPlate/execute-proc")
|
||||
fun machineGetWorkerPlate(
|
||||
@Query("params") params: Any? = null, @Query("schema") schema: String = "vn"
|
||||
): Call<List<JsonObject>>*/
|
||||
|
||||
@POST("Applications/sectorCollection_get/execute-proc")
|
||||
fun sectorCollectionGet(
|
||||
|
@ -540,9 +589,34 @@ interface SalixService {
|
|||
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
||||
): 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")
|
||||
fun sectorCollectionNew(
|
||||
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
||||
@Query("params") filter: Any, @Query("schema") schema: String = "vn"
|
||||
): Call<Any>
|
||||
|
||||
@POST("Applications/ticketStateToday_setState/execute-proc")
|
||||
|
@ -560,6 +634,11 @@ interface SalixService {
|
|||
@Query("filter") filter: Any, @Query("schema") schema: String = "vn"
|
||||
): 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")
|
||||
fun workerMachineryIsRegistered(
|
||||
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
||||
|
@ -643,18 +722,27 @@ interface SalixService {
|
|||
@Query("params") params: Any,
|
||||
): 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")
|
||||
fun itemShelvingListNew(
|
||||
@Query("schema") schema: String = "vn",
|
||||
@Query("params") params: Any,
|
||||
): 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")
|
||||
fun expeditionScan(
|
||||
@Query("schema") schema: String = "srt",
|
||||
|
@ -936,6 +1024,10 @@ interface SalixService {
|
|||
fun getAccessTokenConfigs(
|
||||
): Call<List<AccessConfigSalix>>
|
||||
|
||||
@GET("VnUsers/ShareToken")
|
||||
fun getMultimediaToken(
|
||||
): Call<MultimediaTokenResponse>
|
||||
|
||||
@POST("vnusers/renewToken")
|
||||
fun renewToken(
|
||||
): Call<RenewToken>
|
||||
|
@ -1031,6 +1123,11 @@ interface SalixService {
|
|||
@Query("filter") filter: String
|
||||
): Call<Any>
|
||||
|
||||
@GET("States/findOne")
|
||||
fun getStateId(
|
||||
@Query("filter") filter: String
|
||||
): Call<JsonObject>
|
||||
|
||||
@POST("WorkerMistakes")
|
||||
fun workerMistakesAdd(
|
||||
@Body workerMistake: WorkerMistakeSalix
|
||||
|
|
|
@ -1,12 +1,20 @@
|
|||
package es.verdnatura.domain.userCases
|
||||
|
||||
|
||||
import es.verdnatura.domain.SalixService
|
||||
import retrofit2.Call
|
||||
|
||||
|
||||
class GetItemFromBarcodeUseCase(private val salixService: SalixService) {
|
||||
fun execute(barcode: String): Call<Int?> {
|
||||
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.Priority
|
||||
import es.verdnatura.MobileApplication
|
||||
import timber.log.Timber.d
|
||||
import es.verdnatura.domain.toast
|
||||
|
||||
interface LocationUpdateCallback {
|
||||
fun onLocationReceived(location: LocationResult)
|
||||
|
@ -36,7 +36,7 @@ abstract class BaseActivity<T : ViewDataBinding> : AppCompatActivity() {
|
|||
var locationUpdateCallback: LocationUpdateCallback? = null
|
||||
|
||||
protected lateinit var binding: T
|
||||
private lateinit var fusedLocationClient:FusedLocationProviderClient
|
||||
private lateinit var fusedLocationClient: FusedLocationProviderClient
|
||||
private val locationRequest =
|
||||
com.google.android.gms.location.LocationRequest.Builder(
|
||||
Priority.PRIORITY_LOW_POWER,
|
||||
|
@ -50,8 +50,8 @@ abstract class BaseActivity<T : ViewDataBinding> : AppCompatActivity() {
|
|||
setContentView(getLayoutId())
|
||||
try {
|
||||
initDataBinding()
|
||||
}catch (ex:Exception){
|
||||
d(ex.message.toString())
|
||||
} catch (ex: Exception) {
|
||||
ex.message!!.toast(context = this)
|
||||
}
|
||||
mobileApplication = application as MobileApplication
|
||||
init()
|
||||
|
@ -62,7 +62,6 @@ abstract class BaseActivity<T : ViewDataBinding> : AppCompatActivity() {
|
|||
open fun addBindingVariables() {}
|
||||
abstract fun init()
|
||||
|
||||
|
||||
private fun initDataBinding() {
|
||||
binding = DataBindingUtil.setContentView(this, getLayoutId())
|
||||
binding.lifecycleOwner = this
|
||||
|
|
|
@ -69,10 +69,10 @@ abstract class BaseFragment<T : ViewDataBinding, V : BaseViewModel>(
|
|||
addBindingVariables()
|
||||
}
|
||||
|
||||
fun textScanned_filterDouble(textScanned: String): String {
|
||||
fun textScannedFilterDouble(textScanned: String): String {
|
||||
|
||||
if (textScanned.length > 13) {
|
||||
var size = textScanned.length
|
||||
val size = textScanned.length
|
||||
if (textScanned.substring((size / 2), size) == 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 {
|
||||
val manager: PackageManager = requireContext().packageManager
|
||||
val info: PackageInfo = manager.getPackageInfo(requireContext().packageName, 0)
|
||||
mobileApplication.versionName = info.versionName
|
||||
return info.versionName
|
||||
mobileApplication.versionName = info.versionName.toString()
|
||||
return mobileApplication.versionName
|
||||
}
|
||||
|
||||
fun getDevicePDA(): Int? {
|
||||
|
|
|
@ -7,9 +7,10 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
import es.verdnatura.databinding.ItemGeneralRowBinding
|
||||
|
||||
class GeneralAdapter(
|
||||
private val items: List<GeneralItem>,
|
||||
private val OnGeneralItemRowClickListener: OnGeneralItemRowClickListener,
|
||||
// private var showDelete: Boolean = false
|
||||
private var items: List<GeneralItem>,
|
||||
private val onDeleteItemRowClickListener: OnGeneralItemRowClickListener? = null,
|
||||
private var showDelete: Boolean = false,
|
||||
private val onRowClickListener: OnGeneralRowClickListener? = null
|
||||
) : RecyclerView.Adapter<GeneralAdapter.ItemHolder>() {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
|
||||
|
@ -23,10 +24,6 @@ class GeneralAdapter(
|
|||
override fun onBindViewHolder(holder: ItemHolder, position: Int) {
|
||||
holder.bind(items[position])
|
||||
|
||||
holder.binding.root.setOnClickListener {
|
||||
OnGeneralItemRowClickListener.onGeneralItemRowClickListener(items[position])
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
inner class ItemHolder(
|
||||
|
@ -36,11 +33,31 @@ class GeneralAdapter(
|
|||
fun bind(item: GeneralItem) {
|
||||
binding.apply {
|
||||
this.item = item
|
||||
/*if (showDelete) itemImage.visibility = View.VISIBLE
|
||||
else itemImage.visibility = View.GONE*/
|
||||
if (showDelete) itemImage.visibility = View.VISIBLE
|
||||
else itemImage.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 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.delivery.model.ClientTicketSalix
|
||||
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.Ticket
|
||||
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.SaleVO
|
||||
import es.verdnatura.presentation.view.feature.smarttag.model.SmartTag
|
||||
import es.verdnatura.presentation.view.feature.ubicador.model.ItemShelving
|
||||
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
|
||||
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
|
||||
|
@ -50,6 +52,10 @@ interface OnMistakeWorkerClickListener {
|
|||
fun onMistakeWorkerClickListener(item: WorkerFromMistake)
|
||||
}
|
||||
|
||||
interface OnSalarySupplementClickListener {
|
||||
fun onSalarySupplementClickListener(item: RouteComplement)
|
||||
}
|
||||
|
||||
interface HideBottomNavigation {
|
||||
fun hideBottomNavigation(entryPoint: String)
|
||||
}
|
||||
|
@ -102,6 +108,10 @@ interface OnGeneralItemRowClickListener {
|
|||
fun onGeneralItemRowClickListener(item: GeneralItem)
|
||||
}
|
||||
|
||||
interface OnGeneralRowClickListener {
|
||||
fun onRowClickListener(item: GeneralItem)
|
||||
}
|
||||
|
||||
interface OnImageTrashClickListener {
|
||||
fun onImageTrashClickListener(item: Any)
|
||||
}
|
||||
|
@ -158,6 +168,10 @@ interface OnVisibleClickListenerNew {
|
|||
fun onVisibleClickListener(item: ItemUbicador)
|
||||
}
|
||||
|
||||
interface OnVisibleClickListener6869 {
|
||||
fun onVisibleClickListener(item: ItemShelving)
|
||||
}
|
||||
|
||||
interface OnVisibleInventoryClickListener {
|
||||
fun onVisibleInventoryClickListener(item: ItemInventoryParking)
|
||||
}
|
||||
|
@ -170,6 +184,10 @@ interface OnMoreClickListenerNew {
|
|||
fun onMoreClickListener(item: ItemUbicador)
|
||||
}
|
||||
|
||||
interface OnMoreClickListener6869 {
|
||||
fun onMoreClickListener(item: ItemShelving)
|
||||
}
|
||||
|
||||
interface OnTruckClickListener {
|
||||
fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String)
|
||||
}
|
||||
|
@ -263,6 +281,10 @@ interface OnTicketClickListener {
|
|||
fun onTicketClickListener(sale: SaleVO)
|
||||
}
|
||||
|
||||
interface OnTicketColorListener {
|
||||
fun onTicketColorListener(sale: SaleVO)
|
||||
}
|
||||
|
||||
interface OnTicketClickSaleListener {
|
||||
fun onTicketClickListener(sale: Sale)
|
||||
}
|
||||
|
@ -271,6 +293,10 @@ interface OnSaleReserveClickListener {
|
|||
fun onSaleReserveListener(sale: Sale)
|
||||
}
|
||||
|
||||
interface OnAddItemClickListener {
|
||||
fun onAddItemClickListener(sale: Sale)
|
||||
}
|
||||
|
||||
interface OnBuyerSelectedListener {
|
||||
fun onBuyerSelected(userFk: String)
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@ import android.graphics.drawable.Drawable
|
|||
import android.media.AudioManager
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.text.InputType
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
@ -27,6 +29,10 @@ import com.bumptech.glide.request.transition.Transition
|
|||
import java.text.DecimalFormat
|
||||
import java.text.ParseException
|
||||
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.Locale
|
||||
|
||||
|
@ -153,8 +159,12 @@ fun Activity.showKeyboardIn() {
|
|||
}
|
||||
|
||||
fun Context.hideKeyboard(view: View) {
|
||||
val inputMethodManager = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
val inputMethodManager =
|
||||
getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
|
||||
}, 100L)
|
||||
|
||||
}
|
||||
|
||||
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) {
|
||||
getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(flags.toLong()))
|
||||
} else {
|
||||
getPackageInfo(packageName, flags)
|
||||
getPackageInfo(packageName, flags)
|
||||
}
|
||||
|
||||
fun convertToDateString(date: String?): String? {
|
||||
|
@ -221,8 +231,18 @@ fun convertToDateString(date: String?): String? {
|
|||
if (date.isNullOrEmpty()) {
|
||||
return date
|
||||
}
|
||||
val formatoEntrada = 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 formatoEntrada =
|
||||
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
|
||||
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.databinding.ComponentCustomListDialogBinding
|
||||
|
||||
//import kotlinx.android.synthetic.main.component_custom_list_dialog.*
|
||||
|
||||
|
||||
class CustomDialogList(context: Context) : Dialog(context, R.style.DialogTheme) {
|
||||
|
||||
|
||||
private var binding: ComponentCustomListDialogBinding =
|
||||
ComponentCustomListDialogBinding.inflate(layoutInflater)
|
||||
|
||||
init {
|
||||
|
||||
setContentView(binding.root)
|
||||
getEditText().requestFocus()
|
||||
//setContentView(R.layout.component_custom_list_dialog)
|
||||
}
|
||||
|
||||
fun getRecyclerView(): RecyclerView {
|
||||
|
||||
return binding.itemRecyclerview
|
||||
//return item_recyclerview
|
||||
}
|
||||
|
||||
fun getEditText(): TextInputEditText {
|
||||
return binding.customDialogValue
|
||||
//return custom_dialog_value
|
||||
}
|
||||
|
||||
fun getEditTextTwo(): TextInputEditText {
|
||||
return binding.customDialogValueTwo
|
||||
//return custom_dialog_value_two
|
||||
}
|
||||
|
||||
fun getEditTextThree(): TextInputEditText {
|
||||
return binding.customDialogValueThree
|
||||
}
|
||||
|
||||
fun getValue(): String {
|
||||
return binding.customDialogValue.text.toString()
|
||||
//return custom_dialog_value.text.toString()
|
||||
}
|
||||
|
||||
fun getValueOptional(): String {
|
||||
return binding.customDialogValueThree.text.toString()
|
||||
}
|
||||
|
||||
fun setValue(value: String): CustomDialogList {
|
||||
binding.customDialogValue.setText(value)
|
||||
binding.textinputlayoutUsername.visibility = View.VISIBLE
|
||||
|
||||
/*custom_dialog_value.setText(value)
|
||||
textinputlayout_username.visibility = View.VISIBLE*/
|
||||
return this
|
||||
}
|
||||
|
||||
|
@ -61,96 +55,97 @@ class CustomDialogList(context: Context) : Dialog(context, R.style.DialogTheme)
|
|||
|
||||
fun getValueTwo(): String {
|
||||
return binding.customDialogValueTwo.text.toString()
|
||||
//return custom_dialog_value_two.text.toString()
|
||||
}
|
||||
|
||||
fun setValueTwo(value: String): CustomDialogList {
|
||||
binding.customDialogValueTwo.setText(value)
|
||||
binding.textinputlayoutTwo.visibility = View.VISIBLE
|
||||
|
||||
/* custom_dialog_value_two.setText(value)
|
||||
textinputlayout_two.visibility = View.VISIBLE*/
|
||||
return this
|
||||
}
|
||||
|
||||
fun setTitle(title: String): CustomDialogList {
|
||||
binding.customDialogTitle.visibility = View.VISIBLE
|
||||
binding.customDialogTitle.text = title
|
||||
/* custom_dialog_title.visibility = View.VISIBLE
|
||||
custom_dialog_title.text = title*/
|
||||
return this
|
||||
}
|
||||
|
||||
fun setDescription(title: String): CustomDialogList {
|
||||
binding.customDialogDescription.visibility = View.VISIBLE
|
||||
binding.customDialogDescription.text = title
|
||||
|
||||
/*custom_dialog_description.visibility = View.VISIBLE
|
||||
custom_dialog_description.text = title*/
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogList {
|
||||
|
||||
binding.customDialogButtonOk.visibility = View.VISIBLE
|
||||
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() }
|
||||
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.text = text
|
||||
/*custom_dialog_button_ko.visibility = View.VISIBLE
|
||||
custom_dialog_button_ko.text = text*/
|
||||
binding.customDialogButtonKo.setOnClickListener {
|
||||
onButtonClicked()
|
||||
dismiss()
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
fun setHintValue(text: String): CustomDialogList {
|
||||
|
||||
binding.customDialogValue.hint = text
|
||||
// custom_dialog_value.hint = text
|
||||
return this
|
||||
}
|
||||
|
||||
fun setHintValueTwo(text: String): CustomDialogList {
|
||||
binding.customDialogValueTwo.hint = text
|
||||
//custom_dialog_value_two.hint = text
|
||||
return this
|
||||
}
|
||||
|
||||
fun setTextTwoGone(): CustomDialogList {
|
||||
binding.textinputlayoutTwo.visibility = View.GONE
|
||||
//textinputlayout_two.visibility = View.GONE
|
||||
fun setHintValueThree(text: String): CustomDialogList {
|
||||
binding.customDialogValueThree.hint = text
|
||||
return this
|
||||
}
|
||||
|
||||
fun setTextTwoVisibility(visibility: Int): CustomDialogList {
|
||||
binding.textinputlayoutTwo.visibility = visibility
|
||||
return this
|
||||
}
|
||||
|
||||
fun setTextThree(visibility: Int): CustomDialogList {
|
||||
binding.textinputlayoutThree.visibility = visibility
|
||||
return this
|
||||
}
|
||||
|
||||
fun hideDialog(): CustomDialogList {
|
||||
binding.customDialogValue.visibility = View.GONE
|
||||
//custom_dialog_value.visibility = View.GONE
|
||||
return this
|
||||
}
|
||||
|
||||
fun showDialog(): CustomDialogList {
|
||||
binding.customDialogValue.visibility = View.VISIBLE
|
||||
return this
|
||||
}
|
||||
|
||||
fun hideDescription(): CustomDialogList {
|
||||
binding.customDialogDescription.visibility = View.GONE
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
fun hideTextInput(visibility:Int = View.INVISIBLE): CustomDialogList {
|
||||
fun hideTextInput(visibility: Int = View.INVISIBLE): CustomDialogList {
|
||||
binding.textinputlayoutUsername.visibility = visibility
|
||||
|
||||
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.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 {
|
||||
|
||||
|
@ -18,53 +18,52 @@ class CustomDialogThreeButtons (context: Context) : Dialog(context, R.style.Dial
|
|||
//setContentView(R.layout.component_custom_three_dialog)
|
||||
}
|
||||
|
||||
|
||||
fun setTitle(title: String): CustomDialogThreeButtons {
|
||||
|
||||
binding.customDialogTitle.visibility= View.VISIBLE
|
||||
binding.customDialogTitle.text=title
|
||||
/* custom_dialog_title.visibility = View.VISIBLE
|
||||
custom_dialog_title.text = title*/
|
||||
binding.customDialogTitle.visibility = View.VISIBLE
|
||||
binding.customDialogTitle.text = title
|
||||
/* custom_dialog_title.visibility = View.VISIBLE
|
||||
custom_dialog_title.text = title*/
|
||||
return this
|
||||
}
|
||||
|
||||
fun setDescription(description: String): CustomDialogThreeButtons {
|
||||
binding.customDialogDescription.visibility= View.VISIBLE
|
||||
binding.customDialogDescription.text=description
|
||||
binding.customDialogDescription.visibility = View.VISIBLE
|
||||
binding.customDialogDescription.text = description
|
||||
|
||||
/* custom_dialog_description.visibility = View.VISIBLE
|
||||
custom_dialog_description.text = description*/
|
||||
/* custom_dialog_description.visibility = View.VISIBLE
|
||||
custom_dialog_description.text = description*/
|
||||
return this
|
||||
}
|
||||
|
||||
fun setOkButton(text: String, onButtonClicked: () -> Unit): CustomDialogThreeButtons {
|
||||
|
||||
binding.customDialogButtonOk.visibility = View.VISIBLE
|
||||
binding.customDialogButtonOk.text =text
|
||||
binding.customDialogButtonOk.text = text
|
||||
binding.customDialogButtonOk.setOnClickListener { onButtonClicked() }
|
||||
|
||||
/* custom_dialog_button_ok.visibility = View.VISIBLE
|
||||
custom_dialog_button_ok.text = text
|
||||
custom_dialog_button_ok.setOnClickListener { onButtonClicked() }*/
|
||||
/* custom_dialog_button_ok.visibility = View.VISIBLE
|
||||
custom_dialog_button_ok.text = text
|
||||
custom_dialog_button_ok.setOnClickListener { onButtonClicked() }*/
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
fun getValue() : String {
|
||||
fun getValue(): String {
|
||||
return binding.customDialogValue.text.toString()
|
||||
//return custom_dialog_value.text.toString()
|
||||
}
|
||||
|
||||
fun getEditText() : TextInputEditText {
|
||||
fun getEditText(): TextInputEditText {
|
||||
return binding.customDialogValue
|
||||
//return custom_dialog_value
|
||||
}
|
||||
fun setValue(value : String): CustomDialogThreeButtons{
|
||||
|
||||
fun setValue(value: String): CustomDialogThreeButtons {
|
||||
|
||||
binding.customDialogValue.setText(value)
|
||||
binding.textinputlayout.visibility = View.VISIBLE
|
||||
/* custom_dialog_value.setText(value)
|
||||
textinputlayout.visibility = View.VISIBLE*/
|
||||
/* custom_dialog_value.setText(value)
|
||||
textinputlayout.visibility = View.VISIBLE*/
|
||||
return this
|
||||
}
|
||||
|
||||
|
@ -117,10 +116,15 @@ class CustomDialogThreeButtons (context: Context) : Dialog(context, R.style.Dial
|
|||
return this
|
||||
}
|
||||
|
||||
fun setCustomDialogValue(visibility:Int){
|
||||
binding.customDialogValue.visibility=visibility
|
||||
fun setCustomDialogValue(visibility: Int) {
|
||||
binding.customDialogValue.visibility = visibility
|
||||
}
|
||||
fun setFocusDialogValue(){
|
||||
|
||||
fun setFocusDialogValue() {
|
||||
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.OnOptionsSelectedListener
|
||||
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.feature.ajustes.adapter.SettingsAdapter
|
||||
import es.verdnatura.presentation.view.feature.ajustes.model.AjustesItemVO
|
||||
|
@ -75,51 +77,97 @@ class AjustesFragment :
|
|||
binding.mainToolbar.toolbarTitle.text = getString(R.string.settings)
|
||||
hideBackButton(binding.mainToolbar)
|
||||
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)
|
||||
setToolBar()
|
||||
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() {
|
||||
|
||||
val listIcons: ArrayList<ImageView> = ArrayList()
|
||||
val iconInfo = ImageView(context)
|
||||
iconInfo.setImageResource(R.drawable.ic_info_delivery)
|
||||
val iconLogout = ImageView(context)
|
||||
iconLogout.setImageResource(R.drawable.ic_logout)
|
||||
|
||||
listIcons.add(iconInfo)
|
||||
listIcons.add(iconLogout)
|
||||
binding.mainToolbar.toolbarIcons.adapter =
|
||||
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
|
||||
override fun onOptionsItemSelected(item: Drawable) {
|
||||
|
||||
customDialog.setTitle(getString(R.string.info))
|
||||
.setDescription(
|
||||
getString(R.string.version) + ":\t" +
|
||||
requireActivity().packageManager.getPackageInfo(
|
||||
requireActivity().packageName, 0
|
||||
).versionName!! + "(${getVersionCode()})" + "\n" +
|
||||
getString(R.string.user) + ":\t" +
|
||||
mobileApplication.userName + "\n" +
|
||||
getString(R.string.androidid) + ":\t" +
|
||||
mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
ANDROID_ID
|
||||
) + "\n" +
|
||||
if (!mobileApplication.serialNumber.isNullOrBlank()) {
|
||||
getString(R.string.serialNumber) + "\t" +
|
||||
mobileApplication.serialNumber
|
||||
} else ""
|
||||
when (item) {
|
||||
iconInfo.drawable -> {
|
||||
customDialog.setTitle(getString(R.string.info))
|
||||
.setDescription(
|
||||
getString(R.string.version) + ":\t" +
|
||||
requireActivity().packageManager.getPackageInfo(
|
||||
requireActivity().packageName, 0
|
||||
).versionName!! + "(${getVersionCode()})" + "\n" +
|
||||
getString(R.string.user) + ":\t" +
|
||||
mobileApplication.userName + "\n" +
|
||||
getString(R.string.androidid) + ":\t" +
|
||||
mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
ANDROID_ID
|
||||
) + "\n" +
|
||||
if (!mobileApplication.serialNumber.isNullOrBlank()) {
|
||||
getString(R.string.serialNumber) + "\t" +
|
||||
mobileApplication.serialNumber
|
||||
} else ""
|
||||
|
||||
)
|
||||
.setOkButton(getString(R.string.Close)) {
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
)
|
||||
.setOkButton(getString(R.string.Close)) {
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
}
|
||||
|
||||
iconLogout.drawable -> {
|
||||
ma.onMyBackPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
binding.mainToolbar.toolbarIcons.layoutManager =
|
||||
|
@ -177,6 +225,23 @@ class AjustesFragment :
|
|||
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 -> {}
|
||||
}
|
||||
|
||||
|
@ -206,11 +271,13 @@ class AjustesFragment :
|
|||
}
|
||||
// modificar
|
||||
listSectores.sort()
|
||||
val array = arrayOfNulls<String>(listSectores.size)
|
||||
sectorListVO = it.list
|
||||
showDialogForAll(
|
||||
listSectores.toArray(array), getString(R.string.selectSector)
|
||||
)
|
||||
setSearchable(sectorListVO.map {
|
||||
NameWithId(
|
||||
id = it.id,
|
||||
name = it.description
|
||||
)
|
||||
} as MutableList<NameWithId>)
|
||||
|
||||
} else {
|
||||
customDialog.setTitle(getString(R.string.sectors))
|
||||
|
@ -297,16 +364,6 @@ class AjustesFragment :
|
|||
private fun getUserData() {
|
||||
|
||||
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()
|
||||
loginViewModel.handleUserResponse.observe(this@AjustesFragment) { iti ->
|
||||
runBlocking { mobileApplication.dataStoreApp.saveWorkerData(iti) }
|
||||
|
|
|
@ -100,14 +100,17 @@ class AjustesViewModel(val context: Context) : BaseViewModel(context) {
|
|||
action = false
|
||||
)
|
||||
)
|
||||
/*Tarea 5443
|
||||
_settingsItem.add(
|
||||
AjustesItemVO(
|
||||
"Bajar línea al revisar",
|
||||
holdPosition = holdPosition,
|
||||
action = true
|
||||
)
|
||||
)*/
|
||||
//Tarea 5443
|
||||
_settingsItem.add(
|
||||
AjustesItemVO(
|
||||
context.getString(R.string.holdpositionAuto),
|
||||
holdPosition = holdPosition,
|
||||
selected = if (holdPosition) context.getString(R.string.yes) else context.getString(
|
||||
R.string.no
|
||||
),
|
||||
action = true
|
||||
)
|
||||
)
|
||||
|
||||
_settingsItem.add(
|
||||
AjustesItemVO(
|
||||
|
@ -124,11 +127,11 @@ class AjustesViewModel(val context: Context) : BaseViewModel(context) {
|
|||
context.getString(R.string.runActivityStop), action = true
|
||||
)
|
||||
)
|
||||
_settingsItem.add(
|
||||
AjustesItemVO(
|
||||
context.getString(R.string.closeSession), action = true
|
||||
)
|
||||
)
|
||||
/* _settingsItem.add(
|
||||
AjustesItemVO(
|
||||
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.graphics.drawable.Drawable
|
||||
import android.text.InputType
|
||||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.view.View.GONE
|
||||
import android.view.inputmethod.EditorInfo
|
||||
|
@ -11,6 +12,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
|||
import com.google.gson.Gson
|
||||
import es.verdnatura.R
|
||||
import es.verdnatura.databinding.FragmentItemCardBinding
|
||||
import es.verdnatura.domain.ConstAndValues.PRINTERFK
|
||||
import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
|
||||
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
|
||||
import es.verdnatura.domain.notNull
|
||||
import es.verdnatura.domain.toast
|
||||
|
@ -19,7 +22,9 @@ import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
|||
import es.verdnatura.presentation.common.OnClickDynamic
|
||||
import es.verdnatura.presentation.common.OnItemCardRowClickListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
import es.verdnatura.presentation.common.PrinterDialogManager
|
||||
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||
import es.verdnatura.presentation.common.hideKeyboard
|
||||
import es.verdnatura.presentation.common.itemScanValue
|
||||
import es.verdnatura.presentation.common.loadUrl
|
||||
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.ItemPackingType
|
||||
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||
import org.json.JSONObject
|
||||
|
||||
class ItemCardFragment(
|
||||
var itemFk: String = ""
|
||||
|
@ -53,6 +59,8 @@ class ItemCardFragment(
|
|||
private var quantityToDiscard = 0
|
||||
private var itemInfoG: ItemCardVO? = null
|
||||
private var positionToReturnY = 0
|
||||
private var originalScan: Long? = null
|
||||
private var buyToPrint: Long? = null
|
||||
|
||||
companion object {
|
||||
fun newInstance(entryPoint: String) = ItemCardFragment(entryPoint)
|
||||
|
@ -95,16 +103,20 @@ class ItemCardFragment(
|
|||
iconHistory.setImageResource(R.drawable.ic_history_black_24dp)
|
||||
val iconSalix = ImageView(context)
|
||||
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)
|
||||
iconHistory.tooltipText = getTooltip(R.drawable.ic_history_black_24dp)
|
||||
iconSalix.tooltipText = getTooltip(R.drawable.ic_logo_salix)
|
||||
// Tarea 7266
|
||||
iconPrint.tooltipText = getTooltip(R.drawable.ic_print_black_24dp)
|
||||
|
||||
listIcons.add(iconSalix)
|
||||
listIcons.add(iconReload)
|
||||
listIcons.add(iconHistory)
|
||||
|
||||
listIcons.add(iconPrint)
|
||||
|
||||
binding.mainToolbar.toolbarIcons.adapter =
|
||||
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
|
||||
|
@ -112,6 +124,25 @@ class ItemCardFragment(
|
|||
override fun onOptionsItemSelected(item: Drawable) {
|
||||
|
||||
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 -> {
|
||||
getItemCard(itemInfoG!!.id.toString())
|
||||
}
|
||||
|
@ -152,20 +183,77 @@ class ItemCardFragment(
|
|||
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.setOnEditorActionListener { _, actionId, _ ->
|
||||
if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
|
||||
if (binding.editItemFk.text.toString().isNotEmpty()) try {
|
||||
getItemCard(
|
||||
itemScanValue(
|
||||
if (binding.editItemFk.text.toString().isNotEmpty())
|
||||
try {
|
||||
originalScan = itemScanValue(
|
||||
binding.editItemFk.text.toString(), arrayOf("buy"), "more"
|
||||
).toString()
|
||||
)
|
||||
} catch (ex: Exception) {
|
||||
ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true)
|
||||
}
|
||||
).toString().toLong()
|
||||
getItemCard(
|
||||
originalScan!!.toString()
|
||||
)
|
||||
} catch (ex: Exception) {
|
||||
ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true)
|
||||
}
|
||||
|
||||
binding.editItemFk.setText("")
|
||||
ma.hideKeyboard(binding.editItemFk)
|
||||
|
@ -196,7 +284,6 @@ class ItemCardFragment(
|
|||
|
||||
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) as Int
|
||||
itemFk = itemValueFk
|
||||
|
||||
viewModel.getItemCard(itemFk.toLong(), warehouseFk!!)
|
||||
|
||||
}
|
||||
|
@ -210,6 +297,17 @@ class ItemCardFragment(
|
|||
binding.itemcardLayout.visibility = View.VISIBLE
|
||||
setItemCard(it)
|
||||
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 {
|
||||
binding.itemcardLayout.visibility = GONE
|
||||
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.formatWithQuotes
|
||||
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
|
||||
import es.verdnatura.domain.userCases.GetItemPrintItemUseCase
|
||||
import es.verdnatura.presentation.base.BaseViewModel
|
||||
import es.verdnatura.presentation.common.Event
|
||||
import es.verdnatura.presentation.common.ItemBarCodeSalix
|
||||
|
@ -25,6 +26,7 @@ import java.io.File
|
|||
class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
|
||||
|
||||
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
||||
private val printItemUseCase = GetItemPrintItemUseCase(salix)
|
||||
|
||||
private val _itemCard by lazy { MutableLiveData<ItemCardVO>() }
|
||||
val itemCard: LiveData<ItemCardVO>
|
||||
|
@ -48,6 +50,10 @@ class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
|
|||
val loadAddressLosesList: LiveData<Event<AddressLosesList>> =
|
||||
_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(
|
||||
itemFk: Number,
|
||||
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(
|
||||
itemFk: 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 stems: String? = null,
|
||||
var itemCost: String? = null,
|
||||
var category:String? = null,
|
||||
var category: String? = null,
|
||||
var producer: String? = null,
|
||||
var origin: String? = null,
|
||||
var reserva: Int? = null,
|
||||
|
@ -46,13 +46,20 @@ class ItemCardRowVO(
|
|||
class BarcodeVO(
|
||||
var code: String?
|
||||
)
|
||||
|
||||
data class ItemDetails(
|
||||
var itemFk: Int? = null,
|
||||
var vShelvingFK: String = "",
|
||||
var itemCost: Double = 0.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 {
|
||||
getLocations(
|
||||
itemScanValue(
|
||||
binding.editItemFk.text.toString(), arrayOf("buy"), "more"
|
||||
binding.editItemFk.text.toString(), arrayOf("buy"), "more"
|
||||
)
|
||||
)
|
||||
} catch (ex: Exception) {
|
||||
|
|
|
@ -27,3 +27,21 @@ class ItemBuyerVO(
|
|||
class ItemBuyerListVO(
|
||||
var list: List<ItemBuyerVO> = listOf()
|
||||
)
|
||||
|
||||
data class BuyerList(
|
||||
var list: List<Buyer> = listOf()
|
||||
)
|
||||
|
||||
data class Buyer(
|
||||
val itemPackingTypeFk: String,
|
||||
val worker: Worker
|
||||
)
|
||||
|
||||
data class Worker(
|
||||
val user: User
|
||||
)
|
||||
|
||||
data class User(
|
||||
val id: Int,
|
||||
val nickname: String
|
||||
)
|
|
@ -6,6 +6,8 @@ import android.graphics.Color
|
|||
import android.graphics.drawable.Drawable
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.View.GONE
|
||||
import android.view.View.VISIBLE
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.ContextCompat.getColor
|
||||
import androidx.core.graphics.drawable.DrawableCompat
|
||||
|
@ -13,6 +15,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
|||
import androidx.recyclerview.widget.RecyclerView
|
||||
import es.verdnatura.R
|
||||
import es.verdnatura.databinding.ItemArticleRowFragmentBinding
|
||||
import es.verdnatura.domain.ConstAndValues.CONTROLADOR
|
||||
import es.verdnatura.domain.ConstAndValues.SACADOR
|
||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||
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.OnSaleClickListener
|
||||
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.sacador.model.SaleVO
|
||||
|
||||
class SaleAdapter(
|
||||
private val items: List<SaleVO>,
|
||||
private var items: MutableList<SaleVO>,
|
||||
private val onPasillerosItemClickListener: OnPasillerosItemClickListener,
|
||||
private val onQuantityClick: OnQuantityClickListener,
|
||||
private val onSaleClickListener: OnSaleClickListener,
|
||||
|
@ -33,8 +37,9 @@ class SaleAdapter(
|
|||
private var onTicketClick: OnTicketClickListener? = null,
|
||||
private var SaleAdapter: SaleAdapter? = null,
|
||||
private var type: String? = null,
|
||||
private var onTicketColorClickListener: OnTicketColorListener? = null
|
||||
|
||||
) : RecyclerView.Adapter<SaleAdapter.AjustesItemHolder>() {
|
||||
) : RecyclerView.Adapter<SaleAdapter.AjustesItemHolder>() {
|
||||
var context: Context? = null
|
||||
var position: Int = 0
|
||||
|
||||
|
@ -396,8 +401,32 @@ class SaleAdapter(
|
|||
} else {
|
||||
View.GONE
|
||||
}*/
|
||||
|
||||
println("sale ${sale.parkingCode} : ${sale.isAdvanced}")
|
||||
//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
|
||||
|
||||
}
|
||||
|
@ -468,4 +497,14 @@ class SaleAdapter(
|
|||
// 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.View
|
||||
import android.view.View.GONE
|
||||
import android.view.View.INVISIBLE
|
||||
import android.view.View.VISIBLE
|
||||
import android.view.ViewGroup
|
||||
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.SACADOR
|
||||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.common.OnAddItemClickListener
|
||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||
import es.verdnatura.presentation.common.OnPackingClickSaleListener
|
||||
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||
|
@ -38,6 +38,7 @@ class SaleAdapterNew(
|
|||
private var onTicketClick: OnTicketClickSaleListener? = null,
|
||||
private var saleAdapter: SaleAdapterNew? = null,
|
||||
private var onReserveSaleClick: OnSaleReserveClickListener? = null,
|
||||
private var onAddItemClickListener: OnAddItemClickListener? = null,
|
||||
private var type: String? = null,
|
||||
|
||||
) : RecyclerView.Adapter<SaleAdapterNew.AjustesItemHolder>() {
|
||||
|
@ -70,7 +71,6 @@ class SaleAdapterNew(
|
|||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
fun bind(sale: Sale) {
|
||||
binding.apply {
|
||||
// if (sale.reservedQuantity == null) sale.reservedQuantity = 0
|
||||
|
||||
val childLayoutManager =
|
||||
LinearLayoutManager(context!!, RecyclerView.HORIZONTAL, false)
|
||||
|
@ -148,12 +148,15 @@ class SaleAdapterNew(
|
|||
layoutError.visibility = VISIBLE
|
||||
txtError.text =
|
||||
binding.root.context.getString(R.string.originalQuantity) + sale.originalQuantity
|
||||
binding.addItem.visibility = VISIBLE
|
||||
|
||||
} else {
|
||||
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) {
|
||||
layoutError.visibility = VISIBLE
|
||||
|
@ -183,16 +186,7 @@ class SaleAdapterNew(
|
|||
View.GONE
|
||||
}
|
||||
|
||||
if (sale.isParent) {/* itemArticleItemFk.visibility = View.INVISIBLE
|
||||
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*/
|
||||
if (sale.isParent) {
|
||||
packingTopicker.visibility = View.INVISIBLE
|
||||
quantityReserved.visibility = View.INVISIBLE
|
||||
itemArticleItemFkNew.visibility = View.INVISIBLE
|
||||
|
@ -200,16 +194,7 @@ class SaleAdapterNew(
|
|||
imageErrorMessage.visibility = View.INVISIBLE
|
||||
ivArrow.visibility = View.VISIBLE
|
||||
|
||||
} else {/*itemArticleItemFk.visibility = View.VISIBLE
|
||||
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*/
|
||||
} else {
|
||||
|
||||
imageErrorMessage.visibility = View.GONE
|
||||
if (type != SACADOR && type != PREITEMPICKERTEST) {
|
||||
|
@ -326,9 +311,22 @@ class SaleAdapterNew(
|
|||
if (sale.isPicked == 1) {
|
||||
if (type == PREPARED) {
|
||||
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 {
|
||||
contentLayout.setBackgroundColor(
|
||||
|
@ -347,9 +345,12 @@ class SaleAdapterNew(
|
|||
}
|
||||
|
||||
binding.itemParkingCode.text =
|
||||
// if (type == PREITEMPICKERTEST) sale.parkingCodePrevia else sale.parkingCode
|
||||
sale.parkingCodePrevia
|
||||
// if (type == PREPARED) sale.parkingCodePrevia else sale.parkingCode
|
||||
sale.parkingCode ?: sale.parkingCodePrevia
|
||||
|
||||
binding.addItem.setOnClickListener {
|
||||
onAddItemClickListener!!.onAddItemClickListener(sale)
|
||||
}
|
||||
|
||||
println("parkingCodePrevia ${sale.parkingCodePrevia}")
|
||||
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
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.media.MediaPlayer
|
||||
|
@ -37,6 +36,7 @@ import es.verdnatura.domain.notNull
|
|||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
import es.verdnatura.presentation.common.ItemScanned
|
||||
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
|
@ -410,7 +410,7 @@ class CollectionFragment(
|
|||
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
||||
binding.mainToolbar.toolbarIcons.visibility = VISIBLE
|
||||
//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
|
||||
isScanned =
|
||||
|
@ -969,7 +969,7 @@ class CollectionFragment(
|
|||
myGroupList
|
||||
},*/
|
||||
saleAdapter = SaleAdapter(
|
||||
myGroupList,
|
||||
myGroupList as MutableList,
|
||||
pasillerosItemClickListener!!,
|
||||
object : OnQuantityClickListener {
|
||||
|
||||
|
@ -2035,7 +2035,7 @@ class CollectionFragment(
|
|||
"" + totalMark + "/" + total
|
||||
|
||||
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()
|
||||
|
||||
if (canChangeState) changeTicketState()
|
||||
|
@ -2276,20 +2276,20 @@ class CollectionFragment(
|
|||
}
|
||||
}
|
||||
if (isTicket) {
|
||||
val builder = AlertDialog.Builder(context)
|
||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
||||
builder.setItems(labelCount) { dialog, which ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
||||
)
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||
labelDialogHelper.showLabelDialog(
|
||||
onItemSelected = { labelCount ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk,
|
||||
labelCount = labelCount
|
||||
)
|
||||
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
}
|
||||
)
|
||||
|
||||
}
|
||||
val dialog = builder.create()
|
||||
dialog.show()
|
||||
} else {
|
||||
viewModel.collectionStickerPrint(
|
||||
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
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.media.MediaPlayer
|
||||
|
@ -38,6 +37,7 @@ import es.verdnatura.domain.notNull
|
|||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
import es.verdnatura.presentation.common.ItemScanned
|
||||
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||
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.OnSaleClickListener
|
||||
import es.verdnatura.presentation.common.OnTicketClickListener
|
||||
import es.verdnatura.presentation.common.OnTicketColorListener
|
||||
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||
import es.verdnatura.presentation.common.hideKeyboard
|
||||
import es.verdnatura.presentation.common.itemScanIsQr
|
||||
|
@ -126,11 +127,14 @@ class CollectionFragmentPicker(
|
|||
private var recylerViewState: Parcelable? = null
|
||||
private var isScanned: Boolean? = null
|
||||
private var myPosition: Int = 0
|
||||
private var changePosition = false
|
||||
|
||||
private lateinit var myGroupList: List<SaleVO>
|
||||
private var canChangeState = true
|
||||
private var isVerifiedCollection = false
|
||||
|
||||
private var hasFilterByLevel = false
|
||||
|
||||
companion object {
|
||||
fun newInstance(collection: CollectionVO, type: String) =
|
||||
CollectionFragmentPicker(collection, type)
|
||||
|
@ -293,7 +297,6 @@ class CollectionFragmentPicker(
|
|||
SACADOR -> {
|
||||
//jose antonio
|
||||
myPosition = myGroupList.indexOfFirst { it.saleGroupFk == saleGroupScanned }
|
||||
println("previa $saleGroupScanned posicion $myPosition")
|
||||
viewModel.saleTrackingAddPreparedSaleGroup(
|
||||
saleGroupScanned.toInt()
|
||||
)
|
||||
|
@ -377,7 +380,7 @@ class CollectionFragmentPicker(
|
|||
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
||||
|
||||
//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
|
||||
isScanned =
|
||||
|
@ -841,7 +844,7 @@ class CollectionFragmentPicker(
|
|||
} else {
|
||||
// pintar línea
|
||||
saleAdapter!!.notifyDataSetChanged()
|
||||
myPosition = storedPosition
|
||||
myPosition = storedBackPosition
|
||||
|
||||
ReviewQuantityForRefreshingAndSorting(
|
||||
sales[storedPosition].quantity!!.toInt(),
|
||||
|
@ -926,7 +929,7 @@ class CollectionFragmentPicker(
|
|||
}
|
||||
|
||||
saleAdapter = SaleAdapter(
|
||||
myGroupList,
|
||||
myGroupList as MutableList,
|
||||
pasillerosItemClickListener!!,
|
||||
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)
|
||||
|
||||
|
||||
binding.fragmentSacadorCollections.adapter = saleAdapter
|
||||
|
||||
binding.fragmentSacadorCollections.layoutManager = lm
|
||||
setTotalLines()
|
||||
//Tarea #4628
|
||||
|
@ -1111,6 +1122,7 @@ class CollectionFragmentPicker(
|
|||
RecyclerView.OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
storedBackPosition = lm.findFirstVisibleItemPosition()
|
||||
myPosition = lm.findFirstVisibleItemPosition()
|
||||
super.onScrolled(recyclerView, dx, dy)
|
||||
}
|
||||
})
|
||||
|
@ -1368,7 +1380,7 @@ class CollectionFragmentPicker(
|
|||
}
|
||||
|
||||
//nuevo
|
||||
var mySale = sales[position].saleFk
|
||||
val mySale = sales[position].saleFk
|
||||
for (indice in myGroupList.indices) {
|
||||
|
||||
if (!myGroupList[indice].isParent && myGroupList[indice].saleFk == mySale) {
|
||||
|
@ -1533,11 +1545,11 @@ class CollectionFragmentPicker(
|
|||
|
||||
if (!myGroupList[indice].isParent && myGroupList[indice].saleFk == mySale) {
|
||||
storedBackPosition = indice
|
||||
myPosition = storedBackPosition
|
||||
|
||||
}
|
||||
}
|
||||
storedBackPosition = position
|
||||
myPosition = position
|
||||
setListPosition(position, false)
|
||||
if (type != PRECHECKER) {
|
||||
|
||||
|
@ -2075,7 +2087,7 @@ class CollectionFragmentPicker(
|
|||
"" + totalMark + "/" + total
|
||||
|
||||
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()
|
||||
|
||||
if (!goBack) ticketCollection_setUsedShelves()
|
||||
|
@ -2341,20 +2353,19 @@ class CollectionFragmentPicker(
|
|||
}
|
||||
}
|
||||
if (isTicket) {
|
||||
val builder = AlertDialog.Builder(context)
|
||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
||||
builder.setItems(labelCount) { dialog, which ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
||||
)
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||
labelDialogHelper.showLabelDialog(
|
||||
onItemSelected = { labelCount ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk,
|
||||
labelCount = labelCount
|
||||
)
|
||||
|
||||
}
|
||||
val dialog = builder.create()
|
||||
dialog.show()
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
}
|
||||
)
|
||||
} else {
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, null
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.media.MediaPlayer
|
||||
|
@ -27,6 +26,7 @@ import es.verdnatura.domain.notNull
|
|||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
import es.verdnatura.presentation.common.ItemScanned
|
||||
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
|
@ -259,7 +259,7 @@ class CollectionFragmentPickerNew(
|
|||
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(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
||||
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())) {
|
||||
|
@ -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 ->
|
||||
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) {
|
||||
|
||||
viewModel.collectionTicketGetSalix(
|
||||
|
@ -658,7 +647,10 @@ class CollectionFragmentPickerNew(
|
|||
isMarking = true
|
||||
|
||||
viewModel.itemShelvingSaleSetQuantity(
|
||||
myGroupList[position].itemShelvingSaleFk, quantity, isItemShelvingSaleEmpty
|
||||
myGroupList[position].itemShelvingSaleFk,
|
||||
quantity,
|
||||
isItemShelvingSaleEmpty,
|
||||
shelvingFk = myGroupList[position].code!!
|
||||
)
|
||||
|
||||
val mySale = sales[position].itemShelvingSaleFk
|
||||
|
@ -869,22 +861,7 @@ class CollectionFragmentPickerNew(
|
|||
}.setOkButtonTwo(getString(R.string.no)) {
|
||||
scanRequest()
|
||||
customDialogThreeButtonsQuantity.dismiss()
|
||||
viewModel.itemShelvingSaleExists(
|
||||
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)
|
||||
}*/
|
||||
markLine(position, quantity, true)
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
scanRequest()
|
||||
customDialogThreeButtonsQuantity.dismiss()
|
||||
|
@ -1045,7 +1022,7 @@ class CollectionFragmentPickerNew(
|
|||
getString(R.string.totalsPicker, totalMark, total)
|
||||
|
||||
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()
|
||||
changeTicketState()
|
||||
|
||||
|
@ -1108,20 +1085,19 @@ class CollectionFragmentPickerNew(
|
|||
}
|
||||
}
|
||||
if (isTicket) {
|
||||
val builder = AlertDialog.Builder(context)
|
||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
||||
builder.setItems(labelCount) { dialog, which ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
||||
)
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||
labelDialogHelper.showLabelDialog(
|
||||
onItemSelected = { labelCount ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk,
|
||||
labelCount = labelCount
|
||||
)
|
||||
|
||||
}
|
||||
val dialog = builder.create()
|
||||
dialog.show()
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
}
|
||||
)
|
||||
} else {
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, null
|
||||
|
|
|
@ -1,42 +1,41 @@
|
|||
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.media.MediaPlayer
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.text.InputType
|
||||
import android.view.Gravity
|
||||
import android.util.Log.d
|
||||
import android.view.KeyEvent
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.View.VISIBLE
|
||||
import android.view.WindowManager
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.EditText
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
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
|
||||
import es.verdnatura.domain.ConstAndValues.BASEURLSALIX
|
||||
import es.verdnatura.domain.ConstAndValues.PREITEMPICKERTEST
|
||||
import es.verdnatura.domain.ConstAndValues.PREPARED
|
||||
import es.verdnatura.domain.ConstAndValues.PRESACADOR
|
||||
import es.verdnatura.domain.ConstAndValues.PRINTERNAME
|
||||
import es.verdnatura.domain.ConstAndValues.SACADOR
|
||||
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.LabelDialogHelper
|
||||
import es.verdnatura.presentation.common.OnAddItemClickListener
|
||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||
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.
|
||||
3-VERIFICAR COLECCIÓN
|
||||
4-IMPRIMIR
|
||||
5-EL SACADOR PUEDE MARCAR PREVIA, EL PRESACADOR NO.
|
||||
6-EL PRE marca los estados del saleGroup con OK PREVIOUS (26) y el SACADOR con PREPARED (14)
|
||||
|
||||
variables:
|
||||
isVerifiedCollection
|
||||
|
@ -109,6 +110,7 @@ class CollectionFragmentPickerPreviousNew(
|
|||
private lateinit var myGroupList: List<Sale>
|
||||
private var quantityReserveToCheckItemScan = 0
|
||||
private var isVerifiedCollection = false
|
||||
private var stateCodeId: Number? = null
|
||||
|
||||
companion object {
|
||||
fun newInstance(
|
||||
|
@ -141,12 +143,12 @@ class CollectionFragmentPickerPreviousNew(
|
|||
customDialogThreeButtons = CustomDialogThreeButtons(requireContext())
|
||||
customDialogThreeButtonsQuantity = CustomDialogThreeButtons(requireContext())
|
||||
ma.hideBottomNavigation(View.GONE)
|
||||
println("type $type")
|
||||
setEvents()
|
||||
setToolBar()
|
||||
viewModel.collectionTicketGetSalix(
|
||||
collection.collectionFk, print = false
|
||||
)
|
||||
viewModel.getStateId(if (type == PREITEMPICKERTEST) "OK PREVIOUS" else "PREPARED")
|
||||
|
||||
super.init()
|
||||
}
|
||||
|
@ -223,7 +225,7 @@ class CollectionFragmentPickerPreviousNew(
|
|||
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(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
||||
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())) {
|
||||
|
@ -328,12 +330,15 @@ class CollectionFragmentPickerPreviousNew(
|
|||
|
||||
loadPicked.observe(viewLifecycleOwner) { event ->
|
||||
event.getContentIfNotHandled().notNull {
|
||||
myGroupList[positionConfirm].isPicked = 1
|
||||
saleAdapter!!.notifyItemChanged(positionConfirm)
|
||||
lm!!.scrollToPositionWithOffset(positionConfirm, 0)
|
||||
//lm!!.scrollToPositionWithOffset(storedBackPosition + 1, 0)
|
||||
setTotalLines()
|
||||
|
||||
if (it) {
|
||||
myGroupList[positionConfirm].isPicked = 1
|
||||
saleAdapter!!.notifyItemChanged(positionConfirm)
|
||||
lm!!.scrollToPositionWithOffset(positionConfirm, 0)
|
||||
//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) {
|
||||
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 (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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -402,7 +422,7 @@ class CollectionFragmentPickerPreviousNew(
|
|||
when (type) {
|
||||
PREITEMPICKERTEST -> {
|
||||
myGroupList =
|
||||
salesList.sortedWith(compareBy<Sale> { it.pickingOrderPrevia }.thenBy { it.itemFk })
|
||||
salesList.sortedWith(compareBy<Sale> { it.pickingOrder }.thenBy { it.itemFk })
|
||||
}
|
||||
|
||||
SACADOR -> {
|
||||
|
@ -464,6 +484,12 @@ class CollectionFragmentPickerPreviousNew(
|
|||
showDeleteItemShelving(sale)
|
||||
}
|
||||
|
||||
}, onAddItemClickListener = object : OnAddItemClickListener {
|
||||
|
||||
override fun onAddItemClickListener(sale: Sale) {
|
||||
customDialogAddItemFromSale(sale)
|
||||
}
|
||||
|
||||
}, type = type
|
||||
)
|
||||
|
||||
|
@ -483,21 +509,20 @@ class CollectionFragmentPickerPreviousNew(
|
|||
}
|
||||
|
||||
private fun showDeleteItemShelving(sale: Sale) {
|
||||
customDialog.setTitle(getString(R.string.deleteSale))
|
||||
.setDescription(
|
||||
getString(R.string.deleteSaleDescrip) + getString(
|
||||
R.string.sure
|
||||
)
|
||||
).setOkButton(getString(R.string.delete)) {
|
||||
customDialog.setTitle(getString(R.string.deleteSale)).setDescription(
|
||||
getString(R.string.deleteSaleDescrip) + getString(
|
||||
R.string.sure
|
||||
)
|
||||
).setOkButton(getString(R.string.delete)) {
|
||||
|
||||
viewModel.itemShelvingSaleDeleteIsAdded(sale.itemShelvingSaleFk)
|
||||
scanRequest()
|
||||
customDialog.dismiss()
|
||||
viewModel.itemShelvingSaleDeleteIsAdded(sale.itemShelvingSaleFk)
|
||||
scanRequest()
|
||||
customDialog.dismiss()
|
||||
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
scanRequest()
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
scanRequest()
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
|
||||
}
|
||||
|
||||
|
@ -528,29 +553,79 @@ class CollectionFragmentPickerPreviousNew(
|
|||
var isFoundSale = false
|
||||
//Se busca la matricula en las lineas
|
||||
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()) {
|
||||
mpok!!.start()
|
||||
isFoundSale = true
|
||||
printShelvingResult(indice)
|
||||
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) {
|
||||
|
||||
storedPosition = position
|
||||
|
||||
if (sale.code!!.uppercase() == txtscan.uppercase()) {
|
||||
mpok!!.start()
|
||||
printShelvingResult(position)
|
||||
} else {
|
||||
mperror!!.start()
|
||||
}
|
||||
val isOk = markPrevia(txtscan)
|
||||
|
||||
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?) {
|
||||
|
@ -565,7 +640,8 @@ class CollectionFragmentPickerPreviousNew(
|
|||
myGroupList[position].itemShelvingSaleFk,
|
||||
quantity,
|
||||
isItemShelvingSaleEmpty = isItemShelvingSaleEmpty,
|
||||
sectorFk = if (sectorFk == -1) null else sectorFk
|
||||
sectorFk = if (sectorFk == -1) null else sectorFk,
|
||||
shelvingFk = myGroupList[position].code!!
|
||||
)
|
||||
}
|
||||
// storedBackPosition = position
|
||||
|
@ -708,8 +784,7 @@ class CollectionFragmentPickerPreviousNew(
|
|||
mpok?.start()
|
||||
ma.hideKeyboard(customDialogList.getEditTextTwo())
|
||||
customDialogList.dismiss()
|
||||
showTicket(myGroupList[position].ticketFk)
|
||||
|
||||
requireContext().showToastCenterWithBackground(myGroupList[position].ticketFk.toString())
|
||||
scanRequest()
|
||||
|
||||
} 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 {
|
||||
println("CheckItemScan $valueToCheck")
|
||||
val saleToCheck = myGroupList[position]
|
||||
|
@ -780,14 +837,13 @@ class CollectionFragmentPickerPreviousNew(
|
|||
showQuestionUbicationEmpty(position, quantity)
|
||||
}.setOkButtonTwo(getString(R.string.no)) {
|
||||
scanRequest()
|
||||
customDialogThreeButtonsQuantity.dismiss()
|
||||
viewModel.itemShelvingSaleExists(
|
||||
myGroupList[position].itemShelvingSaleFk,
|
||||
myGroupList[position].itemShelvingFk,
|
||||
position,
|
||||
quantity
|
||||
)
|
||||
/* if (quantity == 0) {
|
||||
customDialogThreeButtonsQuantity.dismiss()/* viewModel.itemShelvingSaleExists(
|
||||
myGroupList[position].itemShelvingSaleFk,
|
||||
myGroupList[position].itemShelvingFk,
|
||||
position,
|
||||
quantity
|
||||
)*/
|
||||
markLine(position, quantity, true)/* if (quantity == 0) {
|
||||
|
||||
/* viewModel.itemShelvingGet(
|
||||
myGroupList[position].itemShelvingFk,
|
||||
|
@ -896,8 +952,7 @@ class CollectionFragmentPickerPreviousNew(
|
|||
ticketSelected,
|
||||
saleGroupFk = if (type == PREPARED) null else collection.tickets.find { it.ticketFk == ticketSelected }?.sales?.get(
|
||||
0
|
||||
)?.saleGroupFk
|
||||
?: 0,
|
||||
)?.saleGroupFk ?: 0,
|
||||
sectorFk = if (type == PREPARED) null else mobileApplication.dataStoreApp.readDataStoreKey<Int>(
|
||||
SECTORFK
|
||||
)
|
||||
|
@ -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() {
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
val inputMethodManager =
|
||||
|
@ -936,15 +1029,13 @@ class CollectionFragmentPickerPreviousNew(
|
|||
}
|
||||
|
||||
private fun setTotalLines() {
|
||||
println("total Mark ${myGroupList.count { it.isPicked == 1 }}")
|
||||
println("total size ${myGroupList.size}")
|
||||
val totalMark = myGroupList.count { it.isPicked == 1 }
|
||||
binding.mainToolbar.toolbarTitle.text =
|
||||
if (collection.collectionFk != 0) collection.collectionFk.toString() else ""
|
||||
binding.mainToolbar.toolbarSubtitle.text =
|
||||
getString(R.string.totalsPicker, 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) {
|
||||
PREPARED -> {
|
||||
tickets.forEach {
|
||||
|
@ -952,17 +1043,34 @@ class CollectionFragmentPickerPreviousNew(
|
|||
ticketFk = it.toInt(), state = "PREPARED"
|
||||
)
|
||||
}
|
||||
//setStateSaleGroup()
|
||||
}
|
||||
|
||||
PREITEMPICKERTEST -> {
|
||||
//viewModel.saleTrackingAddPrevOK(collection.collectionFk)
|
||||
viewModel.saleTrackingSectorCollectionAddPrevOK(collection.collectionFk)
|
||||
viewModel.saleTrackingAddPrevOK(collection.collectionFk)
|
||||
//viewModel.saleTrackingSectorCollectionAddPrevOK(collection.collectionFk)
|
||||
val distinctSaleGroups = mutableSetOf<Int>()
|
||||
myGroupList.forEach { sale ->
|
||||
sale.saleGroupFk?.let {
|
||||
distinctSaleGroups.add(it)
|
||||
} ?: run {
|
||||
println("No hay salegroup")
|
||||
}
|
||||
}
|
||||
if (distinctSaleGroups.isNotEmpty())
|
||||
distinctSaleGroups.forEach { saleGroup ->
|
||||
setStateSaleGroup(saleGroup)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setStateSaleGroup(saleGroup: Number) {
|
||||
viewModel.saleGroupUpdateState(saleGroup, stateCodeId!!)
|
||||
}
|
||||
|
||||
private fun showScanner(index: Int, sale: Sale) {
|
||||
customDialogInput.getEditText().inputType = InputType.TYPE_CLASS_TEXT
|
||||
customDialogInput.setTitle("" + sale.itemFk)
|
||||
|
@ -1090,10 +1198,9 @@ class CollectionFragmentPickerPreviousNew(
|
|||
).toString()
|
||||
)
|
||||
|
||||
val foundTicketInCollection =
|
||||
collection.tickets.find {
|
||||
it.ticketFk == customDialogList.getValue().toInt()
|
||||
}
|
||||
val foundTicketInCollection = collection.tickets.find {
|
||||
it.ticketFk == customDialogList.getValue().toInt()
|
||||
}
|
||||
if (foundTicketInCollection != null) {
|
||||
isVerifiedCollection = true
|
||||
ma.hideKeyboard(customDialogList.getEditText())
|
||||
|
@ -1149,20 +1256,15 @@ class CollectionFragmentPickerPreviousNew(
|
|||
}
|
||||
}
|
||||
if (isTicket) {
|
||||
val builder = AlertDialog.Builder(context)
|
||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
||||
builder.setItems(labelCount) { dialog, which ->
|
||||
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||
labelDialogHelper.showLabelDialog(onItemSelected = { labelCount ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
||||
collectionFk = collection.collectionFk, labelCount = labelCount
|
||||
)
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
ConstAndValues.PRINTERNAME
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
|
||||
}
|
||||
val dialog = builder.create()
|
||||
dialog.show()
|
||||
})
|
||||
} else {
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, null
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package es.verdnatura.presentation.view.feature.collection.fragment
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.media.MediaPlayer
|
||||
|
@ -38,6 +37,7 @@ import es.verdnatura.domain.toLong
|
|||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
import es.verdnatura.presentation.common.ItemScanned
|
||||
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||
import es.verdnatura.presentation.common.OnBarcodeRowClickListener
|
||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
|
@ -161,7 +161,7 @@ class CollectionFragmentPreChecker(
|
|||
collection.collectionFk,
|
||||
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK),
|
||||
print = "0",
|
||||
type
|
||||
"PREVIOUS_CONTROL"
|
||||
)
|
||||
}
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -205,8 +205,8 @@ class CollectionFragmentPreChecker(
|
|||
val listIcons: ArrayList<ImageView> = ArrayList()
|
||||
val iconPrint = ImageView(context)
|
||||
iconPrint.setImageResource(R.drawable.ic_print_black_24dp)
|
||||
val iconAdd = ImageView(context)
|
||||
iconAdd.setImageResource(R.drawable.ic_playlist_add_black_24dp)
|
||||
// val iconAdd = ImageView(context)
|
||||
// iconAdd.setImageResource(R.drawable.ic_playlist_add_black_24dp)
|
||||
val iconViewCollection = ImageView(context)
|
||||
iconViewCollection.setImageResource(R.drawable.ic_collection)
|
||||
val iconWorker = ImageView(context)
|
||||
|
@ -220,7 +220,7 @@ class CollectionFragmentPreChecker(
|
|||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
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)
|
||||
iconPhone.tooltipText = getTooltip(R.drawable.phone_call)
|
||||
iconParking.tooltipText = getTooltip(R.drawable.ic_local_parking_black_24dp)
|
||||
|
@ -237,7 +237,7 @@ class CollectionFragmentPreChecker(
|
|||
listIcons.add(iconWorker)
|
||||
}
|
||||
|
||||
listIcons.add(iconAdd)
|
||||
// listIcons.add(iconAdd)
|
||||
|
||||
if (type == SACADOR) {
|
||||
listIcons.add(iconUpdate)
|
||||
|
@ -255,7 +255,7 @@ class CollectionFragmentPreChecker(
|
|||
|
||||
when (item) {
|
||||
iconPrint.drawable -> print()
|
||||
iconAdd.drawable -> addItem()
|
||||
// iconAdd.drawable -> addItem()
|
||||
iconWorker.drawable -> showUser()
|
||||
iconUpdate.drawable -> updateScreen()
|
||||
iconParking.drawable -> pasillerosItemClickListener?.onPasillerosItemClickListener(
|
||||
|
@ -362,7 +362,7 @@ class CollectionFragmentPreChecker(
|
|||
if (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
||||
|
||||
//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
|
||||
isScanned =
|
||||
|
@ -383,7 +383,7 @@ class CollectionFragmentPreChecker(
|
|||
viewModel.getSales(
|
||||
binding.scanInput.text.toString().toInt(),
|
||||
print = "0",
|
||||
source = type
|
||||
source = "PREVIOUS_CONTROL"
|
||||
)
|
||||
|
||||
//findSale(binding.scanInput.text.toString())
|
||||
|
@ -399,10 +399,10 @@ class CollectionFragmentPreChecker(
|
|||
it.sales.forEach { at ->
|
||||
if (at.saleGroupFk != saleGroup) {
|
||||
viewModel.setParking(
|
||||
ticketFk = at.saleGroupFk.toInt(),
|
||||
ticketFk = at.saleGroupFk!!.toInt(),
|
||||
parking = myQr.more
|
||||
)
|
||||
saleGroup = at.saleGroupFk
|
||||
saleGroup = at.saleGroupFk!!
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -419,7 +419,7 @@ class CollectionFragmentPreChecker(
|
|||
viewModel.getSales(
|
||||
binding.scanInput.toLong(),
|
||||
print = "0",
|
||||
source = type
|
||||
source = "PREVIOUS_CONTROL"
|
||||
)
|
||||
} catch (ex: Exception) {
|
||||
ma.messageWithSound(
|
||||
|
@ -964,15 +964,16 @@ class CollectionFragmentPreChecker(
|
|||
|
||||
val isOnReservationMode = mobileApplication.dataStoreApp.readDataStoreKey<Boolean>(
|
||||
ConstAndValues.RESERVATIONMODE
|
||||
)
|
||||
//lolass
|
||||
if (isOnReservationMode) {
|
||||
) || (mobileApplication.dataStoreApp.readDataStoreKey<Boolean?>(
|
||||
ConstAndValues.SECTORISONRESERVATIONMODE
|
||||
) == true)
|
||||
|
||||
sales = salesList.filter {
|
||||
sales = if (isOnReservationMode) {
|
||||
salesList.filter {
|
||||
it.sectorFk == mobileApplication.dataStoreApp.readDataStoreKey<Int>(SECTORFK)
|
||||
}.sortedWith(compareBy({ it.saleOrder }))
|
||||
} else {
|
||||
sales = salesList.filter {
|
||||
salesList.filter {
|
||||
it.sectorFk == mobileApplication.dataStoreApp.readDataStoreKey<Int>(SECTORFK)
|
||||
}.sortedWith(compareBy({ it.picked }))
|
||||
}
|
||||
|
@ -983,7 +984,7 @@ class CollectionFragmentPreChecker(
|
|||
|
||||
saleAdapter =
|
||||
SaleAdapter(
|
||||
sales,
|
||||
sales as MutableList,
|
||||
pasillerosItemClickListener!!,
|
||||
object : OnQuantityClickListener {
|
||||
|
||||
|
@ -1742,7 +1743,7 @@ class CollectionFragmentPreChecker(
|
|||
collection.collectionFk,
|
||||
mobileApplication.dataStoreApp.readDataStoreKey(SECTORFK),
|
||||
print = "0",
|
||||
type
|
||||
type = "PREVIOUS_CONTROL"
|
||||
)
|
||||
|
||||
} else {
|
||||
|
@ -2014,7 +2015,7 @@ class CollectionFragmentPreChecker(
|
|||
"" + totalMark + "/" + total
|
||||
|
||||
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()
|
||||
|
||||
if (!goBack)
|
||||
|
@ -2266,21 +2267,19 @@ class CollectionFragmentPreChecker(
|
|||
}
|
||||
}
|
||||
if (isTicket) {
|
||||
val builder = AlertDialog.Builder(context)
|
||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
||||
builder.setItems(labelCount) { dialog, which ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk,
|
||||
labelCount = (which + 1)
|
||||
)
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||
labelDialogHelper.showLabelDialog(
|
||||
onItemSelected = { labelCount ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk,
|
||||
labelCount = labelCount
|
||||
)
|
||||
|
||||
}
|
||||
val dialog = builder.create()
|
||||
dialog.show()
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
}
|
||||
)
|
||||
} else {
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk,
|
||||
|
|
|
@ -180,14 +180,18 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
val loadAddNew: LiveData<Event<ResponseItemVO>> = _responseNew.map { Event(it) }
|
||||
|
||||
private val _responseCode by lazy { MutableLiveData<Int?>() }
|
||||
val responseCode: LiveData<Int?>
|
||||
get() = _responseCode
|
||||
val responseCode: LiveData<Int?> = _responseCode
|
||||
val loadResponseCode: LiveData<Event<Int?>> = _responseCode.map { Event(it) }
|
||||
|
||||
private val _responseIncQuantity by lazy { MutableLiveData<ResponseItemVO>() }
|
||||
val responseIncQuantity: LiveData<ResponseItemVO>
|
||||
get() = _responseIncQuantity
|
||||
val loadIncQuantity: LiveData<Event<ResponseItemVO>> = _responseIncQuantity.map { Event(it) }
|
||||
|
||||
private val _responseStateId by lazy { MutableLiveData<Number>() }
|
||||
val responseStateId: LiveData<Number> = _responseStateId
|
||||
val loadResponseStateId: LiveData<Event<Number>> = _responseStateId.map { Event(it) }
|
||||
|
||||
private val _mistakeList by lazy { MutableLiveData<MistakeTypeListVO>() }
|
||||
val mistakeList: LiveData<MistakeTypeListVO>
|
||||
get() = _mistakeList
|
||||
|
@ -211,6 +215,16 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
val responseSaleAddPrevOK: LiveData<ResponseItemVO>
|
||||
get() = _responseSaleAddPrevOK
|
||||
|
||||
private val _responseSaleReserveAddPrevOK by lazy { MutableLiveData<Boolean>() }
|
||||
val responseSaleReserveAddPrevOK: LiveData<Boolean> = _responseSaleReserveAddPrevOK
|
||||
val loadResponseReserveAddPrevOK: LiveData<Event<Boolean>> =
|
||||
_responseSaleReserveAddPrevOK.map { Event(it) }
|
||||
|
||||
private val _setStateResponse by lazy { MutableLiveData<Boolean>() }
|
||||
val setStateResponse: LiveData<Boolean> = _setStateResponse
|
||||
val loadSetStateResponse: LiveData<Event<Boolean>> =
|
||||
_setStateResponse.map { Event(it) }
|
||||
|
||||
fun getSales(
|
||||
collectionFk: Number, print: String, source: String
|
||||
|
||||
|
@ -431,10 +445,18 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
itemShelvingSaleFk: Int,
|
||||
quantity: Int,
|
||||
isItemShelvingSaleEmpty: Boolean?,
|
||||
sectorFk: Int? = null
|
||||
sectorFk: Int? = null,
|
||||
shelvingFk: String
|
||||
) {
|
||||
salix.itemShelvingSaleSetquantitySalix(
|
||||
params = arrayListOf(itemShelvingSaleFk, quantity, isItemShelvingSaleEmpty, sectorFk)
|
||||
params = arrayListOf(
|
||||
itemShelvingSaleFk,
|
||||
quantity,
|
||||
isItemShelvingSaleEmpty,
|
||||
sectorFk,
|
||||
shelvingFk
|
||||
|
||||
).formatWithQuotes()
|
||||
).enqueue(object : SalixCallback<Any>(context) {
|
||||
|
||||
override fun onSuccess(response: Response<Any>) {
|
||||
|
@ -444,6 +466,12 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
_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(
|
||||
shelvingFk: String, quantity: Int, itemFk: Int
|
||||
) {
|
||||
|
@ -612,7 +669,7 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
}
|
||||
|
||||
fun itemShelvingSaleSetSaleGroup(
|
||||
saleGroupFk: Int
|
||||
saleGroupFk: Int,
|
||||
) {
|
||||
salix.itemShelvingSaleSetSaleGroup(
|
||||
arrayListOf(
|
||||
|
@ -628,6 +685,7 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
|
||||
override fun onSuccess(response: Response<Unit>) {
|
||||
_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(
|
||||
saleFk: Int, quantity: String
|
||||
) {
|
||||
|
@ -783,7 +851,9 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
|
||||
salix.saleMistakeAdd(
|
||||
SaleMistakeSalix(
|
||||
userFk = (context as MobileApplication).userId!!, saleFk = saleFk, typeFk = typeFk
|
||||
userFk = (context as MobileApplication).userId!!,
|
||||
saleFk = saleFk,
|
||||
typeFk = typeFk
|
||||
)
|
||||
).enqueue(object : SalixCallback<Any>(context) {
|
||||
override fun onError(t: Throwable) {
|
||||
|
@ -974,22 +1044,11 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
) {
|
||||
salix.saleTrackingSectorCollectionAddPrevOK(arrayListOf(sectorCollectionFk))
|
||||
.enqueue(object : SalixCallback<Any>(context) {
|
||||
override fun onError(t: Throwable) {
|
||||
_responseSaleAddPrevOK.value = ResponseItemVO(
|
||||
isError = true, errorMessage = getMessageFromAllResponse(
|
||||
nameofFunction(this), t.message!!
|
||||
)
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
override fun onSuccess(response: Response<Any>) {
|
||||
_responseSaleAddPrevOK.value = ResponseItemVO(
|
||||
isError = false, errorMessage = "" + getMessageFromAllResponse(
|
||||
nameofFunction(this), response.message()
|
||||
)
|
||||
)
|
||||
|
||||
_responseSaleReserveAddPrevOK.value = true
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Bundle
|
||||
|
@ -8,7 +7,6 @@ import android.view.View.VISIBLE
|
|||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.ImageView
|
||||
import android.widget.Toast
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import es.verdnatura.R
|
||||
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.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
import es.verdnatura.presentation.common.LabelDialogHelper
|
||||
import es.verdnatura.presentation.common.OnMistakeClickListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
import es.verdnatura.presentation.common.OnPackingClickListener
|
||||
|
@ -138,16 +137,20 @@ class CollectionShowTicketFragment(
|
|||
}
|
||||
}
|
||||
if (isTicket) {
|
||||
val builder = AlertDialog.Builder(context)
|
||||
builder.setTitle(getString(R.string.selectLabeltoPrint))
|
||||
val labelCount = arrayOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
|
||||
builder.setItems(labelCount) { dialog, which ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
||||
)
|
||||
}
|
||||
val dialog = builder.create()
|
||||
dialog.show()
|
||||
val labelDialogHelper = LabelDialogHelper(requireContext())
|
||||
labelDialogHelper.showLabelDialog(
|
||||
onItemSelected = { labelCount ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk,
|
||||
labelCount = labelCount
|
||||
)
|
||||
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
}
|
||||
)
|
||||
|
||||
} else {
|
||||
viewModel.collectionStickerPrint(
|
||||
|
||||
|
@ -166,22 +169,18 @@ class CollectionShowTicketFragment(
|
|||
|
||||
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 (!binding.scanInput.text.toString().isNullOrEmpty()) {
|
||||
if (binding.scanInput.text.toString().isNotEmpty()) {
|
||||
buttonPushedGetCollection = false
|
||||
try {
|
||||
viewModel.getSales(
|
||||
collectionFk = itemScanValue(
|
||||
binding.scanInput.text.toString(), arrayOf("ticket","saleGroup"), "id"
|
||||
binding.scanInput.text.toString(),
|
||||
arrayOf("ticket", "saleGroup"),
|
||||
"id"
|
||||
).toString().toInt(),
|
||||
print = "0",
|
||||
source = type
|
||||
)
|
||||
|
||||
println("qrTest2")
|
||||
|
||||
/* viewModel.getSales(
|
||||
binding.scanInput.text.toString().toInt(), print = "0", type
|
||||
)*/
|
||||
} catch (ex: Exception) {
|
||||
getString(R.string.scanLabelTicket).toast(requireContext())
|
||||
}
|
||||
|
@ -213,13 +212,14 @@ class CollectionShowTicketFragment(
|
|||
try {
|
||||
requireActivity().hideKeyboard()
|
||||
} catch (e: Exception) {
|
||||
e.message!!.toast(requireContext())
|
||||
}
|
||||
}
|
||||
|
||||
override fun observeViewModel() {
|
||||
with(viewModel) {
|
||||
|
||||
collectionTicketList.observe(viewLifecycleOwner, Observer {
|
||||
collectionTicketList.observe(viewLifecycleOwner) {
|
||||
|
||||
if (!it.isError) {
|
||||
if (it.tickets.isNotEmpty()) {
|
||||
|
@ -232,18 +232,18 @@ class CollectionShowTicketFragment(
|
|||
|
||||
}
|
||||
} else {
|
||||
ma.messageWithSound(it.errorMessage, it.isError, false)
|
||||
ma.messageWithSound(it.errorMessage, isError = true, false)
|
||||
if (activity != null) ma.onMyBackPressed()
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
responsePrint.observe(viewLifecycleOwner, Observer {
|
||||
responsePrint.observe(viewLifecycleOwner) {
|
||||
|
||||
if (it.isError) {
|
||||
ma.messageWithSound(
|
||||
it.errorMessage, it.isError, true
|
||||
it.errorMessage, isError = true, true
|
||||
)
|
||||
} else {
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
|
@ -251,7 +251,7 @@ class CollectionShowTicketFragment(
|
|||
)).toast(requireContext())
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -277,27 +277,30 @@ class CollectionShowTicketFragment(
|
|||
|
||||
}
|
||||
}
|
||||
sales = salesList.sortedWith(compareBy({ it.saleOrder }))
|
||||
/*salesList.sortedWith(compareBy<SaleVO> { it.isPrepared == "0" }
|
||||
.thenBy { it.isControlled == "0" }*/
|
||||
|
||||
sales = salesList.sortedWith(compareBy { it.saleOrder })
|
||||
saleAdapter =
|
||||
SaleAdapter(sales, pasillerosItemClickListener!!, object : OnQuantityClickListener {
|
||||
SaleAdapter(
|
||||
sales as MutableList,
|
||||
pasillerosItemClickListener!!,
|
||||
object : OnQuantityClickListener {
|
||||
|
||||
override fun onQuantityClick(sale: SaleVO) {
|
||||
}
|
||||
}, object : OnSaleClickListener {
|
||||
override fun onSaleClick(sale: SaleVO) {
|
||||
}
|
||||
override fun onQuantityClick(sale: SaleVO) {
|
||||
}
|
||||
},
|
||||
object : OnSaleClickListener {
|
||||
override fun onSaleClick(sale: SaleVO) {
|
||||
}
|
||||
|
||||
}, object : OnMistakeClickListener {
|
||||
override fun onMistakeClickListener(sale: SaleVO) {
|
||||
}
|
||||
}, object : OnPackingClickListener {
|
||||
override fun onPackingClick(sale: SaleVO) {
|
||||
}
|
||||
},
|
||||
object : OnMistakeClickListener {
|
||||
override fun onMistakeClickListener(sale: SaleVO) {
|
||||
}
|
||||
},
|
||||
object : OnPackingClickListener {
|
||||
override fun onPackingClick(sale: SaleVO) {
|
||||
}
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
lm = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||
binding.fragmentSacadorCollections.adapter = saleAdapter
|
||||
|
@ -310,8 +313,13 @@ class CollectionShowTicketFragment(
|
|||
|
||||
private fun setPosition() {
|
||||
val firstIndex =
|
||||
sales.indexOfFirst { it.isPreviousPrepared == "0" && (it.isPrepared == "0" || it.isControlled == "0") }
|
||||
lm!!.scrollToPositionWithOffset(firstIndex, 0)
|
||||
sales.indexOfFirst { it.isPreviousPrepared == "0" && it.isPrepared == "0" && it.isControlled == "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) {
|
||||
|
@ -331,9 +339,10 @@ class CollectionShowTicketFragment(
|
|||
if (it.isControlled == "1") totalMark += 1
|
||||
}
|
||||
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) {
|
||||
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 ->
|
||||
// if (ticket.sales.size>0){
|
||||
ticket.sales.forEach {
|
||||
it.parkingCode = ticket.parkingCode
|
||||
it.isAdvanced = ticket.isAdvanced
|
||||
it.ticketFk = ticket.ticketFk
|
||||
it.level = ticket.level
|
||||
it.rgb = ticket.rgb
|
||||
|
|
|
@ -55,7 +55,7 @@ class ControladorFragment :
|
|||
goBack = false
|
||||
if (!binding.scanInput.text.isNullOrEmpty()) {
|
||||
|
||||
binding.scanInput.setText(textScanned_filterDouble(binding.scanInput.text!!.toString()))
|
||||
binding.scanInput.setText(textScannedFilterDouble(binding.scanInput.text!!.toString()))
|
||||
try {
|
||||
binding.scanInput.setText(
|
||||
itemScanValue(
|
||||
|
|
|
@ -52,7 +52,7 @@ class ControlVehiculoUsuarioFragment(
|
|||
|
||||
if (userFk == vUserFK) {
|
||||
val androidId: String = mobileApplication.dataStoreApp.readDataStoreKey(ANDROID_ID)
|
||||
viewModel.machineGetWorkerPlate(mobileApplication.userId!!)
|
||||
// viewModel.machineGetWorkerPlate(mobileApplication.userId!!)
|
||||
viewModel.deviceProductionGetnameDevice(
|
||||
androidId
|
||||
)
|
||||
|
@ -64,7 +64,8 @@ class ControlVehiculoUsuarioFragment(
|
|||
binding.userInformation.visibility = INVISIBLE
|
||||
binding.nameVehiclecontrol.visibility = INVISIBLE
|
||||
binding.userImage.setOnClickListener { binding.mainToolbar.backButton.performClick() }
|
||||
viewModel.machineGetWorkerPlate(mobileApplication.userId!!)
|
||||
// viewModel.machineGetWorkerPlate(mobileApplication.userId!!)
|
||||
binding.nameVehiclecontrol.visibility = VISIBLE
|
||||
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(
|
||||
workerId: Int
|
||||
) {
|
||||
salix.getNameWorker(
|
||||
"""{"fields": ["firstName","lastName"],"where": {"id":$workerId}}"""
|
||||
).enqueue(object : SalixCallback<NameWorker>(context) {
|
||||
"""{"limit":1, "where":{"id":$workerId},"skip":0,"fields":["firstName","lastName"]}"""
|
||||
).enqueue(object : SalixCallback<List<NameWorker>>(context) {
|
||||
|
||||
override fun onSuccess(response: Response<NameWorker>) {
|
||||
_responseGetName.value = response.body()
|
||||
override fun onSuccess(response: Response<List<NameWorker>>) {
|
||||
_responseGetName.value = response.body()?.get(0)
|
||||
}
|
||||
|
||||
})
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package es.verdnatura.presentation.view.feature.delivery.adapters
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.ContextCompat.getColor
|
||||
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
|
||||
}
|
||||
|
|
|
@ -31,9 +31,14 @@ class RouteAdapter(
|
|||
|
||||
var prevCreated = ""
|
||||
for (route in list) {
|
||||
if (route.created.toString() != prevCreated) {
|
||||
//tarea 7146
|
||||
/* if (route.created.toString() != prevCreated) {
|
||||
route.header = true
|
||||
prevCreated = route.created.toString()
|
||||
}*/
|
||||
if (route.dated.toString() != prevCreated) {
|
||||
route.header = true
|
||||
prevCreated = route.dated.toString()
|
||||
}
|
||||
}
|
||||
return list
|
||||
|
@ -90,7 +95,9 @@ class RouteAdapter(
|
|||
|
||||
if (item.header) {
|
||||
headerRouteLayout.visibility = View.VISIBLE
|
||||
headerRoute.text = toDateString(item.created)
|
||||
//tarea7146
|
||||
headerRoute.text = toDateString(item.dated)
|
||||
// headerRoute.text = toDateString(item.created)
|
||||
} else {
|
||||
headerRouteLayout.visibility = View.GONE
|
||||
|
||||
|
|
|
@ -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.ToolBarAdapterTooltip
|
||||
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.adapters.ExpeditionLoadUnloadAdapter
|
||||
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.ExpeditionInfoPending
|
||||
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.viewmodels.DeliveryViewModel
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@ -51,12 +53,11 @@ class LoadUnloadFragment(
|
|||
private var adapter: ExpeditionLoadUnloadAdapter? = null
|
||||
private var originalItem: Int = 0
|
||||
private lateinit var myList: MutableList<ExpeditionInfoLoadUnload>
|
||||
private var counterCalls = 0
|
||||
private var counterResponse = 0
|
||||
private var route = 0
|
||||
private var addressFk = 0
|
||||
private lateinit var db: DeliveryDatabase
|
||||
private lateinit var backDispatcher: OnBackPressedDispatcher
|
||||
private lateinit var customDialogConfirmExpedition: CustomDialogThreeButtons
|
||||
|
||||
companion object {
|
||||
var scanned = false
|
||||
|
@ -75,8 +76,7 @@ class LoadUnloadFragment(
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
requireActivity().onBackPressedDispatcher.addCallback(
|
||||
viewLifecycleOwner,
|
||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner,
|
||||
object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
if (!onBackPressedHandled()) {
|
||||
|
@ -101,6 +101,7 @@ class LoadUnloadFragment(
|
|||
setSwitchButon()
|
||||
binding.scanInput.requestFocus()
|
||||
viewModel.getExpeditionFromRoute(route)
|
||||
customDialogConfirmExpedition = CustomDialogThreeButtons(requireContext())
|
||||
super.init()
|
||||
}
|
||||
|
||||
|
@ -178,25 +179,43 @@ class LoadUnloadFragment(
|
|||
|
||||
private fun setExpeditionsState(list: MutableList<ExpeditionInfoLoadUnload>, state: String) {
|
||||
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) {
|
||||
mlist.add(
|
||||
ExpeditionSalix(
|
||||
mlistPosition.add(
|
||||
ExpeditionSalixPosition(
|
||||
expeditionFk = l.id,
|
||||
stateCode = if (l.code != state && l.code != "FOUND" && l.code != "DELIVERED") {
|
||||
"LOST"
|
||||
} else {
|
||||
l.code
|
||||
stateCode = if (l.code == "FOUND") (l.code) else {
|
||||
if (state == "ON DELIVERY" && l.code != "ON DELIVERY" && l.code != "DELIVERED" && l.code != "LOST") {
|
||||
"NOT SCANNED"
|
||||
} 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.filter { it.code == state }.size == list.size) {
|
||||
viewModel.expeditionStateAddSalix(expeditionBack)
|
||||
counterCalls = 1
|
||||
viewModel.expeditionStateAddSalix(expeditionBackPosition)
|
||||
} else {
|
||||
val alertDialog = android.app.AlertDialog.Builder(requireContext()).create()
|
||||
alertDialog.setTitle(getString(R.string.info))
|
||||
|
@ -204,8 +223,7 @@ class LoadUnloadFragment(
|
|||
alertDialog.setButton(
|
||||
android.app.AlertDialog.BUTTON_NEUTRAL, getString(R.string.save)
|
||||
) { _, _ ->
|
||||
counterCalls = 1
|
||||
viewModel.expeditionStateAddSalix(expeditionBack)
|
||||
viewModel.expeditionStateAddSalix(expeditionBackPosition)
|
||||
}
|
||||
alertDialog.setButton(
|
||||
android.app.AlertDialog.BUTTON_POSITIVE, getString(R.string.ordenar)
|
||||
|
@ -261,6 +279,8 @@ class LoadUnloadFragment(
|
|||
if (!binding.scanInput.text.isNullOrEmpty()) {
|
||||
val isScanned =
|
||||
event != null && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER
|
||||
//Tarea 8152
|
||||
// showconfirmExpedition(binding.scanInput.text.toString().toInt(), isScanned)
|
||||
try {
|
||||
markExpedition(
|
||||
binding.scanInput.text.toString().toInt(),
|
||||
|
@ -295,6 +315,70 @@ class LoadUnloadFragment(
|
|||
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) {
|
||||
|
||||
var found = false
|
||||
|
@ -307,15 +391,14 @@ class LoadUnloadFragment(
|
|||
found = true
|
||||
exped.code = state
|
||||
exped.isScanned = isScanned
|
||||
if (state == "ON DELIVERY") exped.scanOrder =
|
||||
myList.filter { it.code == state }.size
|
||||
break
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
ma.messageWithSound(
|
||||
message = "",
|
||||
isError = false,
|
||||
isPlayed = true,
|
||||
isToasted = false
|
||||
message = "", isError = false, isPlayed = true, isToasted = false
|
||||
)
|
||||
scanning(true)
|
||||
} else {
|
||||
|
@ -324,7 +407,6 @@ class LoadUnloadFragment(
|
|||
}
|
||||
|
||||
if (binding.mainToolbar.switchButton.isChecked) {
|
||||
counterCalls = 1
|
||||
val pendingExpeditionSend = myList.map { l ->
|
||||
ExpeditionSalix(
|
||||
expeditionFk = l.id, stateCode = l.code, isScanned = l.isScanned
|
||||
|
@ -353,20 +435,17 @@ class LoadUnloadFragment(
|
|||
}
|
||||
responseStateAdd.observe(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
counterResponse += 1
|
||||
if (counterResponse == counterCalls) {
|
||||
if (!binding.mainToolbar.switchButton.isChecked) {
|
||||
if (state == "DELIVERED") {
|
||||
openSignActivity()
|
||||
} else {
|
||||
ma.onMyBackPressed()
|
||||
}
|
||||
|
||||
if (!binding.mainToolbar.switchButton.isChecked) {
|
||||
if (state == "DELIVERED") {
|
||||
openSignActivity()
|
||||
} else {
|
||||
binding.mainToolbar.switchButton.isChecked = false
|
||||
ma.onMyBackPressed()
|
||||
}
|
||||
counterResponse = 0
|
||||
counterCalls = 0
|
||||
} else {
|
||||
binding.mainToolbar.switchButton.isChecked = false
|
||||
}
|
||||
|
||||
} else {
|
||||
openSignActivity()
|
||||
}
|
||||
|
@ -456,6 +535,7 @@ class LoadUnloadFragment(
|
|||
it.routeFk == route
|
||||
}
|
||||
}
|
||||
|
||||
adapter = ExpeditionLoadUnloadAdapter(myList)
|
||||
binding.expeditionloadunloadRecyclerview.adapter = adapter
|
||||
binding.expeditionloadunloadRecyclerview.layoutManager =
|
||||
|
|
|
@ -175,7 +175,7 @@ class LogExpeditionFragment(
|
|||
binding.routeLayout.visibility = View.VISIBLE
|
||||
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||
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("")
|
||||
}
|
||||
|
||||
|
|
|
@ -5,9 +5,11 @@ import android.os.Bundle
|
|||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.View
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.ImageView
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.gson.Gson
|
||||
import es.verdnatura.R
|
||||
import es.verdnatura.databinding.FragmentRouteBinding
|
||||
|
@ -17,14 +19,21 @@ import es.verdnatura.domain.toDateString
|
|||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
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.OnGeneralItemRowClickListener
|
||||
import es.verdnatura.presentation.common.OnGeneralRowClickListener
|
||||
import es.verdnatura.presentation.common.OnItemImageRouteRowClickListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||
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.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.RouteLoaded
|
||||
import es.verdnatura.presentation.view.feature.delivery.viewmodels.DeliveryViewModel
|
||||
|
@ -45,6 +54,34 @@ class RoutesFragment(
|
|||
private lateinit var myListRoute: MutableList<RouteInfo>
|
||||
private lateinit var db: DeliveryDatabase
|
||||
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 {
|
||||
fun newInstance(title: String) = RoutesFragment(title)
|
||||
|
@ -78,30 +115,15 @@ class RoutesFragment(
|
|||
}
|
||||
val pendingExpedition = db.expedicionDao().getAllPendingExpeditions()
|
||||
|
||||
val pendingExpeditionSend = pendingExpedition.map { l ->
|
||||
ExpeditionSalix(
|
||||
expeditionFk = l.id, stateCode = l.code, l.isScanned
|
||||
)
|
||||
}
|
||||
if (pendingExpedition.isNotEmpty()) {
|
||||
val pendingExpeditionSend = pendingExpedition.map { l ->
|
||||
ExpeditionSalixPosition(
|
||||
expeditionFk = l.id, stateCode = l.code, l.isScanned, l.scanOrder
|
||||
)
|
||||
}
|
||||
|
||||
if (pendingExpeditionSend.any { it.stateCode == "DELIVERED" }) {
|
||||
viewModel.expeditionStateAddSalix(
|
||||
hashMapOf("expeditions" to pendingExpeditionSend.filter { it.stateCode == "DELIVERED" })
|
||||
)
|
||||
}
|
||||
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" })
|
||||
hashMapOf("expeditions" to pendingExpeditionSend)
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -123,10 +145,10 @@ class RoutesFragment(
|
|||
}
|
||||
}
|
||||
|
||||
private fun deleteExpeditionsPending(codeState: String) {
|
||||
private fun deleteExpeditionsPending() {
|
||||
lifecycleScope.launch {
|
||||
withContext(Dispatchers.IO) {
|
||||
db.expedicionDao().getDeleteByState(codeState)
|
||||
db.expedicionDao().getDeleteAllState()
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -152,6 +174,13 @@ class RoutesFragment(
|
|||
iconInfo.tooltipText = getTooltip(R.drawable.ic_info_delivery)
|
||||
iconRefresh.tooltipText = getTooltip(R.drawable.ic_info_refresh)
|
||||
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(iconRefresh)
|
||||
listIcons.add(iconSearch)
|
||||
|
@ -179,6 +208,10 @@ class RoutesFragment(
|
|||
getString(R.string.titleLog)
|
||||
)
|
||||
}
|
||||
|
||||
iconMove.drawable -> {
|
||||
showExpeditionScan()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -188,6 +221,82 @@ class RoutesFragment(
|
|||
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() {
|
||||
binding.mainToolbar.backButton.setOnClickListener {
|
||||
ma.onMyBackPressed()
|
||||
|
@ -204,7 +313,6 @@ class RoutesFragment(
|
|||
}
|
||||
|
||||
override fun afterTextChanged(s: Editable?) {
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -262,7 +370,7 @@ class RoutesFragment(
|
|||
|
||||
if (it) {
|
||||
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||
deleteExpeditionsPending("")
|
||||
deleteExpeditionsPending()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -302,8 +410,7 @@ class RoutesFragment(
|
|||
|
||||
"showTickets" -> {
|
||||
ma.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(title = R.string.tickets),
|
||||
Gson().toJson(item)
|
||||
PasillerosItemVO(title = R.string.tickets), 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.model.ExpeditionInfoLoadUnload
|
||||
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.pasillero.model.PasillerosItemVO
|
||||
|
||||
|
@ -39,8 +39,6 @@ class SummaryFragment(
|
|||
private var originalItem: Int = 0
|
||||
private lateinit var myList: MutableList<ExpeditionInfoLoadUnload>
|
||||
private lateinit var myListSummary: List<ExpeditionInfoSummary>
|
||||
private var counterCalls = 0
|
||||
private var counterResponse = 0
|
||||
private var positionOnScreen = 0
|
||||
private var addressFkSelected = 0
|
||||
private var routeSelected = 0
|
||||
|
@ -151,19 +149,20 @@ class SummaryFragment(
|
|||
list: MutableList<ExpeditionInfoLoadUnload>, state: String, address: Int
|
||||
) {
|
||||
val listExpedition = list.filter { it.addressFk == address }.map { l ->
|
||||
ExpeditionSalix(
|
||||
expeditionFk = l.id, stateCode = if (l.code == state && l.code != "DELIVERED") {
|
||||
state
|
||||
} else {
|
||||
"FOUND"
|
||||
},
|
||||
isScanned = l.isScanned
|
||||
ExpeditionSalixPosition(
|
||||
expeditionFk = l.id, stateCode = if (l.code == "FOUND") (l.code) else {
|
||||
if (state == "ON DELIVERY" && l.code != "ON DELIVERY" && l.code != "DELIVERED" && l.code != "LOST") {
|
||||
"NOT SCANNED"
|
||||
} else {
|
||||
if (state == "DELIVERED" && l.code != "DELIVERED") "LOST" else l.code
|
||||
}
|
||||
}, isScanned = l.isScanned, scanOrder = l.scanOrder
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
if (list.filter { it.addressFk == address }
|
||||
.filter { it.code == state }.size == list.filter { it.addressFk == address }.size) {
|
||||
counterCalls = 1
|
||||
viewModel.expeditionStateAddSalix(
|
||||
hashMapOf("expeditions" to listExpedition.filter { it.stateCode == state })
|
||||
)
|
||||
|
@ -178,8 +177,7 @@ class SummaryFragment(
|
|||
android.app.AlertDialog.BUTTON_POSITIVE, getString(R.string.save)
|
||||
) { _, _ ->
|
||||
|
||||
counterCalls = 1
|
||||
viewModel.expeditionStateAddSalix(hashMapOf("expeditions" to listExpedition.filter { it.stateCode == state }))
|
||||
viewModel.expeditionStateAddSalix(hashMapOf("expeditions" to listExpedition))
|
||||
|
||||
}
|
||||
alertDialog.setButton(
|
||||
|
@ -235,15 +233,22 @@ class SummaryFragment(
|
|||
found = true
|
||||
exped.code = state
|
||||
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
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
ma.messageWithSound(
|
||||
message = "",
|
||||
isError = false,
|
||||
isPlayed = true,
|
||||
isToasted = false
|
||||
message = "", isError = false, isPlayed = true, isToasted = false
|
||||
)
|
||||
} else {
|
||||
ma.messageWithSound(message = "", isError = true, isPlayed = true, isToasted = null)
|
||||
|
@ -279,13 +284,10 @@ class SummaryFragment(
|
|||
}
|
||||
responseStateAdd.observe(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
counterResponse += 1
|
||||
if (counterResponse == counterCalls) {
|
||||
viewModel.routeGetExpeditionSummary(routeSelected)
|
||||
counterResponse = 0
|
||||
counterCalls = 0
|
||||
checkNextAddress()
|
||||
}
|
||||
|
||||
viewModel.routeGetExpeditionSummary(routeSelected)
|
||||
checkNextAddress()
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -340,7 +342,6 @@ class SummaryFragment(
|
|||
}
|
||||
if (addressFkSelected != item.addressFk && isScanning) {
|
||||
setExpeditionsState(myList, state, addressFkSelected)
|
||||
|
||||
}
|
||||
addressFkSelected = item.addressFk
|
||||
isScanning = false
|
||||
|
|
|
@ -31,6 +31,7 @@ import es.verdnatura.presentation.common.GeneralAdapter
|
|||
import es.verdnatura.presentation.common.GeneralItem
|
||||
import es.verdnatura.presentation.common.ItemDescorationCustomized
|
||||
import es.verdnatura.presentation.common.OnGeneralItemRowClickListener
|
||||
import es.verdnatura.presentation.common.OnGeneralRowClickListener
|
||||
import es.verdnatura.presentation.common.OnItemButtonCMRRowClickListener
|
||||
import es.verdnatura.presentation.common.OnItemButtonTicketRowClickListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
|
@ -102,7 +103,6 @@ class TicketsFragment : BaseFragment<FragmentTicketsBinding, DeliveryViewModel>(
|
|||
binding.mainToolbar.toolbarTitle.text = route.name
|
||||
viewModel.getTickets(route.id)
|
||||
db = database(requireContext().applicationContext)
|
||||
println("tickets in ")
|
||||
|
||||
}
|
||||
|
||||
|
@ -429,15 +429,15 @@ class TicketsFragment : BaseFragment<FragmentTicketsBinding, DeliveryViewModel>(
|
|||
override fun onItemButtonCMRRowClickListener(
|
||||
item: Ticket
|
||||
) {
|
||||
|
||||
ma.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(
|
||||
title = R.string.titleWebViewer,
|
||||
), entryPoint = Gson().toJson(
|
||||
mutableMapOf(
|
||||
"entryPoint" to route.id, "web" to "${
|
||||
"entryPoint" to route.id,
|
||||
"web" to "${
|
||||
mobileApplication.dataStoreApp.getServerSalix()
|
||||
}/api/Routes/${item.cmrFk}/cmr?access_token=${
|
||||
}/api/Cmrs/${item.cmrFk}/print?access_token=${
|
||||
mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
TOKEN
|
||||
)
|
||||
|
@ -608,32 +608,33 @@ class TicketsFragment : BaseFragment<FragmentTicketsBinding, DeliveryViewModel>(
|
|||
customDialogList.dismiss()
|
||||
}.hideDialog().show()
|
||||
|
||||
val listPhonesAdapter = GeneralAdapter(phones, object : OnGeneralItemRowClickListener {
|
||||
override fun onGeneralItemRowClickListener(item: GeneralItem) {
|
||||
phones.forEach {
|
||||
if (it.code == item.code) {
|
||||
if (ContextCompat.checkSelfPermission(
|
||||
requireContext(), Manifest.permission.CALL_PHONE
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
val callIntent = Intent(Intent.ACTION_CALL)
|
||||
callIntent.data = Uri.parse("tel:${it.code}")
|
||||
startActivity(callIntent)
|
||||
return@forEach
|
||||
val listPhonesAdapter =
|
||||
GeneralAdapter(phones, onRowClickListener = object : OnGeneralRowClickListener {
|
||||
override fun onRowClickListener(item: GeneralItem) {
|
||||
phones.forEach {
|
||||
if (it.code == item.code) {
|
||||
if (ContextCompat.checkSelfPermission(
|
||||
requireContext(), Manifest.permission.CALL_PHONE
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
val callIntent = Intent(Intent.ACTION_CALL)
|
||||
callIntent.data = Uri.parse("tel:${it.code}")
|
||||
startActivity(callIntent)
|
||||
return@forEach
|
||||
|
||||
}
|
||||
} else {
|
||||
ActivityCompat.requestPermissions(
|
||||
context as Activity,
|
||||
arrayOf(Manifest.permission.CALL_PHONE),
|
||||
REQUEST_CALL_PERMISSION
|
||||
)
|
||||
}
|
||||
} else {
|
||||
ActivityCompat.requestPermissions(
|
||||
context as Activity,
|
||||
arrayOf(Manifest.permission.CALL_PHONE),
|
||||
REQUEST_CALL_PERMISSION
|
||||
)
|
||||
customDialogList.dismiss()
|
||||
}
|
||||
customDialogList.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
customDialogList.getRecyclerView().adapter = listPhonesAdapter
|
||||
customDialogList.getRecyclerView().layoutManager =
|
||||
|
|
|
@ -5,6 +5,7 @@ import androidx.room.PrimaryKey
|
|||
import androidx.room.TypeConverters
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import es.verdnatura.db.MapTypeConverter
|
||||
import es.verdnatura.domain.isoToString
|
||||
import java.io.Serializable
|
||||
|
||||
class ClientTicketList(
|
||||
|
@ -58,12 +59,13 @@ data class TicketObservation
|
|||
(
|
||||
var ticketFk: Long,
|
||||
var description: String,
|
||||
var observationType:ObservationType?=null
|
||||
var observationType: ObservationType? = null
|
||||
)
|
||||
|
||||
data class ObservationType(
|
||||
var code:String?
|
||||
var code: String?
|
||||
)
|
||||
|
||||
@Entity(tableName = "signedPending")
|
||||
data class SignedTickets(
|
||||
@TypeConverters(MapTypeConverter::class) val queryMapList: MutableMap<String?, String?>,
|
||||
|
@ -71,3 +73,48 @@ data class SignedTickets(
|
|||
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
|
||||
)
|
||||
|
||||
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(
|
||||
var list: List<ExpeditionInfoLog> = listOf()
|
||||
)
|
||||
|
@ -67,7 +78,7 @@ data class Agency(
|
|||
class TicketSalix(
|
||||
var id: Int,
|
||||
var routeFk: Int?,
|
||||
var route: RouteSalix,
|
||||
var route: RouteSalix?,
|
||||
|
||||
)
|
||||
|
||||
|
@ -106,7 +117,8 @@ class ExpeditionInfoLoadUnload(
|
|||
var code: String?,
|
||||
var nickname: String,
|
||||
var postalCode: String,
|
||||
var isScanned: Int? = null
|
||||
var isScanned: Int? = null,
|
||||
var scanOrder: Int? = null
|
||||
) : Serializable
|
||||
|
||||
@Entity(tableName = "expeditionPending")
|
||||
|
@ -121,7 +133,8 @@ class ExpeditionInfoPending(
|
|||
var code: String?,
|
||||
var nickname: String,
|
||||
var postalCode: String,
|
||||
var isScanned: Int? = 0
|
||||
var isScanned: Int? = 0,
|
||||
var scanOrder: Int? = null
|
||||
|
||||
) : Serializable
|
||||
|
||||
|
@ -155,7 +168,7 @@ class RouteInfo(
|
|||
@SerializedName(value = "driver", alternate = ["workerUserName"])
|
||||
var driver: String?,
|
||||
var hour: String?,
|
||||
@TypeConverters(MapTypeConverter::class) var created: Date,
|
||||
@TypeConverters(MapTypeConverter::class) var dated: Date,
|
||||
var m3: Double,
|
||||
@SerializedName(value = "numberPlate", alternate = ["vehiclePlateNumber"])
|
||||
var numberPlate: String?,
|
||||
|
@ -167,9 +180,10 @@ class RouteInfo(
|
|||
var finished: String,
|
||||
var header: Boolean = false,
|
||||
//tarea 5867
|
||||
var email: String? = null
|
||||
var email: String? = null,
|
||||
var agencyModeFk: Int
|
||||
) : Serializable {
|
||||
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.ExpeditionPrintOut
|
||||
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.ClientTicketSalix
|
||||
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.ExpeditionList
|
||||
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.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.RouteDeliveryList
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||
|
@ -35,6 +42,8 @@ import org.json.JSONObject
|
|||
import retrofit2.Call
|
||||
import retrofit2.Response
|
||||
import java.io.File
|
||||
import java.time.LocalDate
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
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>() }
|
||||
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(
|
||||
listTickets: List<Long>
|
||||
|
||||
|
|
|
@ -6,8 +6,10 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
|||
import com.google.gson.Gson
|
||||
import es.verdnatura.R
|
||||
import es.verdnatura.databinding.FragmentShelvinglogBinding
|
||||
import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
|
||||
import es.verdnatura.domain.notNull
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
import es.verdnatura.presentation.common.itemScanValue
|
||||
import es.verdnatura.presentation.view.component.CustomDialog
|
||||
import es.verdnatura.presentation.view.feature.historicoshelvinglog.adapter.ShelvingLogAdapter
|
||||
import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.LogType
|
||||
|
@ -23,6 +25,7 @@ class ShelvingLogFragment(
|
|||
) {
|
||||
private var adapter: ShelvingLogAdapter? = null
|
||||
private var itemScan = ""
|
||||
private var isitemFkScanned = false
|
||||
|
||||
companion object {
|
||||
fun newInstance(entryPoint: String, logType: LogType) =
|
||||
|
@ -43,17 +46,33 @@ class ShelvingLogFragment(
|
|||
|
||||
}
|
||||
|
||||
private fun setToolBar(title:String) {
|
||||
private fun setToolBar(title: String) {
|
||||
|
||||
if (logType == LogType.SHELVING) {
|
||||
binding.mainToolbar.toolbarTitle.text = title
|
||||
when (logType) {
|
||||
LogType.SHELVING -> {
|
||||
binding.mainToolbar.toolbarTitle.text = title
|
||||
}
|
||||
|
||||
} else {
|
||||
binding.mainToolbar.toolbarTitle.text = title
|
||||
binding.scanInput.setHint(getString(R.string.scanParkingTxt))
|
||||
LogType.PREVIOUS -> {
|
||||
binding.mainToolbar.toolbarTitle.text = title
|
||||
binding.scanInput.setHint(getString(R.string.scanParkingTxt))
|
||||
}
|
||||
|
||||
LogType.ITEMSHELVING -> {
|
||||
binding.mainToolbar.toolbarTitle.text = title
|
||||
binding.scanInput.setHint("Escanea carro o item")
|
||||
}
|
||||
}
|
||||
|
||||
/* if (logType == LogType.SHELVING) {
|
||||
binding.mainToolbar.toolbarTitle.text = title
|
||||
|
||||
} else {
|
||||
binding.mainToolbar.toolbarTitle.text = title
|
||||
binding.scanInput.setHint(getString(R.string.scanParkingTxt))
|
||||
|
||||
}*/
|
||||
|
||||
}
|
||||
|
||||
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 (binding.scanInput.text.toString().isNotEmpty()) {
|
||||
|
||||
binding.scanInput.setText(
|
||||
itemScanValue(
|
||||
binding.scanInput.text.toString(), arrayOf("buy"), "id"
|
||||
).toString()
|
||||
)
|
||||
when (logType) {
|
||||
LogType.SHELVING -> {
|
||||
viewModel.shelvings((binding.scanInput.text.toString()))
|
||||
|
@ -69,6 +93,9 @@ class ShelvingLogFragment(
|
|||
}
|
||||
|
||||
LogType.PREVIOUS -> viewModel.getParkingId((binding.scanInput.text.toString()))
|
||||
LogType.ITEMSHELVING -> {
|
||||
viewModel.shelvings((binding.scanInput.text.toString()))
|
||||
}
|
||||
}
|
||||
itemScan = binding.scanInput.text.toString()
|
||||
}
|
||||
|
@ -95,11 +122,11 @@ class ShelvingLogFragment(
|
|||
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||
setToolBar(getString(R.string.shelvingLog) + ":" + itemScan)
|
||||
if (it.list.isEmpty()) {
|
||||
customDialog.setTitle(getString(R.string.noResults))
|
||||
.setDescription(getString(R.string.noDataLabelScanned))
|
||||
.setOkButton(getString(R.string.close)) {
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
if (logType == LogType.SHELVING) {
|
||||
showMessage()
|
||||
} else {
|
||||
viewModel.getIdFromCodeSalix(itemScan)
|
||||
}
|
||||
} else {
|
||||
openWebViewer(it.list[0].id!!, "shelving")
|
||||
}
|
||||
|
@ -113,21 +140,62 @@ class ShelvingLogFragment(
|
|||
|
||||
}
|
||||
}
|
||||
loadResponseCode.observe(viewLifecycleOwner) { event ->
|
||||
event.getContentIfNotHandled().notNull {
|
||||
setToolBar(getString(R.string.item) + itemScan)
|
||||
if (it == -1) showMessage() else {
|
||||
isitemFkScanned = true
|
||||
openWebViewer(it, "")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
isitemFkScanned = false
|
||||
super.onPause()
|
||||
}
|
||||
|
||||
private fun showMessage() {
|
||||
customDialog.setTitle(getString(R.string.noResults))
|
||||
.setDescription(getString(R.string.noDataLabelScanned))
|
||||
.setOkButton(getString(R.string.close)) {
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
}
|
||||
|
||||
private fun openWebViewer(param: Int, web: String) {
|
||||
|
||||
//variableWeb = if (itemScan is Number) "var-itemFk=$param" else "var-shelvingCode=$param"
|
||||
ma.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(
|
||||
title = R.string.titleWebViewer,
|
||||
),
|
||||
|
||||
entryPoint = Gson().toJson(
|
||||
mutableMapOf(
|
||||
"entryPoint" to param,
|
||||
"web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log"
|
||||
entryPoint = if (logType == LogType.ITEMSHELVING) {
|
||||
Gson().toJson(
|
||||
mutableMapOf(
|
||||
"entryPoint" to param,
|
||||
"web" to "https://grafana.verdnatura.es/d/ce4b8ymvex4owa?${
|
||||
if (isitemFkScanned) "var-itemFk=$param&var-vnToken=${
|
||||
mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
TOKENMULTIMEDIA
|
||||
)
|
||||
}"
|
||||
else "var-shelvingCode=$itemScan"
|
||||
}"
|
||||
)
|
||||
)
|
||||
)
|
||||
} else {
|
||||
Gson().toJson(
|
||||
mutableMapOf(
|
||||
"entryPoint" to param,
|
||||
"web" to "${mobileApplication.dataStoreApp.getServerLilium()}/#/$web/$param/log"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
)
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData
|
|||
import androidx.lifecycle.map
|
||||
import com.google.gson.JsonObject
|
||||
import es.verdnatura.domain.SalixCallback
|
||||
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
|
||||
import es.verdnatura.presentation.base.BaseViewModel
|
||||
import es.verdnatura.presentation.common.Event
|
||||
import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.ShelvingLogSalix
|
||||
|
@ -13,14 +14,18 @@ import es.verdnatura.presentation.view.feature.historicoshelvinglog.model.Shelvi
|
|||
import retrofit2.Response
|
||||
|
||||
class ShelvingLogViewModel(val context: Context) : BaseViewModel(context) {
|
||||
|
||||
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
||||
private val _itemShelvingLogSalixList by lazy { MutableLiveData<ShelvingLogSalixList>() }
|
||||
val loadShelvingLogSalixList: LiveData<Event<ShelvingLogSalixList>> =
|
||||
_itemShelvingLogSalixList.map { Event(it) }
|
||||
|
||||
private val _responseParkingId by lazy { MutableLiveData<Int?>() }
|
||||
val responseParkingId: LiveData<Int?> = _responseParkingId
|
||||
val loadResponseParking: LiveData<Event<Int?>> =_responseParkingId.map { Event(it) }
|
||||
val loadResponseParking: LiveData<Event<Int?>> = _responseParkingId.map { Event(it) }
|
||||
|
||||
private val _responseCode by lazy { MutableLiveData<Int?>() }
|
||||
val responseCode: LiveData<Int?> = _responseCode
|
||||
val loadResponseCode: LiveData<Event<Int?>> = _responseCode.map { Event(it) }
|
||||
|
||||
fun shelvings(vShelvingFK: String) {
|
||||
salix.shelvingsGet("""{"where": {"code": "$vShelvingFK"}}""").enqueue(object :
|
||||
|
@ -41,13 +46,26 @@ class ShelvingLogViewModel(val context: Context) : BaseViewModel(context) {
|
|||
.enqueue(object :
|
||||
SalixCallback<List<JsonObject>>(context) {
|
||||
override fun onSuccess(response: Response<List<JsonObject>>) {
|
||||
_responseParkingId.value = response.body()?.firstOrNull()?.entrySet()?.firstOrNull()?.value?.toString()?.toIntOrNull()
|
||||
_responseParkingId.value =
|
||||
response.body()?.firstOrNull()?.entrySet()?.firstOrNull()?.value?.toString()
|
||||
?.toIntOrNull()
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
fun getIdFromCodeSalix(code: String) {
|
||||
getItemFromBarcodeUseCase.execute(code)
|
||||
.enqueue(object : SalixCallback<Int?>(context) {
|
||||
|
||||
override fun onSuccess(response: Response<Int?>) {
|
||||
_responseCode.value = response.body() ?: -1
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -40,8 +40,10 @@ data class DeviceLogSalix(
|
|||
val versionApp: String,
|
||||
val serialNumber: String?
|
||||
)
|
||||
|
||||
enum class LogType {
|
||||
SHELVING,
|
||||
PREVIOUS,
|
||||
ITEMSHELVING
|
||||
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ class InventoryParkingAdapter(
|
|||
onPasillerosItemClickListener.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(
|
||||
title =
|
||||
R.string.itemSearch
|
||||
R.string.itemSearch
|
||||
), item.itemFk.toString()
|
||||
)
|
||||
}
|
||||
|
@ -126,21 +126,19 @@ class InventoryParkingAdapter(
|
|||
itemShelving.setOnClickListener {
|
||||
onPasillerosItemClickListener.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(
|
||||
title = R.string.titleUbicator)
|
||||
, item.shelvingFk
|
||||
title = R.string.titleUbicator
|
||||
), item.shelvingFk
|
||||
)
|
||||
}
|
||||
itemfkText.setOnClickListener {
|
||||
onPasillerosItemClickListener.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(
|
||||
title = R.string.itemSearch)
|
||||
, item.itemFk.toString()
|
||||
title = R.string.itemSearch
|
||||
), item.itemFk.toString()
|
||||
)
|
||||
}
|
||||
|
||||
if (item.isChecked != null) {
|
||||
println("item ${item.itemFk} checked ${item.isChecked} ")
|
||||
|
||||
when (item.isChecked!!.toInt()) {
|
||||
|
||||
in 1..Int.MAX_VALUE -> itemRowLayout.setBackgroundColor(
|
||||
|
|
|
@ -11,6 +11,7 @@ import es.verdnatura.R
|
|||
import es.verdnatura.databinding.FragmentInventaryBinding
|
||||
import es.verdnatura.domain.ConstAndValues.BUYER
|
||||
import es.verdnatura.domain.ConstAndValues.BUYERID
|
||||
import es.verdnatura.domain.ConstAndValues.ITEMPACKINGTYPEFILTER
|
||||
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
|
||||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
|
@ -18,13 +19,14 @@ import es.verdnatura.presentation.common.OnInvetoryNichoClickListener
|
|||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||
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.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.model.ItemInventaryVO
|
||||
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||
import ir.mirrajabi.searchdialog.SimpleSearchDialogCompat
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||
|
@ -39,10 +41,10 @@ class InventaryFragment :
|
|||
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
|
||||
private var layoutManager: LinearLayoutManager? = null
|
||||
private var firstVisiblePosition = 0
|
||||
private var secondVisiblePosition = 1
|
||||
private lateinit var itemClicked: ItemInventaryVO
|
||||
private val items = ArrayList<SearchBuyerModel>()
|
||||
private lateinit var buyerId: String
|
||||
private var buyerId: Number = -1
|
||||
private var filterItemType: String? = null
|
||||
private var myListBuyers = listOf<Buyer>()
|
||||
|
||||
companion object {
|
||||
fun newInstance() = InventaryFragment()
|
||||
|
@ -57,41 +59,41 @@ class InventaryFragment :
|
|||
|
||||
override fun init() {
|
||||
|
||||
viewModel.itemShelvingBuyerGet()
|
||||
// viewModel.itemShelvingBuyerGet()
|
||||
viewModel.itemShelvingBuyerGetByItemPacking()
|
||||
binding.filterBuyer.text = mobileApplication.dataStoreApp.readDataStoreKey<String>((BUYER))
|
||||
buyerId = mobileApplication.dataStoreApp.readDataStoreKey((BUYERID))
|
||||
if (buyerId.isNotBlank()) {
|
||||
filterItemType =
|
||||
mobileApplication.dataStoreApp.readDataStoreKey<String>((ITEMPACKINGTYPEFILTER))
|
||||
binding.filterItemType.setText(filterItemType!!.firstOrNull()?.toString() ?: "").toString()
|
||||
buyerId = mobileApplication.dataStoreApp.readDataStoreKey<Int>((BUYERID))
|
||||
if (buyerId != -1) {
|
||||
viewModel.getInventory(
|
||||
buyerId.toInt(), mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
||||
buyerId, mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
||||
)
|
||||
}
|
||||
binding.filterBuyer.setOnClickListener {
|
||||
SimpleSearchDialogCompat(
|
||||
context,
|
||||
getString(R.string.compradores),
|
||||
getString(R.string.escribirparteNombre),
|
||||
null,
|
||||
items
|
||||
) { baseSearchDialogCompat, nombre, position ->
|
||||
val distinctPackingTypes = myListBuyers
|
||||
|
||||
binding.filterBuyer.text = (nombre.title)
|
||||
buyerId = nombre.getBuyerId()
|
||||
|
||||
lifecycleScope.launch {
|
||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||
BUYER, nombre.getBuyerNickname()
|
||||
)
|
||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||
BUYERID, nombre.getBuyerId()
|
||||
.filter { filterItemType == getString(R.string.allText) || filterItemType == "" || it.itemPackingTypeFk == filterItemType }
|
||||
.map {
|
||||
NameWithId(
|
||||
it.worker.user.id, it.worker.user.nickname
|
||||
)
|
||||
}
|
||||
viewModel.getInventory(
|
||||
nombre.getBuyerId().toInt(),
|
||||
mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
||||
)
|
||||
baseSearchDialogCompat.dismiss()
|
||||
}.show()
|
||||
.distinct()
|
||||
.sortedBy { it.name }
|
||||
setSearchable(distinctPackingTypes as MutableList<NameWithId>)
|
||||
binding.searchableRecyclerView.visibility = View.VISIBLE
|
||||
binding.searchableRecyclerView.setSearchHint(getString(R.string.BuyerSearch))
|
||||
ma.hideKeyboard(binding.searchableRecyclerView)
|
||||
}
|
||||
|
||||
binding.filterItemType.setOnClickListener {
|
||||
|
||||
binding.searchableRecyclerViewItemType.visibility = View.VISIBLE
|
||||
binding.searchableRecyclerViewItemType.setSearchHint(getString(R.string.selectItemType))
|
||||
}
|
||||
|
||||
customDialogInput = CustomDialogInput(requireContext())
|
||||
customDialog = CustomDialogTwoButtons(requireContext())
|
||||
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemShelvingRadar)
|
||||
|
@ -100,6 +102,59 @@ class InventaryFragment :
|
|||
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() {
|
||||
ma.hideBottomNavigation(View.GONE)
|
||||
val listIcons: ArrayList<ImageView> = ArrayList()
|
||||
|
@ -114,9 +169,9 @@ class InventaryFragment :
|
|||
if (item == iconReload.drawable) {
|
||||
|
||||
firstVisiblePosition = layoutManager?.findFirstVisibleItemPosition() ?: 0
|
||||
if (buyerId.isNotBlank()) {
|
||||
if (buyerId != -1) {
|
||||
viewModel.getInventory(
|
||||
buyerId.toInt(),
|
||||
buyerId,
|
||||
mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
||||
)
|
||||
} else {
|
||||
|
@ -157,7 +212,7 @@ class InventaryFragment :
|
|||
setFilterItem()
|
||||
|
||||
}
|
||||
adapter!!.notifyDataSetChanged()
|
||||
adapter?.notifyDataSetChanged()
|
||||
return@setOnKeyListener false
|
||||
}
|
||||
}
|
||||
|
@ -178,10 +233,31 @@ class InventaryFragment :
|
|||
|
||||
override fun observeViewModel() {
|
||||
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 ->
|
||||
listInventory = ArrayList()
|
||||
listInventoryAux = ArrayList()
|
||||
|
@ -191,6 +267,8 @@ class InventaryFragment :
|
|||
listInventoryAux.add(it)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
adapter = InventoryAdapter(listInventory, object : OnInvetoryNichoClickListener {
|
||||
override fun onInvetoryNichoClickListener(item: ItemInventaryVO) {
|
||||
customDialog.setTitle(item.itemFk.toString() + "\n" + item.longName)
|
||||
|
@ -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.ubicador.model.ItemUbicadorVO
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import timber.log.Timber.d
|
||||
|
||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||
class InventaryParkingFragment(
|
||||
|
@ -77,13 +76,15 @@ class InventaryParkingFragment(
|
|||
override fun getLayoutId(): Int = R.layout.fragment_inventory_parking
|
||||
override fun onPause() {
|
||||
|
||||
try {
|
||||
// try {
|
||||
if (binding.inventoryParkingRecyclerview.layoutManager != null) {
|
||||
val layoutManager =
|
||||
binding.inventoryParkingRecyclerview.layoutManager as LinearLayoutManager
|
||||
scrollPosition = layoutManager.findFirstVisibleItemPosition()
|
||||
} catch (exception: Exception) {
|
||||
d(exception)
|
||||
}
|
||||
/* } catch (ex: Exception) {
|
||||
ex.message!! + "hola".toast(requireContext())
|
||||
}*/
|
||||
|
||||
isBack = true
|
||||
super.onPause()
|
||||
|
@ -193,7 +194,7 @@ class InventaryParkingFragment(
|
|||
)
|
||||
|
||||
} catch (ex: Exception) {
|
||||
d(ex)
|
||||
ex.message!!.toast(requireContext())
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -475,10 +476,14 @@ class InventaryParkingFragment(
|
|||
ex.message!!.toast(requireContext())
|
||||
|
||||
}
|
||||
|
||||
positionShelvingChecking = myListInventory.indexOfFirst { item ->
|
||||
item.shelvingFk.uppercase() == binding.editMatricula.text.toString()
|
||||
positionShelvingChecking = try {
|
||||
myListInventory.indexOfFirst { item ->
|
||||
item.shelvingFk.uppercase() == binding.editMatricula.text.toString()
|
||||
}
|
||||
} catch (ex: Exception) {
|
||||
-1
|
||||
}
|
||||
|
||||
if (positionShelvingChecking != -1) {
|
||||
shelvingSaved =
|
||||
myListInventory[positionShelvingChecking].shelvingFk.uppercase()
|
||||
|
@ -611,7 +616,7 @@ class InventaryParkingFragment(
|
|||
positionShelvingChecking = -1
|
||||
|
||||
} 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.common.Event
|
||||
import es.verdnatura.presentation.common.ItemDiscardSalixShortage
|
||||
import es.verdnatura.presentation.view.feature.calidad.model.Buyer
|
||||
import es.verdnatura.presentation.view.feature.calidad.model.BuyerList
|
||||
import es.verdnatura.presentation.view.feature.calidad.model.BuyerListVO
|
||||
import es.verdnatura.presentation.view.feature.calidad.model.BuyerVO
|
||||
import es.verdnatura.presentation.view.feature.inventario.model.InventaryListVO
|
||||
|
@ -46,6 +48,10 @@ class InventaryViewModel(val context: Context) : BaseViewModel(context) {
|
|||
val buyersList: LiveData<BuyerListVO>
|
||||
get() = _buyersList
|
||||
|
||||
private val _buyersByItemPackingList by lazy { MutableLiveData<BuyerList>() }
|
||||
val buyersByItemPackingList: LiveData<BuyerList>
|
||||
get() = _buyersByItemPackingList
|
||||
|
||||
private val _mistakeDepartmentList by lazy { MutableLiveData<DepartmentMistakeList>() }
|
||||
val mistakeDepartmentList: LiveData<DepartmentMistakeList>
|
||||
get() = _mistakeDepartmentList
|
||||
|
@ -80,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) }
|
||||
|
||||
fun getInventory(buyerFk: Int, warehouseFk: Int) {
|
||||
fun getInventory(buyerFk: Number, warehouseFk: Int) {
|
||||
salix.itemShelvingFilterBuyer(params = arrayListOf(buyerFk, warehouseFk))
|
||||
.enqueue(object : SalixCallback<List<ItemInventaryVO>>(context) {
|
||||
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))
|
||||
.enqueue(object : SalixCallback<List<WorkerFromMistake>>(context) {
|
||||
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.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.provider.Settings
|
||||
import android.view.View.GONE
|
||||
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.TOKEN
|
||||
import es.verdnatura.domain.ConstAndValues.TOKENCREATED
|
||||
import es.verdnatura.domain.ConstAndValues.TOKENMULTIMEDIA
|
||||
import es.verdnatura.domain.ConstAndValues.TTL
|
||||
import es.verdnatura.domain.ConstAndValues.USER
|
||||
import es.verdnatura.domain.ConstAndValues.WORKFORMSELECTED
|
||||
|
@ -41,7 +43,7 @@ import kotlinx.coroutines.runBlocking
|
|||
import java.util.Date
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class LoginFragment(private var imageUri: Uri?) :
|
||||
class LoginFragment() :
|
||||
BaseFragment<FragmentLoginBinding, LoginViewModel>(LoginViewModel::class) {
|
||||
|
||||
private lateinit var customDialogInput: CustomDialogInput
|
||||
|
@ -50,9 +52,23 @@ class LoginFragment(private var imageUri: Uri?) :
|
|||
private var workFormAdapter: WorkFormAdapter? = null
|
||||
private lateinit var customDialogList: CustomDialogList
|
||||
private lateinit var listForms: List<WorkForms>
|
||||
private var imageUri: Uri? = null
|
||||
|
||||
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
|
||||
|
@ -469,6 +485,15 @@ class LoginFragment(private var imageUri: Uri?) :
|
|||
|
||||
}
|
||||
}
|
||||
multimediaTokenResponse.observe(viewLifecycleOwner) {
|
||||
runBlocking {
|
||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||
TOKENMULTIMEDIA,
|
||||
it.multimediaToken.id
|
||||
)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
loginSalixItem.observe(viewLifecycleOwner) {
|
||||
|
@ -499,6 +524,7 @@ class LoginFragment(private var imageUri: Uri?) :
|
|||
app.userPassword = binding.edittextPassword.text.toString()
|
||||
|
||||
viewModel.getAccessTokenConfigs()
|
||||
viewModel.getMultimedaToken()
|
||||
}
|
||||
}
|
||||
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.LoginDevice
|
||||
import es.verdnatura.presentation.view.feature.login.model.LoginSalixVO
|
||||
import es.verdnatura.presentation.view.feature.login.model.MultimediaTokenResponse
|
||||
import es.verdnatura.presentation.view.feature.login.model.OperatorAdd
|
||||
import es.verdnatura.presentation.view.feature.login.model.OperatorSalix
|
||||
import es.verdnatura.presentation.view.feature.login.model.RenewToken
|
||||
|
@ -58,13 +59,16 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
get() = _workerOperator
|
||||
|
||||
private val _accessConfigSalixList by lazy { MutableLiveData<AccessConfigSalixList>() }
|
||||
|
||||
private val _renewTokenResponse by lazy { MutableLiveData<RenewToken>() }
|
||||
val renewTokenResponse: LiveData<RenewToken>
|
||||
get() = _renewTokenResponse
|
||||
val loadAccessConfigSalixList: LiveData<Event<AccessConfigSalixList>> =
|
||||
_accessConfigSalixList.map { Event(it) }
|
||||
|
||||
private val _multimediaTokenResponse by lazy { MutableLiveData<MultimediaTokenResponse>() }
|
||||
val multimediaTokenResponse: LiveData<MultimediaTokenResponse>
|
||||
get() = _multimediaTokenResponse
|
||||
|
||||
fun loginSalix(user: String, password: String) {
|
||||
salix.login(LoginSalixVO(user, password))
|
||||
.enqueue(object : SalixCallback<LoginSalixVO>(context) {
|
||||
|
@ -285,6 +289,21 @@ class LoginViewModel(val context: Context) : BaseViewModel(context) {
|
|||
})
|
||||
}
|
||||
|
||||
fun getMultimedaToken(
|
||||
) {
|
||||
|
||||
salix.getMultimediaToken()
|
||||
.enqueue(object : SalixCallback<MultimediaTokenResponse>(context) {
|
||||
|
||||
override fun onSuccess(response: Response<MultimediaTokenResponse>) {
|
||||
_multimediaTokenResponse.value = response.body()?.let {
|
||||
it
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
fun renewToken(
|
||||
) {
|
||||
salix.renewToken().enqueue(object : SalixCallback<RenewToken>(context) {
|
||||
|
|
|
@ -18,8 +18,8 @@ data class WorkerData(
|
|||
val labelerFk: Int,
|
||||
val sectorFk: Int,
|
||||
val sector: Sector?,
|
||||
val printer: Printer,
|
||||
val train: Train,
|
||||
val printer: Printer?,
|
||||
val train: Train?,
|
||||
val id: Int,
|
||||
val name: String,
|
||||
val nickname: String,
|
||||
|
@ -116,3 +116,11 @@ class LoginDevice(
|
|||
data class NameWorker(
|
||||
val firstName: String, val lastName: String
|
||||
)
|
||||
|
||||
data class MultimediaTokenResponse(
|
||||
val multimediaToken: MultimediaToken
|
||||
)
|
||||
|
||||
data class MultimediaToken(
|
||||
val id: String,
|
||||
)
|
|
@ -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.LogExpeditionFragment
|
||||
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.TicketsFragment
|
||||
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.ticket.fragment.TicketAdvanceFragment
|
||||
import es.verdnatura.presentation.view.feature.ubicador.fragment.AutomaticAddItemFragment
|
||||
import es.verdnatura.presentation.view.feature.ubicador.fragment.UbicadorFragmentNew
|
||||
import es.verdnatura.presentation.view.feature.ubicador.fragment.UbicadorFragment6869
|
||||
import es.verdnatura.presentation.view.feature.workermistake.fragment.PackingMistakeFragment
|
||||
import es.verdnatura.presentation.view.feature.workermistake.fragment.WorkermistakeFragment
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
|
@ -142,7 +143,6 @@ import kotlinx.coroutines.Dispatchers
|
|||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import timber.log.Timber.d
|
||||
import java.util.Date
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.concurrent.ScheduledExecutorService
|
||||
|
@ -543,24 +543,23 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
getString(R.string.titleChecker) -> {
|
||||
|
||||
// Ya no se utiliza : addFragmentOnTop(ControladorFragment.newInstance())
|
||||
// if (mobileApplication.userId == 19591) {
|
||||
|
||||
if (mobileApplication.userId == 19591) {
|
||||
println("Revisando nueva")
|
||||
addFragmentOnTop(
|
||||
CollectionFragmentChecker.newInstance(
|
||||
CollectionVO(collectionFk = 0),
|
||||
type = CONTROLADOR
|
||||
)
|
||||
addFragmentOnTop(
|
||||
CollectionFragmentChecker.newInstance(
|
||||
CollectionVO(collectionFk = 0),
|
||||
type = CONTROLADOR
|
||||
)
|
||||
} else {
|
||||
println("Revisando vieja")
|
||||
addFragmentOnTop(
|
||||
CollectionFragment.newInstance(
|
||||
CollectionVO(collectionFk = 0),
|
||||
type = CONTROLADOR
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
/* } else {
|
||||
println("Revisando vieja")
|
||||
addFragmentOnTop(
|
||||
CollectionFragment.newInstance(
|
||||
CollectionVO(collectionFk = 0),
|
||||
type = CONTROLADOR
|
||||
)
|
||||
)
|
||||
}*/
|
||||
/* addFragmentOnTop(
|
||||
CollectionFragment.newInstance(
|
||||
CollectionVO(collectionFk = 0),
|
||||
|
@ -674,8 +673,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
}
|
||||
|
||||
getString(R.string.titleUbicator) -> {
|
||||
addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint))
|
||||
//addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint))
|
||||
addFragmentOnTop(UbicadorFragment6869.newInstance(entryPoint))
|
||||
}
|
||||
//Tarea 6869
|
||||
/* getString(R.string.ubicatorNew) -> {
|
||||
addFragmentOnTop(UbicadorFragment6869.newInstance(entryPoint))
|
||||
}*/
|
||||
|
||||
//Tarea 7855
|
||||
getString(R.string.scanPreparedExpedition) -> {
|
||||
|
@ -755,7 +759,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
getString(R.string.titleShelvingHistorical) -> {
|
||||
addFragmentOnTop(ItemShelvingLogFragment.newInstance(itemTitle))
|
||||
|
||||
}
|
||||
//Tarea 7920
|
||||
getString(R.string.titleShelvingHistNew) -> {
|
||||
addFragmentOnTop(ShelvingLogFragment.newInstance(itemTitle, LogType.ITEMSHELVING))
|
||||
}
|
||||
|
||||
getString(R.string.titleLogShelving) -> {
|
||||
|
@ -823,7 +830,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
}
|
||||
|
||||
getString(R.string.selfConsumption) -> {
|
||||
addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint, true))
|
||||
// addFragmentOnTop(UbicadorFragmentNew.newInstance(entryPoint, true))
|
||||
addFragmentOnTop(UbicadorFragment6869.newInstance(entryPoint, true))
|
||||
}
|
||||
|
||||
getString(R.string.titlePackingHolland) -> {
|
||||
|
@ -944,6 +952,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
addFragmentOnTop(PickerHelperFragment.newInstance(itemTitle))
|
||||
}
|
||||
|
||||
getString(R.string.salarySupplementTitle) -> {
|
||||
addFragmentOnTop(SalaryComplementFragment.newInstance(itemTitle))
|
||||
}
|
||||
|
||||
"PREITEMPICKERTEST" -> {
|
||||
addFragmentOnTop(
|
||||
CollectionFragmentPickerPreviousNew.newInstance(
|
||||
|
@ -986,7 +998,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
}
|
||||
} catch (ex: Exception) {
|
||||
d("$ex")
|
||||
ex.message!!.toast(this)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1048,7 +1060,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
) {
|
||||
when (type) {
|
||||
PREITEMPICKERTEST -> {
|
||||
println("test presacador")
|
||||
//addFragmentOnTop(EndSacadorFragment.newInstance(collection, type))
|
||||
addFragmentOnTop(
|
||||
SectorCollectionReserveFragment.newInstance(
|
||||
|
@ -1217,7 +1228,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
userFk = (application as MobileApplication).userId!!
|
||||
)
|
||||
} 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.presentation.base.BaseFragment
|
||||
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.feature.inventario.fragment.SearchSupplierModel
|
||||
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 ir.mirrajabi.searchdialog.SimpleSearchDialogCompat
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||
class SupplierFragment(
|
||||
var entryPoint: String = ""
|
||||
|
||||
|
@ -31,8 +29,7 @@ class SupplierFragment(
|
|||
private var pasillerosItemClickListener: OnPasillerosItemClickListener? = null
|
||||
private var layoutManager: LinearLayoutManager? = null
|
||||
private var onBack = false
|
||||
private val suppliers = ArrayList<SearchSupplierModel>()
|
||||
private val entries = ArrayList<SearchSupplierModel>()
|
||||
private val entries = ArrayList<EntrySalix>()
|
||||
private lateinit var customDialog: CustomDialog
|
||||
|
||||
companion object {
|
||||
|
@ -59,27 +56,14 @@ class SupplierFragment(
|
|||
|
||||
override fun init() {
|
||||
binding.filterSupplier.setOnClickListener {
|
||||
SimpleSearchDialogCompat(
|
||||
context,
|
||||
getString(R.string.suppliers),
|
||||
getString(R.string.escribirparteNombre),
|
||||
null,
|
||||
suppliers
|
||||
) { baseSearchDialogCompat, nombre, position ->
|
||||
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()
|
||||
binding.searchableSuplierRecyclerView.visibility = View.VISIBLE
|
||||
binding.searchableSuplierRecyclerView.setSearchHint(getString(R.string.supplierSearch))
|
||||
|
||||
}
|
||||
binding.filterEntry.setOnClickListener {
|
||||
binding.searchableEntriesRecyclerView.visibility = View.VISIBLE
|
||||
binding.searchableEntriesRecyclerView.setSearchHint(getString(R.string.entrySearch))
|
||||
|
||||
}
|
||||
customDialog = CustomDialog(requireContext())
|
||||
ma.hideBottomNavigation(View.GONE)
|
||||
|
@ -89,6 +73,64 @@ class SupplierFragment(
|
|||
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() {
|
||||
binding.mainToolbar.toolbarTitle.text = entryPoint
|
||||
}
|
||||
|
@ -103,41 +145,18 @@ class SupplierFragment(
|
|||
|
||||
private fun setEntryDialog() {
|
||||
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() {
|
||||
with(viewModel) {
|
||||
supplierList.observe(viewLifecycleOwner) {
|
||||
createSupplierList(it.list)
|
||||
supplierList.observe(viewLifecycleOwner) { item ->
|
||||
setSearchable(item.list.map {
|
||||
NameWithId(
|
||||
it.id!!,
|
||||
it.name!!
|
||||
)
|
||||
} as MutableList<NameWithId>)
|
||||
}
|
||||
entryList.observe(viewLifecycleOwner) {
|
||||
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>) {
|
||||
list.sortedBy { it.travel?.landed }
|
||||
entries.clear()
|
||||
list.forEach { entry ->
|
||||
if (!entry.isError) {
|
||||
|
||||
try {
|
||||
entries.add(
|
||||
SearchSupplierModel(
|
||||
entry.id.toString() + "->" + (entry.travel?.landed),
|
||||
id = entry.id.toString(),
|
||||
observation = entry.observation
|
||||
)
|
||||
)
|
||||
|
||||
} catch (ex: Exception) {
|
||||
ma.messageWithSound(
|
||||
message = ex.message.toString(),
|
||||
isError = true,
|
||||
isPlayed = true
|
||||
)
|
||||
}
|
||||
}
|
||||
if (list.isNotEmpty() && !list[0].isError) {
|
||||
setSearchableEntries(list.map { entry ->
|
||||
NameWithId(
|
||||
entry.id!!,
|
||||
entry.id.toString() + "->" + (entry.travel?.landed)
|
||||
)
|
||||
} as MutableList<NameWithId>)
|
||||
entries.addAll(list.sortedBy { it.travel?.landed })
|
||||
}
|
||||
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()
|
||||
calendar.add(Calendar.DAY_OF_YEAR, 0)
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package es.verdnatura.presentation.view.feature.paletizador.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
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.view.feature.paletizador.model.ItemExpeditionTruckVO
|
||||
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 onPalletClickListener: OnPalletClickListener,
|
||||
private val onComprobarPalletViewClickListener: OnComprobarPalletViewClickListener,
|
||||
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 {
|
||||
this.context = parent.context
|
||||
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) {
|
||||
holder.bind(items[position])
|
||||
holder.binding.root.setOnClickListener {
|
||||
onPalletClickListener.onPalletClickListener(itemExpeditionTruckVO,items[position])
|
||||
onPalletClickListener.onPalletClickListener(itemExpeditionTruckVO, items[position])
|
||||
}
|
||||
holder.binding.root.setOnLongClickListener {
|
||||
onComprobarPalletViewClickListener.onComprobarPalletViewClickListener(itemExpeditionTruckVO,items[position])
|
||||
onComprobarPalletViewClickListener.onComprobarPalletViewClickListener(
|
||||
itemExpeditionTruckVO,
|
||||
items[position]
|
||||
)
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
inner class ItemHolder(
|
||||
val binding: ItemExpeditionpalletRowBinding
|
||||
) : RecyclerView.ViewHolder(binding.root){
|
||||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
private val res = binding.root.context.resources
|
||||
fun bind(item: ItemPalletVO) {
|
||||
binding.apply {
|
||||
this.item = item
|
||||
if (item.Rutas != 1){
|
||||
expeditionPalletRutas.setTextColor(ContextCompat.getColor(context!!, R.color.verdnatura_red))
|
||||
}else {
|
||||
expeditionPalletRutas.setTextColor(ContextCompat.getColor(context!!, R.color.verdnatura_white))
|
||||
if (item.Rutas != 1) {
|
||||
expeditionPalletRutas.setTextColor(
|
||||
ContextCompat.getColor(
|
||||
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()) {
|
||||
try {
|
||||
val itemScaned = itemScanValue(
|
||||
textScanned_filterDouble(binding.editMatricula.text.toString()),
|
||||
textScannedFilterDouble(binding.editMatricula.text.toString()),
|
||||
arrayOf("expedition"),
|
||||
"id"
|
||||
).toString().toLong()
|
||||
|
@ -104,7 +104,7 @@ class ExpeditionDeleteFragment(var title: String = "") :
|
|||
adapter!!.updateItems(listExpeditions.map { it.expeditionFk.toLong() } as ArrayList<Long>)
|
||||
} else {
|
||||
ma.messageWithSound(
|
||||
message = "Caja ya escaneada",
|
||||
message = getString(R.string.boxScanned),
|
||||
isError = true,
|
||||
isPlayed = true,
|
||||
isToasted = true
|
||||
|
|
|
@ -44,7 +44,6 @@ class ExpeditionPalletDetailFragment(
|
|||
override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet_detail
|
||||
|
||||
override fun init() {
|
||||
println("ExpeditionPalletDetail")
|
||||
customDialog = CustomDialog(requireContext())
|
||||
binding.expeditionPalletDetailPallet.text =
|
||||
buildString {
|
||||
|
|
|
@ -59,7 +59,6 @@ class ExpeditionPalletFragment(
|
|||
override fun getLayoutId(): Int = R.layout.fragment_expedition_pallet
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
println("ExpeditionPalletFragment")
|
||||
mperror = MediaPlayer.create((activity as MainActivity), R.raw.error)
|
||||
mpok = MediaPlayer.create((activity as MainActivity), R.raw.ok)
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -214,8 +213,6 @@ class ExpeditionPalletFragment(
|
|||
if (mperror != null) mperror!!.start()
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
customDialogList.setValue("")
|
||||
ma.hideKeyboard(customDialogList.getEditText())
|
||||
|
|
|
@ -93,7 +93,7 @@ class ExpeditionPreparedStateFragment(var codeState: String = "PREPARED", var ti
|
|||
if (binding.editMatricula.text.toString().isNotEmpty()) {
|
||||
try {
|
||||
val itemScaned = itemScanValue(
|
||||
textScanned_filterDouble(binding.editMatricula.text.toString()),
|
||||
textScannedFilterDouble(binding.editMatricula.text.toString()),
|
||||
arrayOf("expedition"),
|
||||
"id"
|
||||
).toString().toLong()
|
||||
|
|
|
@ -71,7 +71,6 @@ class ExpeditionScanFragment(
|
|||
}
|
||||
|
||||
override fun init() {
|
||||
println("ExpeditionScanFragment")
|
||||
customDialog = CustomDialog(requireContext())
|
||||
customDialogList = CustomDialogList(requireContext())
|
||||
customDialogTwoButtons = CustomDialogTwoButtons(requireContext())
|
||||
|
@ -80,7 +79,11 @@ class ExpeditionScanFragment(
|
|||
)
|
||||
ma.hideBottomNavigation(View.GONE)
|
||||
binding.mainToolbar.toolbarTitle.text =
|
||||
getString(R.string.expeditionInfo, itemExpeditionTruckVO?.eta.orEmpty(), itemExpeditionTruckVO?.description.orEmpty())
|
||||
getString(
|
||||
R.string.expeditionInfo,
|
||||
itemExpeditionTruckVO?.eta.orEmpty(),
|
||||
itemExpeditionTruckVO?.description.orEmpty()
|
||||
)
|
||||
setToolBar()
|
||||
setEvents()
|
||||
viewModel.expeditionScanList(
|
||||
|
@ -121,7 +124,6 @@ class ExpeditionScanFragment(
|
|||
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
|
||||
}
|
||||
|
||||
|
||||
override fun observeViewModel() {
|
||||
with(viewModel) {
|
||||
loadExpeditionScanList.observe(viewLifecycleOwner) { event ->
|
||||
|
|
|
@ -73,6 +73,15 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
|
|||
|
||||
)
|
||||
)
|
||||
/* if (userId == 19591)
|
||||
_pasillerositem.add(
|
||||
PasillerosItemVO(
|
||||
R.drawable.ic_dashboard_black_24dp,
|
||||
R.string.ubicatorNew,
|
||||
R.string.titleUbicatorDescrip
|
||||
|
||||
)
|
||||
)*/
|
||||
|
||||
//tarea 7855
|
||||
_pasillerositem.add(
|
||||
|
@ -513,6 +522,14 @@ class PasilleroViewModel(context: Context) : BaseViewModel(context) {
|
|||
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(
|
||||
PasillerosItemVO(
|
||||
R.drawable.revision_icon,
|
||||
R.string.titleShelvingHistorical,
|
||||
R.string.titleShelvingHistDescrip
|
||||
R.string.titleShelvingHistNew,
|
||||
R.string.titleShelvingHistNew
|
||||
)
|
||||
)
|
||||
|
||||
/* _pasillerositem.add(
|
||||
PasillerosItemVO(
|
||||
R.drawable.revision_icon,
|
||||
R.string.titleShelvingHistorical,
|
||||
R.string.titleShelvingHistDescrip
|
||||
)
|
||||
)*/
|
||||
|
||||
_pasillerositem.add(
|
||||
PasillerosItemVO(
|
||||
R.drawable.ic_history_orange,
|
||||
|
|
|
@ -70,7 +70,7 @@ class PreControladorFragment :
|
|||
"id"
|
||||
).toString().toInt(),
|
||||
print = false,
|
||||
source = type
|
||||
source = if (type == "PRECHECKER") "PREVIOUS_CONTROL" else type
|
||||
)
|
||||
} catch (ex: Exception) {
|
||||
getString(R.string.errorInput)
|
||||
|
|
|
@ -60,19 +60,12 @@ class SectorCollectionReserveFragment(
|
|||
}
|
||||
|
||||
override fun init() {
|
||||
println("hasToAdd $hasToAdd")
|
||||
|
||||
customDialogList = CustomDialogList(requireContext())
|
||||
ma.hideBottomNavigation(View.GONE)
|
||||
binding.mainToolbar.toolbarTitle.text = title
|
||||
setEvents()
|
||||
setToolBar()
|
||||
|
||||
println("reserve collec $collectionFk")
|
||||
println("reserve collec onBack$onBack")
|
||||
|
||||
if (!onBack) {
|
||||
println("check parkings $collectionFk")
|
||||
checkParkingsToPicker()
|
||||
} else {
|
||||
if (onBack) {
|
||||
|
|
|
@ -2,14 +2,12 @@ package es.verdnatura.presentation.view.feature.restaurant
|
|||
|
||||
import android.view.View
|
||||
import android.widget.Button
|
||||
import com.google.gson.Gson
|
||||
import com.google.zxing.BarcodeFormat
|
||||
import com.journeyapps.barcodescanner.BarcodeEncoder
|
||||
import es.verdnatura.R
|
||||
import es.verdnatura.databinding.ActivityRestaurantViewBinding
|
||||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseActivity
|
||||
import es.verdnatura.presentation.view.feature.restaurant.model.UserMenu
|
||||
|
||||
class RestaurantActivity : BaseActivity<ActivityRestaurantViewBinding>() {
|
||||
|
||||
|
@ -33,16 +31,27 @@ class RestaurantActivity : BaseActivity<ActivityRestaurantViewBinding>() {
|
|||
binding.imageQr.visibility = View.VISIBLE
|
||||
binding.txtOption.visibility = View.VISIBLE
|
||||
binding.txtOption.text = (view as Button).text.toString()
|
||||
val userMenu = UserMenu(
|
||||
user = mobileApplication.userId!!,
|
||||
menu_id = view.tag.toString().toInt(),
|
||||
menu = view.text.toString(),
|
||||
name = mobileApplication.userName!!
|
||||
)
|
||||
/* val userMenu = UserMenu(
|
||||
user = mobileApplication.userId!!,
|
||||
menu_id = view.tag.toString().toInt(),
|
||||
menu = view.text.toString(),
|
||||
name = mobileApplication.userName!!
|
||||
)*/
|
||||
|
||||
val userMenuJson = StringBuilder()
|
||||
.append("{")
|
||||
.append("\"user\":").append(mobileApplication.userId).append(",") // Sin comillas
|
||||
.append("\"menu_id\":").append(view.tag.toString().toInt()).append(",") // Sin comillas
|
||||
.append("\"menu\":\"").append(view.text).append("\",") // Con comillas porque es texto
|
||||
.append("\"name\":\"").append(mobileApplication.userName)
|
||||
.append("\"") // Con comillas porque es texto
|
||||
.append("}")
|
||||
.toString()
|
||||
|
||||
try {
|
||||
val barcodeEncoder = BarcodeEncoder()
|
||||
val bitmap = barcodeEncoder.encodeBitmap(
|
||||
Gson().toJson(userMenu),
|
||||
userMenuJson,
|
||||
BarcodeFormat.QR_CODE,
|
||||
400,
|
||||
400
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package es.verdnatura.presentation.view.feature.restaurant.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class UserMenu(
|
||||
val user: Int,
|
||||
val menu_id: Int,
|
||||
val menu: String,
|
||||
val name: String
|
||||
@SerializedName("user") val user: Int,
|
||||
@SerializedName("menu_id") val menu_id: Int,
|
||||
@SerializedName("menu") val menu: String,
|
||||
@SerializedName("name") val name: String
|
||||
)
|
|
@ -138,15 +138,6 @@ class StopMapListFragment(
|
|||
with(viewModel) {
|
||||
loadStopMapTruckList.observe(viewLifecycleOwner) { event ->
|
||||
event.getContentIfNotHandled().notNull {
|
||||
for (item in it.list) {
|
||||
println("llista")
|
||||
println("llista $item")
|
||||
println("llista addressFk ${item.addressFk}")
|
||||
println("llista id" + item.id)
|
||||
println("llista address" + item.address)
|
||||
println("llista client id" + item.address?.address?.client)
|
||||
println("llista mobile " + item.address?.address?.mobile)
|
||||
}
|
||||
showRoadMapList(it)
|
||||
}
|
||||
}
|
||||
|
@ -189,8 +180,6 @@ class StopMapListFragment(
|
|||
}
|
||||
|
||||
TruckAction.GOTOMAPS -> {
|
||||
println("locationMaps")
|
||||
|
||||
val uri =
|
||||
"geo:0,0?q=" + item.address?.address?.nickname + " " + item.address?.address?.street + " " + item.address?.address?.city + " " + item.address?.address?.postalCode
|
||||
val locationIntent = Intent(Intent.ACTION_VIEW, Uri.parse(uri))
|
||||
|
|
|
@ -3,6 +3,7 @@ package es.verdnatura.presentation.view.feature.sacador.fragment
|
|||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.text.InputType
|
||||
import android.util.Log.d
|
||||
import android.view.View
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import android.widget.ImageView
|
||||
|
@ -242,7 +243,12 @@ class SacadorFragmentNew(
|
|||
} else {
|
||||
if (it.response.isNotBlank()) {
|
||||
if (collectionsList.isNotEmpty()) {
|
||||
addCollectionToList(it.response.toInt())
|
||||
try {
|
||||
addCollectionToList(it.response.toInt())
|
||||
} catch (ex: Exception) {
|
||||
d("vn", ex.message.toString())
|
||||
}
|
||||
|
||||
} else {
|
||||
callBack(type)
|
||||
}
|
||||
|
@ -258,7 +264,6 @@ class SacadorFragmentNew(
|
|||
}
|
||||
|
||||
"PREITEMPICKERTEST" -> {
|
||||
println("SacadorFragmentNew sectorCollectionGET")
|
||||
// viewModel.sectorCollectionGet()
|
||||
viewModel.sectorCollectionPartial()
|
||||
}
|
||||
|
|
|
@ -68,7 +68,8 @@ data class Sale(
|
|||
var isPicked: Int = 0,
|
||||
var accumulatedQuantity: Int = 0,
|
||||
var totalItemShelving: Int = 0,
|
||||
var currentItemShelving: Int = 0
|
||||
var currentItemShelving: Int = 0,
|
||||
var stateCode: String? = ""
|
||||
|
||||
)
|
||||
|
||||
|
@ -89,7 +90,9 @@ class CollectionVO(
|
|||
var errorMessage: String = "",
|
||||
var itemPackingTypeFk: String = "",
|
||||
var rgb: String? = null,
|
||||
var ticketTotalCount: Int? = null
|
||||
var ticketTotalCount: Int? = null,
|
||||
var parkingCode: String? = null,
|
||||
var idAdvanced: Boolean? = null
|
||||
)
|
||||
|
||||
class CollectionSalix(
|
||||
|
@ -110,8 +113,10 @@ class TicketSalix(
|
|||
var agencyName: String = "",
|
||||
var salesPersonFk: String = "",
|
||||
var sales: List<SaleVO> = listOf(),
|
||||
@SerializedName(value = "observations", alternate = ["observaciones"])
|
||||
var observations: String = "",
|
||||
@SerializedName(
|
||||
value = "observations",
|
||||
alternate = ["observaciones"]
|
||||
) var observations: String = "",
|
||||
|
||||
)
|
||||
|
||||
|
@ -154,7 +159,7 @@ class SaleVO(
|
|||
var cel1: String = "",
|
||||
var cel2: String = "",
|
||||
var cel3: String = "",
|
||||
var saleGroupFk: String = "",
|
||||
var saleGroupFk: String? = "",
|
||||
var picked: String? = "",
|
||||
var isParent: Boolean = false,
|
||||
var totalSales: Int = 0,
|
||||
|
@ -162,7 +167,9 @@ class SaleVO(
|
|||
var code: String? = "",
|
||||
var hasMistake: Any? = false,
|
||||
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 salesPersonFk: String = "",
|
||||
var sales: List<SaleVO> = listOf(),
|
||||
@SerializedName(value = "observations", alternate = ["observaciones"])
|
||||
var observations: String = "",
|
||||
@SerializedName(
|
||||
value = "observations",
|
||||
alternate = ["observaciones"]
|
||||
) var observations: String = "",
|
||||
var isAdvanced: Int? = 0,
|
||||
var parkingCode: String? = ""
|
||||
|
||||
)
|
||||
)
|
||||
|
||||
data class CollectionIdSalix(
|
||||
var id: Int
|
||||
|
@ -273,8 +284,7 @@ class PlacementSupplyListVO(
|
|||
)
|
||||
|
||||
class MistakeTypeVO(
|
||||
var id: Int,
|
||||
var description: String
|
||||
var id: Int, var description: String
|
||||
)
|
||||
|
||||
class MistakeTypeListVO(
|
||||
|
@ -286,16 +296,11 @@ class TicketStateList(
|
|||
)
|
||||
|
||||
data class TicketStateSalix(
|
||||
val ticketFk: Int,
|
||||
val alertLevel: Int,
|
||||
val code: String,
|
||||
val stateFk: Int,
|
||||
val userFk: Int
|
||||
val ticketFk: Int, val alertLevel: Int, val code: String, val stateFk: Int, val userFk: Int
|
||||
) {
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
var created: String = ""
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
get() {
|
||||
@RequiresApi(Build.VERSION_CODES.O) get() {
|
||||
return field.isoToString()
|
||||
}
|
||||
|
||||
|
|
|
@ -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(
|
||||
0,
|
||||
itemScanValue(
|
||||
textScanned_filterDouble(binding.editMatricula.text.toString()),
|
||||
textScannedFilterDouble(binding.editMatricula.text.toString()),
|
||||
arrayOf("buy"),
|
||||
"more"
|
||||
).toString().toLong()
|
||||
|
@ -161,7 +161,7 @@ class AutomaticAddItemFragment(
|
|||
customDialogList.setDescription(
|
||||
getString(R.string.scanShelvingsLocate)
|
||||
).setOkButton(getString(R.string.locate)) {
|
||||
|
||||
listItems.clear()
|
||||
listShelvings.forEach {
|
||||
viewModel.itemShelvingMakeMulti(
|
||||
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 es.verdnatura.R
|
||||
import es.verdnatura.databinding.FragmentUbicadorBinding
|
||||
import es.verdnatura.domain.ConstAndValues
|
||||
import es.verdnatura.domain.ConstAndValues.WAREHOUSEFK
|
||||
import es.verdnatura.domain.isShelving
|
||||
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.OnPasillerosItemClickListener
|
||||
import es.verdnatura.presentation.common.OnVisibleClickListenerNew
|
||||
import es.verdnatura.presentation.common.PrinterDialogManager
|
||||
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||
import es.verdnatura.presentation.common.hideKeyboard
|
||||
import es.verdnatura.presentation.common.itemScanValue
|
||||
import es.verdnatura.presentation.view.component.CustomDialog
|
||||
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.ubicador.adapter.UbicadorAdapterNew
|
||||
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
|
||||
import org.json.JSONObject
|
||||
import java.time.LocalDate
|
||||
import java.time.format.DateTimeFormatter
|
||||
import kotlin.math.ceil
|
||||
|
||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||
class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewModel>(
|
||||
|
@ -117,7 +124,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
if (shelvingFk.isNotEmpty()) {
|
||||
isShelvinLogfromMainScreen = false
|
||||
setIconsActions(true)
|
||||
setIcons()
|
||||
//setIcons()
|
||||
binding.mainToolbar.toolbarTitle.text = shelvingFk
|
||||
viewModel.itemShelvingListNew(shelvingFk)
|
||||
binding.mainToolbar.switchButton.visibility = VISIBLE
|
||||
|
@ -125,7 +132,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
isShelvinLogfromMainScreen = true
|
||||
setIconsActions(false)
|
||||
//Tarea 7805
|
||||
setIcons(true)
|
||||
// setIcons(true)
|
||||
}
|
||||
super.init()
|
||||
}
|
||||
|
@ -137,7 +144,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
} else {
|
||||
GONE
|
||||
}
|
||||
|
||||
setIcons(!showIcons)
|
||||
}
|
||||
|
||||
private fun setDialogs() {
|
||||
|
@ -216,19 +223,22 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
override fun onOptionsItemSelected(item: Drawable) {
|
||||
|
||||
when (item) {
|
||||
iconAdd.drawable -> showAddItemNew(
|
||||
isEditItem = false, null
|
||||
)
|
||||
iconAdd.drawable -> {
|
||||
showAddItemNew(
|
||||
isEditItem = false, null
|
||||
)
|
||||
}
|
||||
|
||||
iconAddMultiple.drawable ->
|
||||
iconAddMultiple.drawable -> {
|
||||
ma.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(
|
||||
title = R.string.addItemMultipleShelving,
|
||||
), entryPoint = getString(R.string.addItemMultipleShelving)
|
||||
)
|
||||
}
|
||||
|
||||
iconReload.drawable -> {
|
||||
|
||||
listItems.clear()
|
||||
if (shelvingFk.isNotBlank()) {
|
||||
binding.editPrioridad.setText("")
|
||||
viewModel.itemShelvingListNew(
|
||||
|
@ -247,7 +257,8 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
customDialogReset.setTitle(getString(R.string.checkItemShelvingDescrip))
|
||||
.setDescription(getString(R.string.checkItemShelving))
|
||||
.setOkButton(getString(R.string.ok)) {
|
||||
viewModel.itemShelvingDeleteChecked(shelvingFk)
|
||||
if (listItems.isNotEmpty())
|
||||
viewModel.itemShelvingDeleteChecked(listItems[0].shelvingFk!!)
|
||||
customDialogReset.dismiss()
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
customDialogReset.dismiss()
|
||||
|
@ -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 (binding.editMatricula.text.toString().isNotEmpty()) {
|
||||
setIconsActions(true)
|
||||
setIcons()
|
||||
//setIcons()
|
||||
if (!modeCheckUbication || (modeCheckUbication && (binding.editMatricula.text.toString()
|
||||
.isShelving()) && !binding.editMatricula.text!![0].isDigit())
|
||||
) {
|
||||
|
@ -339,6 +350,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
|
||||
|
||||
binding.automaticImg.setOnClickListener {
|
||||
|
||||
if (shelvingFk.isNotBlank()) ma.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(title = R.string.titleAuto), entryPoint = shelvingFk
|
||||
)
|
||||
|
@ -420,10 +432,13 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
customDialogDelete.setTitle(getString(R.string.empty))
|
||||
.setDescription(getString(R.string.operationNoReturn))
|
||||
.setOkButton(getString(R.string.empty)) {
|
||||
if (listItems.isNotEmpty()) {
|
||||
viewModel.clearShelvingList(
|
||||
//Tarea 7920
|
||||
listItems[0].shelvingFk?.toString() ?: shelvingFk
|
||||
)
|
||||
}
|
||||
|
||||
viewModel.clearShelvingList(
|
||||
shelvingFk
|
||||
)
|
||||
listItems.forEach {
|
||||
it.stickers = 0
|
||||
it.visible = 0
|
||||
|
@ -454,16 +469,24 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
parking = customDialogInput.getValue()
|
||||
//tarea 6964
|
||||
viewModel.hasItemOlder(
|
||||
shelvingFk, customDialogInput.getValue(),
|
||||
shelvingFk, customDialogInput.getValue(), itemFk = null, action = null
|
||||
)
|
||||
|
||||
customDialogInput.dismiss()
|
||||
}
|
||||
|
||||
private fun customDialogActionChange() {
|
||||
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()
|
||||
|
||||
customDialogInput.dismiss()
|
||||
|
@ -519,21 +542,28 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
with(viewModel) {
|
||||
|
||||
loadShelvingListNew.observe(viewLifecycleOwner) { event ->
|
||||
event.getContentIfNotHandled().notNull {
|
||||
|
||||
listItems.clear()
|
||||
event.getContentIfNotHandled().notNull { it ->
|
||||
if (isShelvinLogfromMainScreen) {
|
||||
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.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 =
|
||||
shelvingFk.uppercase() + getString(R.string.pUppercase) + parking + getString(
|
||||
R.string.label
|
||||
) + 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()) {
|
||||
listItems = listItems.asReversed()
|
||||
|
@ -572,6 +602,10 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
}
|
||||
responseLogAdd.observe(viewLifecycleOwner) {
|
||||
isShelvinLogfromMainScreen = false
|
||||
if (it == false) {
|
||||
setIconsActions(false)
|
||||
//setIcons()
|
||||
}
|
||||
}
|
||||
loadResponseCode.observe(viewLifecycleOwner) { event ->
|
||||
event.getContentIfNotHandled().notNull {
|
||||
|
@ -649,7 +683,13 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
}.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())
|
||||
.setVisibleValue(itemUbicador.visible.toString())
|
||||
//.setEtiquetaValue((itemUbicador.visible / (itemUbicador.packing ?: 0)).toString())
|
||||
.setEtiquetaValue(itemUbicador.stickers.toString())
|
||||
.setUnits(
|
||||
.setEtiquetaValue(itemUbicador.stickers.toString()).setUnits(
|
||||
if (itemUbicador.stickers != 0) {
|
||||
(itemUbicador.visible % itemUbicador.stickers).toString()
|
||||
} else {
|
||||
|
@ -842,6 +881,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
customDialogUbicador.getPackingValue().toIntOrNull()
|
||||
|
||||
) else {
|
||||
|
||||
viewModel.itemShelvingAdd(
|
||||
shelving = shelvingFk,
|
||||
item = customDialogUbicador.getItemValue().toLong(),
|
||||
|
@ -1031,7 +1071,6 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
if (!isAutoSelf) {
|
||||
listItems.remove(item)
|
||||
adapter!!.notifyItemRemoved(listItems.indexOf(item))
|
||||
//adapter!!.notifyDataSetChanged()
|
||||
viewModel.itemShelvingDelete(
|
||||
item.id
|
||||
)
|
||||
|
@ -1049,7 +1088,46 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
customDialogTwoButtons.dismiss()
|
||||
}
|
||||
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)) {
|
||||
customDialogInput.setTitle(getString(R.string.itemNew))
|
||||
|
@ -1080,6 +1158,29 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
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) {
|
||||
|
||||
if (itemScan.isNotEmpty()) {
|
||||
|
@ -1108,8 +1209,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
}
|
||||
|
||||
private fun customDialogTransferAction(item: ItemUbicador) {
|
||||
if (customDialogInput.getValue().isNotEmpty()) {
|
||||
/*tearea 6964*//*
|
||||
if (customDialogInput.getValue().isNotEmpty()) {/*tearea 6964*//*
|
||||
viewModel.hasItemOlder(
|
||||
shelvingFkIn = shelvingFk,
|
||||
shelvingFkOut = customDialogInput.getValue(),
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package es.verdnatura.presentation.view.feature.ubicador.fragment
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log.d
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.map
|
||||
|
@ -9,9 +10,9 @@ import es.verdnatura.R
|
|||
import es.verdnatura.domain.SalixCallback
|
||||
import es.verdnatura.domain.formatWithQuotes
|
||||
import es.verdnatura.domain.userCases.GetItemFromBarcodeUseCase
|
||||
import es.verdnatura.domain.userCases.GetItemPrintItemUseCase
|
||||
import es.verdnatura.presentation.base.BaseViewModel
|
||||
import es.verdnatura.presentation.base.getMessageFromAllResponse
|
||||
import es.verdnatura.presentation.base.nameofFunction
|
||||
import es.verdnatura.presentation.common.Action
|
||||
import es.verdnatura.presentation.common.Event
|
||||
import es.verdnatura.presentation.common.ItemShelvingSalix
|
||||
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.ItemUbicador
|
||||
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.ItemUbicadorVO
|
||||
import es.verdnatura.presentation.view.feature.ubicador.model.ShelvingItem
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.MakeMultiSalix
|
||||
import org.json.JSONObject
|
||||
import retrofit2.Call
|
||||
import retrofit2.Response
|
||||
|
||||
class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
||||
private val getItemFromBarcodeUseCase = GetItemFromBarcodeUseCase(salix)
|
||||
|
||||
private val _shelvingList by lazy { MutableLiveData<ItemUbicadorListVO>() }
|
||||
private val printItemUseCase = GetItemPrintItemUseCase(salix)
|
||||
|
||||
private val _responseUbicator by lazy { MutableLiveData<Boolean>() }
|
||||
val responseUbicator: LiveData<Boolean>
|
||||
|
@ -43,12 +43,18 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
|||
val loadResponseHasOlder: LiveData<Event<ResponseHasOlder>> =
|
||||
_responseHasOlder.map { Event(it) }
|
||||
|
||||
val loadShelvingList: LiveData<Event<ItemUbicadorListVO>> = _shelvingList.map { Event(it) }
|
||||
|
||||
private val _shelvingListNew by lazy { MutableLiveData<ItemUbicadorListNew>() }
|
||||
val loadShelvingListNew: LiveData<Event<ItemUbicadorListNew>> =
|
||||
_shelvingListNew.map { Event(it) }
|
||||
|
||||
private val _shelvingGet by lazy { MutableLiveData<ShelvingItem>() }
|
||||
val loadShelvingGet: LiveData<Event<ShelvingItem>> =
|
||||
_shelvingGet.map { Event(it) }
|
||||
|
||||
private val _imageConfig by lazy { MutableLiveData<String>() }
|
||||
val loadImageConfig: LiveData<Event<String>> =
|
||||
_imageConfig.map { Event(it) }
|
||||
|
||||
private val _shelvingListItemNewer by lazy { MutableLiveData<ItemShelvingNewerList>() }
|
||||
val loadShelvingListItemNewer: LiveData<Event<ItemShelvingNewerList>> =
|
||||
_shelvingListItemNewer.map { Event(it) }
|
||||
|
@ -65,45 +71,24 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
|||
|
||||
private val _responseAddList by lazy { MutableLiveData<Boolean>() }
|
||||
val responseAddList: LiveData<Boolean> = _responseAddList
|
||||
|
||||
val loadAddList: LiveData<Event<Boolean>> = _responseAddList.map { Event(it) }
|
||||
|
||||
private val _responseLogAdd by lazy { MutableLiveData<Any>() }
|
||||
val responseLogAdd: LiveData<Any>
|
||||
get() = _responseLogAdd
|
||||
|
||||
fun itemShelvingList(
|
||||
vShelvingFk: String
|
||||
) {
|
||||
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) }
|
||||
}
|
||||
private val _buyUltimateResponse by lazy { MutableLiveData<Boolean>() }
|
||||
val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse
|
||||
val loadBuyUltimateResponse: LiveData<Event<Boolean>> = _buyUltimateResponse.map { Event(it) }
|
||||
|
||||
override fun onError(t: Throwable) {
|
||||
val listError: ArrayList<ItemUbicadorVO> = ArrayList()
|
||||
listError.add(
|
||||
ItemUbicadorVO(
|
||||
0,
|
||||
isError = true,
|
||||
errorMessage = getMessageFromAllResponse(
|
||||
nameofFunction(this),
|
||||
t.message!!,
|
||||
),
|
||||
),
|
||||
)
|
||||
_shelvingList.value = ItemUbicadorListVO(listError)
|
||||
}
|
||||
|
||||
},
|
||||
)
|
||||
}
|
||||
private val _getParkingResponse by lazy { MutableLiveData<Boolean>() }
|
||||
val getParkingResponse: LiveData<Boolean> = _getParkingResponse
|
||||
val loadGetParkingResponse: LiveData<Event<Boolean>> = _getParkingResponse.map { Event(it) }
|
||||
|
||||
fun itemShelvingListNew(
|
||||
vShelvingFk: String
|
||||
shelvingFk: String
|
||||
) {
|
||||
salix.itemShelvingListNew(params = listOf(vShelvingFk.uppercase()).formatWithQuotes())
|
||||
salix.itemShelvingListNew(params = listOf(shelvingFk.uppercase()).formatWithQuotes())
|
||||
.enqueue(
|
||||
object : SalixCallback<List<ItemUbicador>>(context) {
|
||||
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(
|
||||
priority: Int, shelving: String
|
||||
|
||||
|
@ -222,23 +249,36 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
|||
|
||||
fun hasItemOlder(
|
||||
shelvingFk: String,
|
||||
parking: String,
|
||||
parking: String?,
|
||||
itemFk: Int?,
|
||||
action: Action?,
|
||||
itemShelvingFk: Number? = null
|
||||
|
||||
) {
|
||||
salix.getListItemNewer(shelvingFk, parking)
|
||||
) {
|
||||
salix.getListItemNewerNew(shelvingFk, parking, itemFk)
|
||||
//salix.getListItemNewer(shelvingFk, parking)
|
||||
.enqueue(object : SalixCallback<List<ItemShelvingNewer>>(context) {
|
||||
|
||||
override fun onSuccess(response: Response<List<ItemShelvingNewer>>) {
|
||||
|
||||
if (response.body()!!.isEmpty()) {
|
||||
setParking(shelvingFk, parking)
|
||||
when (action) {
|
||||
Action.PARKINEAR -> setParking(shelvingFk, parking!!)
|
||||
Action.TRANSFERIR -> {
|
||||
itemShelvingTransfer(itemShelvingFk!!, shelvingFk)
|
||||
}
|
||||
|
||||
null -> setParking(shelvingFk, parking!!)
|
||||
}
|
||||
} else {
|
||||
_shelvingListItemNewer.value =
|
||||
response.body()?.let {
|
||||
ItemShelvingNewerList(
|
||||
it,
|
||||
originalParking = parking,
|
||||
originalShelvingFk = shelvingFk
|
||||
originalShelvingFk = shelvingFk,
|
||||
originalParking = parking!!,
|
||||
originalItem = itemFk,
|
||||
originalAction = action
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -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(
|
||||
vShelf: Int, shelvingFk: String
|
||||
|
||||
|
@ -266,7 +398,7 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
|||
}
|
||||
|
||||
fun itemShelvingDeleteChecked(
|
||||
vShelvingFk: String
|
||||
vShelvingFk: Number
|
||||
|
||||
) {
|
||||
salix.itemShelvingsUpdate(
|
||||
|
@ -310,7 +442,12 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
|||
.enqueue(object : SalixCallback<Any>(context) {
|
||||
|
||||
override fun onSuccess(response: Response<Any>) {
|
||||
_responseLogAdd.value = response.message()
|
||||
_responseLogAdd.value = true
|
||||
}
|
||||
|
||||
override fun onError(t: Throwable) {
|
||||
_responseLogAdd.value = false
|
||||
super.onError(t)
|
||||
}
|
||||
|
||||
})
|
||||
|
@ -369,7 +506,24 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
|||
shelvingFkIn: String, shelvingFkOut: String
|
||||
|
||||
) {
|
||||
salix.itemShelvingsUpdate(
|
||||
where = JsonObject().apply {
|
||||
addProperty("shelvingFk", shelvingFkIn)
|
||||
},
|
||||
hashMapOf("shelvingFk" to shelvingFkOut)
|
||||
).enqueue(object : SalixCallback<Any>(context) {
|
||||
|
||||
override fun onSuccess(response: Response<Any>) {
|
||||
_responseUbicator.value = true
|
||||
super.onSuccess(response)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//tarea 7920
|
||||
fun shelvingChangeSalixNew(
|
||||
shelvingFkIn: Number, shelvingFkOut: Number
|
||||
) {
|
||||
salix.itemShelvingsUpdate(
|
||||
where = JsonObject().apply { addProperty("shelvingFk", shelvingFkIn) },
|
||||
hashMapOf("shelvingFk" to shelvingFkOut)
|
||||
|
@ -382,11 +536,32 @@ class UbicadorViewModel(val context: Context) : BaseViewModel(context) {
|
|||
})
|
||||
}
|
||||
|
||||
fun itemShelvingTransfer(
|
||||
itemFk: Int, shelvingFk: String
|
||||
fun getShelvingFkFromCode(
|
||||
shelvingFkIn: Number, codeOut: String
|
||||
|
||||
) {
|
||||
salix.itemShelvingTransfer(arrayListOf(itemFk, shelvingFk).formatWithQuotes())
|
||||
|
||||
salix.shelvingGetFromCode(
|
||||
filter = """{"where":{"code":"$codeOut"}}"""
|
||||
).enqueue(object : SalixCallback<ItemUbicador>(context) {
|
||||
|
||||
override fun onSuccess(response: Response<ItemUbicador>) {
|
||||
val myItemCode = response.body().let { it as ItemUbicador }
|
||||
|
||||
shelvingChangeSalixNew(
|
||||
shelvingFkIn = shelvingFkIn,
|
||||
myItemCode.id.toLong()
|
||||
)
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun itemShelvingTransfer(
|
||||
itemShelvingFk: Number, shelvingFk: String
|
||||
|
||||
) {
|
||||
salix.itemShelvingTransfer(arrayListOf(itemShelvingFk, shelvingFk).formatWithQuotes())
|
||||
.enqueue(object : SalixCallback<Any>(context) {
|
||||
override fun onSuccess(response: Response<Any>) {
|
||||
_responseUbicator.value = true
|
||||
|
@ -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(
|
||||
arrayListOf(
|
||||
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(
|
||||
shelvingFk: String, items: List<Long>, warehouseFk: Int
|
||||
) {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package es.verdnatura.presentation.view.feature.ubicador.model
|
||||
|
||||
import es.verdnatura.presentation.common.Action
|
||||
|
||||
class ItemUbicadorVO(
|
||||
var item: Int,
|
||||
var description: String = "",
|
||||
|
@ -17,12 +19,16 @@ class ItemUbicadorVO(
|
|||
var checked: Boolean = false,
|
||||
var isNew: Boolean = false,
|
||||
var isChecked: Int? = null,
|
||||
var url: String = ""
|
||||
var url: String = "",
|
||||
var shelvingFk: Long? = null
|
||||
)
|
||||
|
||||
class ItemUbicador(
|
||||
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 stickers: Int = 0,
|
||||
var packing: Int? = null,
|
||||
|
@ -30,7 +36,7 @@ class ItemUbicador(
|
|||
var available: Int? = null,
|
||||
var code: String? = "",
|
||||
var created: String? = null,
|
||||
var shelvingFk: String? = null,
|
||||
var shelvingFk: Long? = null,
|
||||
var id: Int = 0,
|
||||
var priority: Int = 0,
|
||||
var isError: Boolean = false,
|
||||
|
@ -39,8 +45,10 @@ class ItemUbicador(
|
|||
var isNew: Boolean = false,
|
||||
var isChecked: Int? = null,
|
||||
var url: String = "",
|
||||
var units: Int = 0
|
||||
)
|
||||
var units: Int = 0,
|
||||
var buyFk: Long? = null,
|
||||
|
||||
)
|
||||
|
||||
class ItemEscanerVO(
|
||||
var item: Long
|
||||
|
@ -55,14 +63,22 @@ class ItemUbicadorListNew(
|
|||
)
|
||||
|
||||
class ItemShelvingNewerList(
|
||||
var list: List<ItemShelvingNewer> = listOf(),
|
||||
var originalParking: String,
|
||||
var originalShelvingFk: String
|
||||
val list: List<ItemShelvingNewer> = listOf(),
|
||||
val originalParking: String,
|
||||
val originalShelvingFk: String,
|
||||
val originalItem: Number? = null,
|
||||
val originalAction: Action?,
|
||||
val itemShelvingFk: Number? = null
|
||||
)
|
||||
|
||||
data class ItemShelvingNewer(
|
||||
var itemFk: Int,
|
||||
var shelvingFk: String,
|
||||
val itemFk: Int,
|
||||
val shelvingFk: String,
|
||||
val created: String,
|
||||
val parkingCode: String,
|
||||
val itemCreated: String? = null,
|
||||
val code: String? = null,
|
||||
val parkingFk: String? = null
|
||||
)
|
||||
|
||||
data class ItemBuy(
|
||||
|
@ -72,3 +88,40 @@ data class ItemBuy(
|
|||
val packing: Int,
|
||||
val packagingFk: String?
|
||||
)
|
||||
|
||||
data class ShelvingItem(
|
||||
val id: Int,
|
||||
val code: String,
|
||||
val priority: Int,
|
||||
val parkingFk: Int? = null,//para findOne directo a Shelving
|
||||
val parking: Parking?,
|
||||
val itemShelving: MutableList<ItemShelving>?
|
||||
)
|
||||
|
||||
data class Parking(
|
||||
val id: Int,
|
||||
val code: String
|
||||
)
|
||||
|
||||
data class ItemShelving(
|
||||
val id: Int,
|
||||
val shelvingFk: Int,
|
||||
val itemFk: Int,
|
||||
val grouping: Int?,
|
||||
var isChecked: Int?,
|
||||
val packing: Int,
|
||||
var visible: Int,
|
||||
var available: Int?,
|
||||
val buyFk: Long?,
|
||||
val item: Item,
|
||||
var description: String? = null,
|
||||
var stickers: Int? = null,
|
||||
var url: String? = null
|
||||
)
|
||||
|
||||
data class Item(
|
||||
val id: Long,
|
||||
val name: String?,
|
||||
val size: Int?,
|
||||
val longName: String?
|
||||
)
|
||||
|
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.widget.addTextChangedListener
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import es.verdnatura.R
|
||||
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.OnMistakeWorkerClickListener
|
||||
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.CustomDialogInput
|
||||
import es.verdnatura.presentation.view.component.CustomDialogList
|
||||
import es.verdnatura.presentation.view.feature.articulo.adapter.BarcodeAdapter
|
||||
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.SearchDepartmentModel
|
||||
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.WorkerFromMistake
|
||||
import ir.mirrajabi.searchdialog.SimpleSearchDialogCompat
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||
class WorkermistakeFragment(
|
||||
var entryPoint: String = ""
|
||||
|
||||
|
@ -49,7 +44,6 @@ class WorkermistakeFragment(
|
|||
private var listMistakes: ArrayList<BarcodeVO> = ArrayList()
|
||||
private var listMistakesAdapter: BarcodeAdapter? = null
|
||||
private var workerMistakeName: WorkerFromMistake? = null
|
||||
private val departments = ArrayList<SearchDepartmentModel>()
|
||||
|
||||
companion object {
|
||||
fun newInstance(entryPoint: String) = WorkermistakeFragment(entryPoint)
|
||||
|
@ -83,32 +77,8 @@ class WorkermistakeFragment(
|
|||
|
||||
customDialogList = CustomDialogList(requireContext())
|
||||
binding.filterDepartment.setOnClickListener {
|
||||
SimpleSearchDialogCompat(
|
||||
context,
|
||||
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()
|
||||
binding.searchableRecyclerView.visibility = View.VISIBLE
|
||||
binding.searchableRecyclerView.setSearchHint(getString(R.string.departamentSearch))
|
||||
}
|
||||
customDialogInput = CustomDialogInput(requireContext())
|
||||
customDialog = CustomDialog(requireContext())
|
||||
|
@ -122,6 +92,36 @@ class WorkermistakeFragment(
|
|||
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() {
|
||||
binding.mainToolbar.backButton.setOnClickListener {
|
||||
ma.onMyBackPressed()
|
||||
|
@ -151,7 +151,12 @@ class WorkermistakeFragment(
|
|||
override fun observeViewModel() {
|
||||
with(viewModel) {
|
||||
mistakeDepartmentList.observe(viewLifecycleOwner) {
|
||||
createDepartmentList(it.list)
|
||||
setSearchable(it.list.map { item ->
|
||||
NameWithId(
|
||||
id = item.id,
|
||||
name = item.name
|
||||
)
|
||||
} as MutableList<NameWithId>)
|
||||
}
|
||||
workerFromMistakeList.observe(viewLifecycleOwner) {
|
||||
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>) {
|
||||
listWorker.clear()
|
||||
|
||||
list.forEach { worker ->
|
||||
try {
|
||||
listWorker.add(worker)
|
||||
} catch (e: Exception) {
|
||||
e.message!!.toast(requireContext())
|
||||
try {
|
||||
listWorker.apply {
|
||||
clear()
|
||||
addAll(list)
|
||||
}
|
||||
|
||||
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(
|
||||
var id: Int? = null,
|
||||
var name: String = ""
|
||||
var id: Int,
|
||||
var name: String
|
||||
)
|
||||
|
||||
data class WorkerFromMistake(
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue