commit
083317beb2
|
@ -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 🛠️
|
||||
|
|
@ -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
|
||||
|
|
|
@ -124,7 +124,7 @@ class DataStoreLocal(var mobileApplication: MobileApplication) {
|
|||
SECTORFKDEFAULT
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
if (operator.sector?.isOnReservationMode != null) {
|
||||
editDataStoreKey(
|
||||
SECTORISONRESERVATIONMODE,
|
||||
|
@ -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
|
||||
|
@ -101,8 +113,8 @@ 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()
|
||||
}
|
||||
}
|
|
@ -96,4 +96,26 @@ data class ExpeditionPrintOut(
|
|||
val expeditionFk: Long,
|
||||
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,24 +140,65 @@ class ShelvingLogFragment(
|
|||
|
||||
}
|
||||
}
|
||||
loadResponseCode.observe(viewLifecycleOwner) { event ->
|
||||
event.getContentIfNotHandled().notNull {
|
||||
setToolBar(getString(R.string.item) + itemScan)
|
||||
if (it == -1) showMessage() else {
|
||||
isitemFkScanned = true
|
||||
openWebViewer(it, "")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
isitemFkScanned = false
|
||||
super.onPause()
|
||||
}
|
||||
|
||||
private fun showMessage() {
|
||||
customDialog.setTitle(getString(R.string.noResults))
|
||||
.setDescription(getString(R.string.noDataLabelScanned))
|
||||
.setOkButton(getString(R.string.close)) {
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
}
|
||||
|
||||
private fun openWebViewer(param: Int, web: String) {
|
||||
|
||||
//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,
|
||||
|
@ -115,4 +115,12 @@ 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(
|
||||
|
@ -71,4 +87,41 @@ data class ItemBuy(
|
|||
val grouping: Int?,
|
||||
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(
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?attr/colorPrimary">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M200,880Q167,880 143.5,856.5Q120,833 120,800L120,240Q120,207 143.5,183.5Q167,160 200,160L240,160L240,80L320,80L320,160L640,160L640,80L720,80L720,160L760,160Q793,160 816.5,183.5Q840,207 840,240L840,800Q840,833 816.5,856.5Q793,880 760,880L200,880ZM200,800L760,800Q760,800 760,800Q760,800 760,800L760,400L200,400L200,800Q200,800 200,800Q200,800 200,800ZM200,320L760,320L760,240Q760,240 760,240Q760,240 760,240L200,240Q200,240 200,240Q200,240 200,240L200,320ZM200,320L200,240Q200,240 200,240Q200,240 200,240L200,240Q200,240 200,240Q200,240 200,240L200,320ZM480,560Q463,560 451.5,548.5Q440,537 440,520Q440,503 451.5,491.5Q463,480 480,480Q497,480 508.5,491.5Q520,503 520,520Q520,537 508.5,548.5Q497,560 480,560ZM320,560Q303,560 291.5,548.5Q280,537 280,520Q280,503 291.5,491.5Q303,480 320,480Q337,480 348.5,491.5Q360,503 360,520Q360,537 348.5,548.5Q337,560 320,560ZM640,560Q623,560 611.5,548.5Q600,537 600,520Q600,503 611.5,491.5Q623,480 640,480Q657,480 668.5,491.5Q680,503 680,520Q680,537 668.5,548.5Q657,560 640,560ZM480,720Q463,720 451.5,708.5Q440,697 440,680Q440,663 451.5,651.5Q463,640 480,640Q497,640 508.5,651.5Q520,663 520,680Q520,697 508.5,708.5Q497,720 480,720ZM320,720Q303,720 291.5,708.5Q280,697 280,680Q280,663 291.5,651.5Q303,640 320,640Q337,640 348.5,651.5Q360,663 360,680Q360,697 348.5,708.5Q337,720 320,720ZM640,720Q623,720 611.5,708.5Q600,697 600,680Q600,663 611.5,651.5Q623,640 640,640Q657,640 668.5,651.5Q680,663 680,680Q680,697 668.5,708.5Q657,720 640,720Z"/>
|
||||
</vector>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue