Compare commits
31 Commits
Author | SHA1 | Date |
---|---|---|
Sergio De la torre | 84a2b8ca82 | |
Sergio De la torre | 41f9fb4a9a | |
Sergio De la torre | 7f0f69ae6f | |
Sergio De la torre | e72acd21f3 | |
Sergio De la torre | a960ff43a7 | |
Sergio De la torre | bd4ffa35bf | |
Sergio De la torre | 2bfa6c8373 | |
Sergio De la torre | 622bb221ab | |
Sergio De la torre | f2eb4d4c11 | |
Sergio De la torre | 2c32244617 | |
Sergio De la torre | 61e6aa2a5a | |
Sergio De la torre | 7837a11254 | |
Sergio De la torre | 59deb90428 | |
Sergio De la torre | 83bc9d9de4 | |
Sergio De la torre | afc8abe090 | |
Sergio De la torre | 26e13bb7d0 | |
Sergio De la torre | d0e5e5d748 | |
Sergio De la torre | 5f614e0d6d | |
Sergio De la torre | c82c591c71 | |
Sergio De la torre | 7c2e418e87 | |
Sergio De la torre | 1f4663e68f | |
Sergio De la torre | c2bdb0766f | |
Sergio De la torre | 233399dcb3 | |
Sergio De la torre | ca91beddf3 | |
Sergio De la torre | cb328f13a3 | |
Sergio De la torre | 9d84ce3a0d | |
Sergio De la torre | 071295c521 | |
Sergio De la torre | ccf56fdebf | |
Sergio De la torre | 8cecd276b0 | |
Sergio De la torre | 8e0ffe8f49 | |
Sergio De la torre | 3f88449718 |
|
@ -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.10" />
|
||||
</component>
|
||||
</project>
|
|
@ -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>
|
||||
|
@ -55,6 +65,11 @@
|
|||
<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 +90,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 +115,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 +160,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 +195,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 +215,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 +245,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 +280,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 +300,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 +361,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 +376,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 +406,36 @@
|
|||
<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 +478,40 @@
|
|||
</select>
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refactorResponse PasillerosItem refs #7827">
|
||||
<list default="true" id="fa688d1c-dbee-4864-9e33-4d84ef9afca8" name="Default Changelist" comment="feat: refs #8022 kotlin versionCatalog">
|
||||
<change afterPath="$PROJECT_DIR$/app/general/release/baselineProfiles/0/app-general-release.dm" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/app/src/main/res/layout/component_searchable_dialog_alert.xml" afterDir="false" />
|
||||
<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/kotlinc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/kotlinc.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/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/general/release/baselineProfiles/1/app-general-release.dm" beforeDir="false" afterPath="$PROJECT_DIR$/app/general/release/baselineProfiles/1/app-general-release.dm" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/proguard-rules.pro" beforeDir="false" afterPath="$PROJECT_DIR$/app/proguard-rules.pro" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/MobileApplication.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/MobileApplication.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixService.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/domain/SalixService.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/base/BaseActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/base/BaseActivity.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/base/BaseFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/common/GeneralAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/common/GeneralAdapter.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/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/controlador/fragment/ControladorFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/controlador/fragment/ControladorFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/LogExpeditionFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/LogExpeditionFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/RoutesFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/RoutesFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/SummaryFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/TicketsFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/fragments/TicketsFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/viewmodels/DeliveryViewModel.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/diadeventa/adapter/DayOfSaleAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/diadeventa/adapter/DayOfSaleAdapter.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoarticulo/fragment/HistoricoArticuloFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoarticulo/fragment/HistoricoArticuloFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelving/adapter/ItemShelvingLogAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelving/adapter/ItemShelvingLogAdapter.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/historicoshelvinglog/fragment/shelvingLogFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryAdapter.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryParkingAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/adapter/InventoryParkingAdapter.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryViewModel.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/adapter/WorkFormAdapter.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/fragment/LoginViewModel.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/delivery/model/InfoCompany.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryParkingFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/inventario/fragment/InventaryParkingFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/LoginItemVO.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/login/model/LoginItemVO.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/main/activity/MainActivity.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/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/adapter/ExpeditionPalletAdapter.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/adapter/ExpeditionPalletAdapter.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionDeleteFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionDeleteFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPreparedStateFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/paletizador/fragment/ExpeditionPreparedStateFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/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/pasillero/fragment/PasilleroViewModel.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/pasillero/fragment/PasilleroViewModel.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragmentNew.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/sacador/fragment/SacadorFragmentNew.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemFragment.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/AutomaticAddItemFragment.kt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/es/verdnatura/presentation/view/feature/ubicador/fragment/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$/gradle/wrapper/gradle-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" afterDir="false" />
|
||||
</list>
|
||||
<list id="7b98f93d-6980-4bf1-8e61-c7afd10e56f2" name="Change_category" comment="Change_category" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
@ -574,7 +616,7 @@
|
|||
</option>
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="dev" />
|
||||
<entry key="$PROJECT_DIR$" value="dev_collectionFragmentChecker" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
|
@ -635,63 +677,63 @@
|
|||
<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__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",
|
||||
"project.structure.last.edited": "Project",
|
||||
"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;"
|
||||
"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"
|
||||
"kotlin-gradle-user-dirs": [
|
||||
"C:\\Users\\sergiodt\\.gradle"
|
||||
]
|
||||
}
|
||||
}]]></component>
|
||||
}</component>
|
||||
<component name="PsdUISettings">
|
||||
<option name="MODULE_TAB" value="Properties" />
|
||||
<option name="LAST_EDITED_SIGNING_CONFIG" value="debug" />
|
||||
|
@ -699,18 +741,18 @@
|
|||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app" />
|
||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\layout" />
|
||||
<recent name="C:\Users\sergiodt\AndroidStudioProjects\vn-warehouseManager\app\src\main\res\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 +762,11 @@
|
|||
<recent name="es.verdnatura.presentation.view.feature.historicoshelving.fragment" />
|
||||
</key>
|
||||
<key name="CopyKotlinDeclarationDialog.RECENTS_KEY">
|
||||
<recent name="es.verdnatura.presentation.view.feature.delivery.adapters" />
|
||||
<recent name="es.verdnatura.presentation.view.feature.delivery.fragments" />
|
||||
<recent name="es.verdnatura.domain.userCases" />
|
||||
<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" />
|
||||
</key>
|
||||
<key name="CopyClassDialog.RECENTS_KEY">
|
||||
<recent name="es.verdnatura.presentation.view.feature.delivery.activity" />
|
||||
|
@ -873,6 +915,13 @@
|
|||
</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 +1277,7 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1709725795643</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="338" />
|
||||
<option name="localTasksCounter" value="363" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.History.Properties">
|
||||
|
@ -1356,22 +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" />
|
||||
|
@ -1381,32 +1414,48 @@
|
|||
<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 #7922 scanOrder" />
|
||||
<MESSAGE value="feat: refs #8020 controlVehiculos" />
|
||||
<MESSAGE value="feat: refs #5443 collectionFragmentChecker" />
|
||||
<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#6845 userInterface" />
|
||||
<MESSAGE value="feat: refs #8022 kotlin versionCatalog" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="feat: refs #8022 kotlin versionCatalog" />
|
||||
</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>
|
||||
|
|
172
app/build.gradle
172
app/build.gradle
|
@ -1,172 +0,0 @@
|
|||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply plugin: 'com.google.firebase.crashlytics'
|
||||
apply plugin: 'com.google.devtools.ksp'
|
||||
|
||||
|
||||
android {
|
||||
namespace = "es.verdnatura"
|
||||
compileSdk 34
|
||||
defaultConfig {
|
||||
applicationId "es.verdnatura"
|
||||
minSdkVersion 26
|
||||
targetSdkVersion 33 // se deja con target si no Play Protect la bloquea
|
||||
versionCode 351
|
||||
versionName = "24.40"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
/*debuggable false
|
||||
shrinkResources true
|
||||
minifyEnabled true*/
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
|
||||
//package de la app general = "package_name": "es.verdnatura"
|
||||
//package de la app beta = "package_name": "es.verdnatura.sfusion"
|
||||
|
||||
applicationVariants.all { variant ->
|
||||
variant.outputs.all { output ->
|
||||
def flavorName = variant.productFlavors[0].name
|
||||
def apkName
|
||||
|
||||
if (flavorName == "beta") {
|
||||
apkName = "vn-pickingBeta.apk"
|
||||
} else if (flavorName == "general") {
|
||||
apkName = "vn-picking.apk"
|
||||
} else {
|
||||
apkName = "vn-picking.apk"
|
||||
}
|
||||
|
||||
output.outputFileName = apkName
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flavorDimensions += "version"
|
||||
productFlavors {
|
||||
create("beta") {
|
||||
applicationIdSuffix = ".sfusion"
|
||||
}
|
||||
create("general") {
|
||||
//versionNameSuffix = "General"
|
||||
}
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
viewBinding = true
|
||||
|
||||
}
|
||||
/*kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
buildFeatures {
|
||||
compose = true
|
||||
}
|
||||
kotlin {
|
||||
jvmToolchain(8)
|
||||
}
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = "1.4.3"
|
||||
}
|
||||
*/
|
||||
dataBinding {
|
||||
enabled = true
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.google.firebase:firebase-crashlytics-ktx:19.0.3'
|
||||
implementation 'com.google.firebase:firebase-analytics-ktx:22.0.2'
|
||||
implementation 'com.google.android.gms:play-services-location:21.3.0'
|
||||
implementation 'androidx.navigation:navigation-fragment-ktx:2.7.7'
|
||||
implementation 'androidx.navigation:navigation-ui-ktx:2.7.7'
|
||||
implementation 'androidx.core:core-ktx:1.13.1'
|
||||
kapt "androidx.room:room-compiler:2.6.1"
|
||||
implementation 'androidx.room:room-ktx:2.6.1'
|
||||
debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar'])
|
||||
releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar'])
|
||||
|
||||
//canvas
|
||||
implementation 'com.simplify:ink:1.0.0'
|
||||
|
||||
// Kotlin and Android
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
||||
implementation 'androidx.core:core-ktx:1.13.1'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||
|
||||
//tests
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
|
||||
implementation 'com.google.android.material:material:1.12.0'
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
|
||||
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
|
||||
implementation "com.airbnb.android:lottie:$lottieVersion"
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||
|
||||
//Fragments
|
||||
implementation("androidx.fragment:fragment-ktx:1.8.2")
|
||||
|
||||
// Architecture components
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4"
|
||||
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.8.4"
|
||||
implementation "androidx.legacy:legacy-support-v4:1.0.0"
|
||||
|
||||
//Koin new resolve
|
||||
implementation "io.insert-koin:koin-core:$koin"
|
||||
implementation "io.insert-koin:koin-android:$koin"
|
||||
implementation "io.insert-koin:koin-androidx-scope:$koin"
|
||||
implementation "io.insert-koin:koin-androidx-viewmodel:$koin"
|
||||
|
||||
// Image libraries
|
||||
implementation "io.coil-kt:coil:$coil"
|
||||
implementation "com.github.bumptech.glide:glide:$glide"
|
||||
implementation "com.github.bumptech.glide:okhttp3-integration:$glide"
|
||||
//kapt "com.github.bumptech.glide:compiler:$glide"
|
||||
ksp("com.github.bumptech.glide:ksp:$glide")
|
||||
|
||||
// Add the Firebase Crashlytics SDK.
|
||||
implementation 'com.google.firebase:firebase-analytics:22.0.2'
|
||||
|
||||
//search
|
||||
implementation 'com.github.mirrajabi:search-dialog:1.1'
|
||||
|
||||
//logs
|
||||
implementation 'com.jakewharton.timber:timber:4.7.1'
|
||||
|
||||
//pickerImage
|
||||
implementation 'com.github.esafirm:android-image-picker:3.0.0-beta5'
|
||||
|
||||
//preferences
|
||||
implementation("androidx.datastore:datastore-preferences:1.1.1")
|
||||
implementation 'androidx.datastore:datastore-core:1.1.1'
|
||||
|
||||
//qr
|
||||
implementation('com.journeyapps:zxing-android-embedded:4.3.0') { transitive = false }
|
||||
implementation 'com.google.zxing:core:3.3.0'
|
||||
|
||||
// Compose
|
||||
/* implementation(platform("androidx.compose:compose-bom:2024.02.01"))
|
||||
implementation("androidx.compose.ui:ui")
|
||||
implementation("androidx.compose.material:material")
|
||||
implementation("androidx.compose.runtime:runtime")
|
||||
implementation("androidx.activity:activity-compose:1.8.2")
|
||||
implementation("androidx.compose.ui:ui-graphics")
|
||||
implementation("androidx.compose.ui:ui-tooling-preview")*/
|
||||
}
|
|
@ -0,0 +1,143 @@
|
|||
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 = 358
|
||||
versionName = "24.46"
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
|
||||
buildTypes {
|
||||
getByName("release") {
|
||||
//debuggable = false
|
||||
//shrinkResources = true
|
||||
//minifyEnabled = true
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
|
||||
)
|
||||
}
|
||||
}
|
||||
//package de la app general = "package_name": "es.verdnatura"
|
||||
//package de la app beta = "package_name": "es.verdnatura.sfusion"
|
||||
|
||||
applicationVariants.all { variant ->
|
||||
variant.outputs.all { output ->
|
||||
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_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
/* 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") */
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
# proguardFiles setting in build.gradle.kts.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
|
|
@ -44,7 +44,6 @@ class MobileApplication : Application(), InteceptorListener {
|
|||
signListener = listener
|
||||
}
|
||||
|
||||
// lateinit var silex: VerdnaturaService
|
||||
lateinit var salix: SalixService
|
||||
var userId: Int? = null
|
||||
var userName: String? = null
|
||||
|
|
|
@ -178,7 +178,10 @@ class DataStoreLocal(var mobileApplication: MobileApplication) {
|
|||
editDataStoreKey(
|
||||
RESERVATIONMODE, operator.isOnReservationMode
|
||||
)
|
||||
|
||||
editDataStoreKey(
|
||||
ITEMPACKING,
|
||||
operator.itemPackingTypeFk
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun isPreferenceExists(key: String): Boolean {
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
package es.verdnatura.db
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.*
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Database
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import androidx.room.Room
|
||||
import androidx.room.RoomDatabase
|
||||
import androidx.room.TypeConverter
|
||||
import androidx.room.TypeConverters
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||
|
@ -68,6 +77,9 @@ interface ExpedicionDao {
|
|||
|
||||
@Query("DELETE FROM expeditionPending WHERE code = :codeState")
|
||||
suspend fun getDeleteByState(codeState: String)
|
||||
|
||||
@Query("DELETE FROM expeditionPending")
|
||||
suspend fun getDeleteAllState()
|
||||
}
|
||||
|
||||
@Dao
|
||||
|
|
|
@ -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
|
||||
|
@ -25,6 +26,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
|
||||
|
@ -69,7 +74,6 @@ 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.workermistake.model.DepartmentMistake
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.ExpeditionMistakeSalix
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
|
||||
|
@ -140,6 +144,11 @@ interface SalixService {
|
|||
@Query("filter") filter: String
|
||||
): Call<List<AddressLoses>>
|
||||
|
||||
@POST("Applications/buy_getUltimate/execute-func")
|
||||
fun buyUltimate(
|
||||
@Query("params") params: Any, @Query("schema") schema: String = "vn"
|
||||
): Call<Long>
|
||||
|
||||
@GET("Buyers")
|
||||
fun getBuyers(
|
||||
@Query("filter") filter: String
|
||||
|
@ -181,10 +190,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 +461,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"
|
||||
|
@ -515,10 +542,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 +567,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 +612,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 +700,17 @@ 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")
|
||||
fun itemShelvingGet(
|
||||
@Query("filter") filter: Any,
|
||||
): Call<List<ItemUbicador>>
|
||||
|
||||
@POST("Applications/expedition_scan/execute-proc")
|
||||
fun expeditionScan(
|
||||
@Query("schema") schema: String = "srt",
|
||||
|
|
|
@ -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.buyUltimate(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,69 @@
|
|||
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.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")
|
||||
}
|
||||
.setOkTwoButton(context.getString(R.string.printBarcode)) {
|
||||
handlePrintClick(item, customDialogList, onPrintClick, "barcode")
|
||||
|
||||
}
|
||||
.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
|
||||
) {
|
||||
onPrintClick(
|
||||
item,
|
||||
labelType,
|
||||
if (customDialogList.getValue().isEmpty()) null else customDialogList.getValue()
|
||||
.toInt(),
|
||||
if (customDialogList.getValueOptional()
|
||||
.isEmpty()
|
||||
) 1 else customDialogList.getValueOptional().toInt()
|
||||
)
|
||||
customDialogList.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
class LabelDialogHelper(private val context: Context) {
|
||||
fun showLabelDialog(
|
||||
onItemSelected: (Int) -> Unit,
|
||||
) {
|
||||
val builder = AlertDialog.Builder(context)
|
||||
builder.setTitle(context.getString(R.string.selectLabeltoPrint))
|
||||
val labelCount = Array(10) { (it + 1).toString() }
|
||||
builder.setItems(labelCount) { _, which ->
|
||||
onItemSelected(which + 1)
|
||||
}
|
||||
builder.create().show()
|
||||
}
|
||||
}
|
|
@ -97,3 +97,25 @@ data class ExpeditionPrintOut(
|
|||
val itemFk: Int,
|
||||
val isChecked: Boolean
|
||||
)
|
||||
|
||||
data class PickupResponse(
|
||||
val routeFk: Int,
|
||||
val route: Route?
|
||||
)
|
||||
|
||||
data class Route(
|
||||
val id: Int,
|
||||
val agencyModeFk: Int,
|
||||
val agencyMode: AgencyMode?
|
||||
)
|
||||
|
||||
data class AgencyMode(
|
||||
val id: Int,
|
||||
val deliveryMethodFk: Int,
|
||||
val deliveryMethod: DeliveryMethod?
|
||||
)
|
||||
|
||||
data class DeliveryMethod(
|
||||
val id: Int,
|
||||
val code: String?
|
||||
)
|
|
@ -10,6 +10,7 @@ import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO
|
|||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteComplement
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.Ticket
|
||||
import es.verdnatura.presentation.view.feature.historicoarticulo.model.ItemHistoricoVO
|
||||
|
@ -50,6 +51,10 @@ interface OnMistakeWorkerClickListener {
|
|||
fun onMistakeWorkerClickListener(item: WorkerFromMistake)
|
||||
}
|
||||
|
||||
interface OnSalarySupplementClickListener {
|
||||
fun onSalarySupplementClickListener(item: RouteComplement)
|
||||
}
|
||||
|
||||
interface HideBottomNavigation {
|
||||
fun hideBottomNavigation(entryPoint: String)
|
||||
}
|
||||
|
@ -102,6 +107,10 @@ interface OnGeneralItemRowClickListener {
|
|||
fun onGeneralItemRowClickListener(item: GeneralItem)
|
||||
}
|
||||
|
||||
interface OnGeneralRowClickListener {
|
||||
fun onRowClickListener(item: GeneralItem)
|
||||
}
|
||||
|
||||
interface OnImageTrashClickListener {
|
||||
fun onImageTrashClickListener(item: Any)
|
||||
}
|
||||
|
@ -263,6 +272,10 @@ interface OnTicketClickListener {
|
|||
fun onTicketClickListener(sale: SaleVO)
|
||||
}
|
||||
|
||||
interface OnTicketColorListener {
|
||||
fun onTicketColorListener(sale: SaleVO)
|
||||
}
|
||||
|
||||
interface OnTicketClickSaleListener {
|
||||
fun onTicketClickListener(sale: Sale)
|
||||
}
|
||||
|
@ -271,6 +284,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,96 @@ 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.setSearchHintWithoutFocus(getString(R.string.sectorSearch))
|
||||
}
|
||||
|
||||
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 +224,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 +270,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 +363,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
|
||||
)
|
||||
)*/
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ 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.WAREHOUSEFK
|
||||
import es.verdnatura.domain.notNull
|
||||
import es.verdnatura.domain.toast
|
||||
|
@ -19,7 +20,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
|
||||
|
@ -53,6 +56,8 @@ class ItemCardFragment(
|
|||
private var quantityToDiscard = 0
|
||||
private var itemInfoG: ItemCardVO? = null
|
||||
private var positionToReturnY = 0
|
||||
private var originalScan: String? = null
|
||||
private var buyToPrint: Long? = null
|
||||
|
||||
companion object {
|
||||
fun newInstance(entryPoint: String) = ItemCardFragment(entryPoint)
|
||||
|
@ -95,16 +100,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 +121,25 @@ class ItemCardFragment(
|
|||
override fun onOptionsItemSelected(item: Drawable) {
|
||||
|
||||
when (item) {
|
||||
|
||||
iconPrint.drawable -> {
|
||||
|
||||
if (buyToPrint != null) {
|
||||
|
||||
val printerDialogManager = PrinterDialogManager(requireContext())
|
||||
printerDialogManager.showPrintDialog(
|
||||
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 +180,42 @@ class ItemCardFragment(
|
|||
LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
|
||||
}
|
||||
|
||||
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 = """{'copies':$copies,'id':$id,'labelType':'$labelType','packing':$packing}"""
|
||||
)
|
||||
} catch (ex: Exception) {
|
||||
ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true)
|
||||
}
|
||||
customDialogList.dismiss()
|
||||
hideKeyboard()
|
||||
}
|
||||
|
||||
private fun setEvents() {
|
||||
|
||||
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)
|
||||
}
|
||||
getItemCard(
|
||||
originalScan!!
|
||||
)
|
||||
} catch (ex: Exception) {
|
||||
ma.messageWithSound(ex.message.toString(), isError = true, isPlayed = true)
|
||||
}
|
||||
|
||||
binding.editItemFk.setText("")
|
||||
ma.hideKeyboard(binding.editItemFk)
|
||||
|
@ -196,7 +246,6 @@ class ItemCardFragment(
|
|||
|
||||
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK) as Int
|
||||
itemFk = itemValueFk
|
||||
|
||||
viewModel.getItemCard(itemFk.toLong(), warehouseFk!!)
|
||||
|
||||
}
|
||||
|
@ -210,6 +259,19 @@ 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.buyUltimate(
|
||||
itemFk = it.id,
|
||||
warehouseFk = mobileApplication.dataStoreApp.readDataStoreKey(
|
||||
WAREHOUSEFK
|
||||
),
|
||||
dated = LocalDate.now()
|
||||
.format(DateTimeFormatter.ofPattern("yyyy-dd-MM"))
|
||||
)
|
||||
} else {
|
||||
buyToPrint = originalScan!!.toLong()
|
||||
}*/
|
||||
} else {
|
||||
binding.itemcardLayout.visibility = GONE
|
||||
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemCard)
|
||||
|
@ -237,6 +299,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,15 @@ class ItemCardViewModel(var context: Context) : BaseViewModel(context) {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun buyUltimate(
|
||||
itemFk: Int, warehouseFk: Int, dated: String
|
||||
) {
|
||||
salix.buyUltimate(params = arrayListOf(itemFk, warehouseFk, dated).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) {
|
||||
|
|
|
@ -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) {
|
||||
|
@ -347,9 +332,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,358 @@
|
|||
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 _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<Boolean>() }
|
||||
val responseIncQuantity: LiveData<Boolean> = _responseIncQuantity
|
||||
val loadIncQuantity: LiveData<Event<Boolean>> = _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>) {
|
||||
_responseTicketState.value = TicketState()
|
||||
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 = true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
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)
|
||||
|
@ -377,7 +381,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 +845,7 @@ class CollectionFragmentPicker(
|
|||
} else {
|
||||
// pintar línea
|
||||
saleAdapter!!.notifyDataSetChanged()
|
||||
myPosition = storedPosition
|
||||
myPosition = storedBackPosition
|
||||
|
||||
ReviewQuantityForRefreshingAndSorting(
|
||||
sales[storedPosition].quantity!!.toInt(),
|
||||
|
@ -926,7 +930,7 @@ class CollectionFragmentPicker(
|
|||
}
|
||||
|
||||
saleAdapter = SaleAdapter(
|
||||
myGroupList,
|
||||
myGroupList as MutableList,
|
||||
pasillerosItemClickListener!!,
|
||||
object : OnQuantityClickListener {
|
||||
|
||||
|
@ -1001,17 +1005,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 +1123,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 +1381,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 +1546,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 +2088,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 +2354,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,39 @@
|
|||
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.view.KeyEvent
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
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 +70,7 @@ 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.
|
||||
|
||||
variables:
|
||||
isVerifiedCollection
|
||||
|
@ -135,6 +133,7 @@ class CollectionFragmentPickerPreviousNew(
|
|||
}
|
||||
|
||||
override fun init() {
|
||||
println("Sacando test")
|
||||
customDialogList = CustomDialogList(requireContext())
|
||||
customDialogInput = CustomDialogInput(requireContext())
|
||||
customDialog = CustomDialog(requireContext())
|
||||
|
@ -223,7 +222,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 +327,16 @@ 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 {
|
||||
println("updating")
|
||||
updateScreen()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -348,24 +351,25 @@ class CollectionFragmentPickerPreviousNew(
|
|||
}
|
||||
}
|
||||
|
||||
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 +406,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 +468,12 @@ class CollectionFragmentPickerPreviousNew(
|
|||
showDeleteItemShelving(sale)
|
||||
}
|
||||
|
||||
}, onAddItemClickListener = object : OnAddItemClickListener {
|
||||
|
||||
override fun onAddItemClickListener(sale: Sale) {
|
||||
customDialogAddItemFromSale(sale)
|
||||
}
|
||||
|
||||
}, type = type
|
||||
)
|
||||
|
||||
|
@ -528,29 +538,65 @@ 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á
|
||||
if (myGroupList[indice].isParent && myGroupList[indice].saleGroupFk == txtscan.toInt()) {
|
||||
isFoundSale = true
|
||||
storedPosition = indice
|
||||
viewModel.itemShelvingSaleSetSaleGroup(txtscan.toInt())
|
||||
break
|
||||
}
|
||||
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())
|
||||
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 +611,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 +755,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 +777,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]
|
||||
|
@ -781,12 +809,13 @@ class CollectionFragmentPickerPreviousNew(
|
|||
}.setOkButtonTwo(getString(R.string.no)) {
|
||||
scanRequest()
|
||||
customDialogThreeButtonsQuantity.dismiss()
|
||||
viewModel.itemShelvingSaleExists(
|
||||
myGroupList[position].itemShelvingSaleFk,
|
||||
myGroupList[position].itemShelvingFk,
|
||||
position,
|
||||
quantity
|
||||
)
|
||||
/* viewModel.itemShelvingSaleExists(
|
||||
myGroupList[position].itemShelvingSaleFk,
|
||||
myGroupList[position].itemShelvingFk,
|
||||
position,
|
||||
quantity
|
||||
)*/
|
||||
markLine(position, quantity, true)
|
||||
/* if (quantity == 0) {
|
||||
|
||||
/* viewModel.itemShelvingGet(
|
||||
|
@ -914,6 +943,44 @@ class CollectionFragmentPickerPreviousNew(
|
|||
|
||||
}
|
||||
|
||||
private fun customDialogAddItemFromSale(sale: Sale) {
|
||||
|
||||
customDialogThreeButtonsQuantity.setTitle(
|
||||
"${getString(R.string.ticket)}${sale.ticketFk}"
|
||||
).setDescription(
|
||||
getString(
|
||||
R.string.addItemQuantity, sale.itemFk
|
||||
)
|
||||
)
|
||||
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 =
|
||||
|
@ -944,7 +1011,7 @@ class CollectionFragmentPickerPreviousNew(
|
|||
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 {
|
||||
|
@ -1149,20 +1216,18 @@ 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 ->
|
||||
viewModel.collectionStickerPrint(
|
||||
collectionFk = collection.collectionFk, labelCount = (which + 1)
|
||||
)
|
||||
(getString(R.string.Imprimiendo) + mobileApplication.dataStoreApp.readDataStoreKey<String>(
|
||||
ConstAndValues.PRINTERNAME
|
||||
)).toast(requireContext())
|
||||
|
||||
}
|
||||
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(
|
||||
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
|
||||
|
@ -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 =
|
||||
|
@ -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!!
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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,8 +180,8 @@ 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>
|
||||
|
@ -431,10 +431,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 +452,12 @@ class CollectionViewModel(val context: Context) : BaseViewModel(context) {
|
|||
_responseCollectionAddItem.value = true
|
||||
|
||||
}
|
||||
|
||||
override fun onError(t: Throwable) {
|
||||
_responseConfirmReservedItemShelvingSale.value = false
|
||||
super.onError(t)
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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,81 @@ 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()
|
||||
)
|
||||
}
|
||||
customDialogList.dismiss()
|
||||
|
||||
}
|
||||
|
||||
private fun setEvents() {
|
||||
binding.mainToolbar.backButton.setOnClickListener {
|
||||
ma.onMyBackPressed()
|
||||
|
@ -204,7 +312,6 @@ class RoutesFragment(
|
|||
}
|
||||
|
||||
override fun afterTextChanged(s: Editable?) {
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -262,7 +369,7 @@ class RoutesFragment(
|
|||
|
||||
if (it) {
|
||||
binding.mainToolbar.toolbarIcons.visibility = View.VISIBLE
|
||||
deleteExpeditionsPending("")
|
||||
deleteExpeditionsPending()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -302,8 +409,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()
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -338,7 +340,14 @@ class SummaryFragment(
|
|||
viewModel.getExpeditionFromRoute(routeSelected)
|
||||
|
||||
}
|
||||
println("address $addressFkSelected")
|
||||
println("address isScanning $isScanning")
|
||||
|
||||
if (addressFkSelected != item.addressFk && isScanning) {
|
||||
println("address isScanning $isScanning")
|
||||
println("address setSTATE $state")
|
||||
println("address address $addressFkSelected")
|
||||
|
||||
setExpeditionsState(myList, state, addressFkSelected)
|
||||
|
||||
}
|
||||
|
|
|
@ -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 ")
|
||||
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -167,7 +180,8 @@ 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$"
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -18,13 +18,13 @@ 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.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 +39,8 @@ 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
|
||||
|
||||
companion object {
|
||||
fun newInstance() = InventaryFragment()
|
||||
|
@ -59,39 +57,17 @@ class InventaryFragment :
|
|||
|
||||
viewModel.itemShelvingBuyerGet()
|
||||
binding.filterBuyer.text = mobileApplication.dataStoreApp.readDataStoreKey<String>((BUYER))
|
||||
buyerId = mobileApplication.dataStoreApp.readDataStoreKey((BUYERID))
|
||||
if (buyerId.isNotBlank()) {
|
||||
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 ->
|
||||
|
||||
binding.filterBuyer.text = (nombre.title)
|
||||
buyerId = nombre.getBuyerId()
|
||||
|
||||
lifecycleScope.launch {
|
||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||
BUYER, nombre.getBuyerNickname()
|
||||
)
|
||||
mobileApplication.dataStoreApp.editDataStoreKey(
|
||||
BUYERID, nombre.getBuyerId()
|
||||
)
|
||||
}
|
||||
viewModel.getInventory(
|
||||
nombre.getBuyerId().toInt(),
|
||||
mobileApplication.dataStoreApp.readDataStoreKey(WAREHOUSEFK)
|
||||
)
|
||||
baseSearchDialogCompat.dismiss()
|
||||
}.show()
|
||||
binding.searchableRecyclerView.visibility = View.VISIBLE
|
||||
binding.searchableRecyclerView.setSearchHint(getString(R.string.BuyerSearch))
|
||||
}
|
||||
|
||||
customDialogInput = CustomDialogInput(requireContext())
|
||||
customDialog = CustomDialogTwoButtons(requireContext())
|
||||
binding.mainToolbar.toolbarTitle.text = getString(R.string.itemShelvingRadar)
|
||||
|
@ -100,6 +76,36 @@ 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 setToolBar() {
|
||||
ma.hideBottomNavigation(View.GONE)
|
||||
val listIcons: ArrayList<ImageView> = ArrayList()
|
||||
|
@ -114,9 +120,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 +163,7 @@ class InventaryFragment :
|
|||
setFilterItem()
|
||||
|
||||
}
|
||||
adapter!!.notifyDataSetChanged()
|
||||
adapter?.notifyDataSetChanged()
|
||||
return@setOnKeyListener false
|
||||
}
|
||||
}
|
||||
|
@ -178,8 +184,13 @@ class InventaryFragment :
|
|||
|
||||
override fun observeViewModel() {
|
||||
with(viewModel) {
|
||||
buyersList.observe(viewLifecycleOwner) {
|
||||
createBuyerList(it.list)
|
||||
buyersList.observe(viewLifecycleOwner) { item ->
|
||||
setSearchable(item.list.map {
|
||||
NameWithId(
|
||||
it.userFk,
|
||||
it.nickname
|
||||
)
|
||||
} as MutableList<NameWithId>)
|
||||
}
|
||||
|
||||
inventaryList.observe(viewLifecycleOwner) { it ->
|
||||
|
@ -265,13 +276,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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -82,7 +82,7 @@ class InventaryViewModel(val context: Context) : BaseViewModel(context) {
|
|||
|
||||
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 +146,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
|
||||
|
@ -41,7 +42,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 +51,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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -544,23 +544,23 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
// Ya no se utiliza : addFragmentOnTop(ControladorFragment.newInstance())
|
||||
|
||||
if (mobileApplication.userId == 19591) {
|
||||
println("Revisando nueva")
|
||||
addFragmentOnTop(
|
||||
CollectionFragmentChecker.newInstance(
|
||||
CollectionVO(collectionFk = 0),
|
||||
type = CONTROLADOR
|
||||
)
|
||||
// if (mobileApplication.userId == 19591) {
|
||||
println("Revisando nueva")
|
||||
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),
|
||||
|
@ -944,6 +944,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
addFragmentOnTop(PickerHelperFragment.newInstance(itemTitle))
|
||||
}
|
||||
|
||||
getString(R.string.salarySupplementTitle) -> {
|
||||
addFragmentOnTop(SalaryComplementFragment.newInstance(itemTitle))
|
||||
}
|
||||
|
||||
"PREITEMPICKERTEST" -> {
|
||||
addFragmentOnTop(
|
||||
CollectionFragmentPickerPreviousNew.newInstance(
|
||||
|
@ -986,7 +990,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
}
|
||||
} catch (ex: Exception) {
|
||||
d("$ex")
|
||||
ex.message!!.toast(this)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1217,7 +1221,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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -513,6 +513,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
|
||||
)
|
||||
)*/
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -89,7 +89,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(
|
||||
|
@ -154,7 +156,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 +164,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? = ""
|
||||
|
||||
)
|
||||
|
||||
|
@ -175,8 +179,10 @@ class TicketVO(
|
|||
var sales: List<SaleVO> = listOf(),
|
||||
@SerializedName(value = "observations", alternate = ["observaciones"])
|
||||
var observations: String = "",
|
||||
var isAdvanced: Int? = 0,
|
||||
var parkingCode: String? = ""
|
||||
|
||||
)
|
||||
)
|
||||
|
||||
data class CollectionIdSalix(
|
||||
var id: Int
|
||||
|
|
|
@ -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!!,
|
||||
|
|
|
@ -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
|
||||
|
@ -28,6 +29,7 @@ import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
|||
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||
import es.verdnatura.presentation.common.OnVisibleClickListenerNew
|
||||
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 +41,7 @@ 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 kotlin.math.ceil
|
||||
|
||||
@Suppress("UNUSED_ANONYMOUS_PARAMETER")
|
||||
class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewModel>(
|
||||
|
@ -214,18 +217,20 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
binding.mainToolbar.toolbarIcons.adapter =
|
||||
ToolBarAdapterTooltip(listIcons, object : OnOptionsSelectedListener {
|
||||
override fun onOptionsItemSelected(item: Drawable) {
|
||||
|
||||
listItems.clear()
|
||||
when (item) {
|
||||
iconAdd.drawable -> showAddItemNew(
|
||||
isEditItem = false, null
|
||||
)
|
||||
|
||||
iconAddMultiple.drawable ->
|
||||
iconAddMultiple.drawable -> {
|
||||
|
||||
ma.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(
|
||||
title = R.string.addItemMultipleShelving,
|
||||
), entryPoint = getString(R.string.addItemMultipleShelving)
|
||||
)
|
||||
}
|
||||
|
||||
iconReload.drawable -> {
|
||||
|
||||
|
@ -339,6 +344,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
|
||||
|
||||
binding.automaticImg.setOnClickListener {
|
||||
|
||||
if (shelvingFk.isNotBlank()) ma.onPasillerosItemClickListener(
|
||||
PasillerosItemVO(title = R.string.titleAuto), entryPoint = shelvingFk
|
||||
)
|
||||
|
@ -519,21 +525,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()
|
||||
|
@ -649,7 +662,15 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
}.show()
|
||||
}
|
||||
}
|
||||
|
||||
loadBuyUltimateResponse.observe(viewLifecycleOwner) { event ->
|
||||
event.getContentIfNotHandled().notNull {
|
||||
ma.messageWithSound(
|
||||
getString(R.string.errorPrintBuy),
|
||||
isError = true,
|
||||
isPlayed = true
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -842,6 +863,7 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
customDialogUbicador.getPackingValue().toIntOrNull()
|
||||
|
||||
) else {
|
||||
|
||||
viewModel.itemShelvingAdd(
|
||||
shelving = shelvingFk,
|
||||
item = customDialogUbicador.getItemValue().toLong(),
|
||||
|
@ -1031,7 +1053,6 @@ class UbicadorFragmentNew : BaseFragment<FragmentUbicadorBinding, UbicadorViewMo
|
|||
if (!isAutoSelf) {
|
||||
listItems.remove(item)
|
||||
adapter!!.notifyItemRemoved(listItems.indexOf(item))
|
||||
//adapter!!.notifyDataSetChanged()
|
||||
viewModel.itemShelvingDelete(
|
||||
item.id
|
||||
)
|
||||
|
@ -1049,7 +1070,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 +1140,24 @@ 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 = """{'copies':$copies,'id':$id,'labelType':'$labelType','packing':$packing}"""
|
||||
)
|
||||
} catch (ex: Exception) {
|
||||
ma.messageWithSound(message = ex.message.toString(), isError = true, isPlayed = true)
|
||||
}
|
||||
hideKeyboard()
|
||||
}
|
||||
|
||||
private fun actionRename(item: ItemUbicador, itemScan: String) {
|
||||
|
||||
if (itemScan.isNotEmpty()) {
|
||||
|
|
|
@ -9,9 +9,8 @@ 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.Event
|
||||
import es.verdnatura.presentation.common.ItemShelvingSalix
|
||||
import es.verdnatura.presentation.common.ResponseHasOlder
|
||||
|
@ -22,16 +21,13 @@ 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.workermistake.model.MakeMultiSalix
|
||||
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,8 +39,6 @@ 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) }
|
||||
|
@ -65,45 +59,81 @@ 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) }
|
||||
}
|
||||
|
||||
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 _buyUltimateResponse by lazy { MutableLiveData<Boolean>() }
|
||||
val buyUltimateResponse: LiveData<Boolean> = _buyUltimateResponse
|
||||
val loadBuyUltimateResponse: LiveData<Event<Boolean>> = _buyUltimateResponse.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>>) {
|
||||
_shelvingListNew.value = response.body()?.let { ItemUbicadorListNew(it) }
|
||||
}
|
||||
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
//Tarea 6869
|
||||
fun itemShelvingGet(
|
||||
shelvingFk: String
|
||||
) {
|
||||
salix.itemShelvingGet(
|
||||
filter = """{
|
||||
"fields":[
|
||||
"priority",
|
||||
"parkingFk",
|
||||
"code"
|
||||
],
|
||||
"include":[
|
||||
{
|
||||
"relation":"parking",
|
||||
"scope":{
|
||||
"fields":[
|
||||
"code"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"relation":"itemShelving",
|
||||
"scope":{
|
||||
"fields":[
|
||||
"id",
|
||||
"itemFk",
|
||||
"visible",
|
||||
"packing",
|
||||
"grouping",
|
||||
"isChecked",
|
||||
"available",
|
||||
"buyFk"
|
||||
],
|
||||
"include":{
|
||||
"relation":"item",
|
||||
"scope":{
|
||||
"fields":[
|
||||
"name",
|
||||
"longName",
|
||||
"size"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"where":{
|
||||
"code":"$shelvingFk"
|
||||
}
|
||||
}""".trim()
|
||||
)
|
||||
.enqueue(
|
||||
object : SalixCallback<List<ItemUbicador>>(context) {
|
||||
override fun onSuccess(response: Response<List<ItemUbicador>>) {
|
||||
|
@ -430,6 +460,67 @@ 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 =
|
||||
"""{'copies':$copies,'id':${response.body()},'labelType':'$labelType','packing':$packing}"""
|
||||
printItem(
|
||||
reportName = reportName,
|
||||
printerFk = printerFk,
|
||||
priority = priority,
|
||||
userFk = userFk,
|
||||
params = params
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun itemShelvingMakeMulti(
|
||||
shelvingFk: String, items: List<Long>, warehouseFk: Int
|
||||
) {
|
||||
|
|
|
@ -22,7 +22,10 @@ class ItemUbicadorVO(
|
|||
|
||||
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,
|
||||
|
@ -39,7 +42,8 @@ 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(
|
||||
|
|
|
@ -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>
|
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="16dp"
|
||||
android:height="16dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M320,550L399,440L569,440L320,244L320,550ZM551,880L406,568L240,800L240,80L800,520L516,520L660,829L551,880ZM399,440L399,440L399,440L399,440Z" />
|
||||
</vector>
|
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="16dp"
|
||||
android:height="16dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M320,550L399,440L569,440L320,244L320,550ZM551,880L406,568L240,800L240,80L800,520L516,520L660,829L551,880ZM399,440L399,440L399,440L399,440Z" />
|
||||
</vector>
|
|
@ -0,0 +1,11 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="@android:color/white"
|
||||
android:autoMirrored="true">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M200,840Q167,840 143.5,816.5Q120,793 120,760L120,200Q120,167 143.5,143.5Q167,120 200,120L480,120L480,200L200,200Q200,200 200,200Q200,200 200,200L200,760Q200,760 200,760Q200,760 200,760L480,760L480,840L200,840ZM640,680L585,622L687,520L360,520L360,440L687,440L585,338L640,280L840,480L640,680Z"/>
|
||||
</vector>
|
|
@ -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/colorOnPrimaryFixed">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M280,840L280,597Q280,597 280,597Q280,597 280,597Q192,583 136,515.5Q80,448 80,360Q80,260 150,190Q220,120 320,120Q408,120 475.5,176Q543,232 557,320Q557,320 557,320Q557,320 557,320L727,320L664,256L720,200L880,360L720,520L663,464L727,400L556,400Q527,400 505,381Q483,362 478,333Q468,275 423.5,237.5Q379,200 320,200Q254,200 207,247Q160,294 160,360Q160,419 197.5,463.5Q235,508 293,518Q322,523 341,545Q360,567 360,596L360,840L280,840Z"/>
|
||||
</vector>
|
|
@ -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="M521,82Q664,96 764.5,196.5Q865,297 879,440L593,440Q584,414 565.5,394.5Q547,375 521,366L521,82ZM601,184L601,320Q612,329 622,339Q632,349 641,360L777,360Q753,300 707,254Q661,208 601,184ZM441,82L441,366Q405,379 383,410.5Q361,442 361,480Q361,518 383,548.5Q405,579 441,592L441,878Q287,863 184,749Q81,635 81,480Q81,325 184,211Q287,97 441,82ZM361,184Q270,219 215.5,300Q161,381 161,480Q161,579 215.5,660Q270,741 361,778L361,640Q323,611 302,569.5Q281,528 281,480Q281,432 302,390.5Q323,349 361,320L361,184ZM593,520L879,520Q865,663 764.5,763.5Q664,864 521,878L521,592Q547,583 565.5,564.5Q584,546 593,520ZM641,600Q633,611 622.5,621Q612,631 601,640L601,776Q661,752 707,706Q753,660 777,600L641,600ZM281,481L281,481Q281,481 281,481Q281,481 281,481Q281,481 281,481Q281,481 281,481L281,481Q281,481 281,481Q281,481 281,481Q281,481 281,481Q281,481 281,481ZM641,360Q641,360 641,360Q641,360 641,360L641,360Q641,360 641,360Q641,360 641,360ZM641,600L641,600Q641,600 641,600Q641,600 641,600L641,600Q641,600 641,600Q641,600 641,600Z"/>
|
||||
</vector>
|
|
@ -11,24 +11,24 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/default_layout_margin"
|
||||
android:descendantFocusability="beforeDescendants"
|
||||
android:focusableInTouchMode="true">
|
||||
android:focusableInTouchMode="true"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/default_layout_margin">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/custom_dialog_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_margin_1"
|
||||
android:layout_marginBottom="@dimen/layout_margin_min"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/h6"
|
||||
android:textStyle="bold"
|
||||
android:visibility="gone"
|
||||
tools:text="¿Estás seguro de que deseas eliminar el dispositivo de celia?"
|
||||
tools:visibility="visible" />
|
||||
android:id="@+id/custom_dialog_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_margin_1"
|
||||
android:layout_marginBottom="@dimen/layout_margin_min"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/h6"
|
||||
android:textStyle="bold"
|
||||
android:visibility="gone"
|
||||
tools:text="¿Estás seguro de que deseas eliminar el dispositivo de celia?"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/custom_dialog_description"
|
||||
|
@ -44,13 +44,12 @@
|
|||
tools:visibility="visible" />
|
||||
|
||||
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/textinputlayout_username"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColorHint="@android:color/darker_gray"
|
||||
android:layout_marginTop="@dimen/layout_margin_min">
|
||||
android:layout_marginTop="@dimen/layout_margin_min"
|
||||
android:textColorHint="@android:color/darker_gray">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/custom_dialog_value"
|
||||
|
@ -61,7 +60,28 @@
|
|||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textColorHint="@android:color/darker_gray"/>
|
||||
android:textColorHint="@android:color/darker_gray" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/textinputlayout_three"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_margin_min"
|
||||
android:textColorHint="@android:color/darker_gray"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/custom_dialog_value_three"
|
||||
style="@style/DefaultButton.TransparentButton"
|
||||
android:layout_width="match_parent"
|
||||
android:backgroundTint="@android:color/white"
|
||||
android:inputType="text"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textColorHint="@android:color/darker_gray" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
||||
|
@ -69,9 +89,10 @@
|
|||
android:id="@+id/textinputlayout_two"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColorHint="@android:color/darker_gray"
|
||||
android:layout_marginTop="@dimen/layout_margin_min"
|
||||
android:textColorHint="@android:color/darker_gray"
|
||||
android:visibility="gone">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/custom_dialog_value_two"
|
||||
style="@style/InputLineTextSearch"
|
||||
|
@ -90,7 +111,7 @@
|
|||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:clipToPadding="false"
|
||||
tools:listitem="@layout/item_barcode_row"/>
|
||||
tools:listitem="@layout/item_barcode_row" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/custom_dialog_button_ok"
|
||||
|
@ -101,6 +122,15 @@
|
|||
tools:text="@string/delete"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/custom_dialog_button_ok_two"
|
||||
style="@style/DefaultButton.NormalButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginTop="@dimen/default_layout_margin"
|
||||
android:visibility="gone"
|
||||
tools:text="@string/delete"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/custom_dialog_button_ko"
|
||||
style="@style/DefaultButton.TransparentButton"
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp">
|
||||
|
||||
<androidx.appcompat.widget.SearchView
|
||||
android:id="@+id/search_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:queryHint="Buscar..."
|
||||
android:text=""
|
||||
android:textColor="@android:color/white"
|
||||
android:textColorHint="@android:color/darker_gray" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_viewer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="8dp"
|
||||
android:visibility="visible" />
|
||||
</LinearLayout>
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<es.verdnatura.presentation.view.commom.SearchableRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.SearchView
|
||||
android:id="@+id/search_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_viewer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</es.verdnatura.presentation.view.commom.SearchableRecyclerView>
|
|
@ -21,139 +21,44 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/verdnatura_white"
|
||||
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
app:layout_constraintTop_toBottomOf="@id/main_toolbar" />
|
||||
|
||||
<!-- RecyclerView en la parte superior -->
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/setttings_items"
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/toolbar_height"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/setttings_items"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintVertical_bias="0" />
|
||||
|
||||
<!-- Contenedor de los demás datos debajo del RecyclerView -->
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<es.verdnatura.presentation.view.commom.SearchableRecyclerView
|
||||
android:id="@+id/searchableRecyclerView"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/divider"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/scrollView"
|
||||
app:layout_constraintVertical_bias="0"
|
||||
/>
|
||||
|
||||
<!-- Contenedor de los demás datos debajo del RecyclerView -->
|
||||
<ScrollView
|
||||
android:id="@+id/scrollView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/setttings_items"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/navigation_row_min_padding"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/main_toolbar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/setttings_items"
|
||||
>
|
||||
|
||||
<!-- Resto de los elementos, como versiones, usuarios, etc. -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/default_layout_margin"
|
||||
android:text="@string/version"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body1"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_version"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/default_layout_margin"
|
||||
android:text=""
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body1" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/default_layout_margin"
|
||||
android:text="@string/user"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body1"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/user_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/default_layout_margin"
|
||||
android:text=""
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body1" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/default_layout_margin"
|
||||
android:text="@string/Androidid"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body1"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/androidid_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/default_layout_margin"
|
||||
android:text=""
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body1"
|
||||
android:tooltipText="@string/copied" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/default_layout_margin"
|
||||
android:text="@string/serialNumber"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body1"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/serial_number"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/default_layout_margin"
|
||||
android:text=""
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body1" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
|
||||
app:layout_constraintVertical_bias="0" />
|
||||
|
||||
<!-- Splash progress en el centro de la pantalla -->
|
||||
<LinearLayout
|
||||
|
@ -163,7 +68,7 @@
|
|||
android:background="@color/verdnatura_black_8_alpha_6"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
|
@ -57,8 +57,8 @@
|
|||
android:textColor="@color/verdnatura_pumpkin_orange"
|
||||
android:textColorHint="#78909C"
|
||||
android:visibility="visible"
|
||||
tools:ignore="TextContrastCheck"
|
||||
app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp" />
|
||||
app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp"
|
||||
tools:ignore="TextContrastCheck" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -111,9 +111,19 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
tools:listitem="@layout/item_inventary_row" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<es.verdnatura.presentation.view.commom.SearchableRecyclerView
|
||||
android:id="@+id/searchableRecyclerView"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/main_toolbar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
|
||||
app:layout_constraintVertical_bias="0" />
|
||||
|
||||
<include
|
||||
android:id="@+id/main_toolbar"
|
||||
layout="@layout/toolbar_fragment"
|
||||
|
|
|
@ -49,7 +49,6 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:backgroundTint="@android:color/white"
|
||||
app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp"
|
||||
android:focusable="false"
|
||||
android:hint="@string/suppliers"
|
||||
android:lines="1"
|
||||
|
@ -57,7 +56,8 @@
|
|||
android:textAlignment="center"
|
||||
android:textColor="@color/verdnatura_pumpkin_orange"
|
||||
android:textColorHint="@android:color/darker_gray"
|
||||
android:visibility="visible" />
|
||||
android:visibility="visible"
|
||||
app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -73,10 +73,9 @@
|
|||
android:id="@+id/filter_entry"
|
||||
style="@style/InputLineTextSearch"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_weight="1"
|
||||
android:backgroundTint="@android:color/white"
|
||||
app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp"
|
||||
android:focusable="false"
|
||||
android:hint="@string/entry"
|
||||
android:lines="1"
|
||||
|
@ -84,11 +83,34 @@
|
|||
android:textAlignment="center"
|
||||
android:textColor="@color/verdnatura_pumpkin_orange"
|
||||
android:textColorHint="@android:color/darker_gray"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="invisible"
|
||||
app:drawableEndCompat="@drawable/ic_arrow_drop_down_black_24dp" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<es.verdnatura.presentation.view.commom.SearchableRecyclerView
|
||||
android:id="@+id/searchableSuplierRecyclerView"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/main_toolbar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
|
||||
app:layout_constraintVertical_bias="0" />
|
||||
|
||||
<es.verdnatura.presentation.view.commom.SearchableRecyclerView
|
||||
android:id="@+id/searchableEntriesRecyclerView"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/main_toolbar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
|
||||
app:layout_constraintVertical_bias="0" />
|
||||
|
||||
<include
|
||||
android:id="@+id/main_toolbar"
|
||||
layout="@layout/toolbar_fragment"
|
||||
|
@ -96,5 +118,5 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
|
@ -1,6 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
|
@ -8,228 +7,227 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView20"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/km"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView28"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/hours"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout7" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:background="@color/colorPrimary"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView20" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout6"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout2">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView20"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/km"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView2"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/textView28"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/km_init"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/hours"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp" />
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout7" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText"
|
||||
android:layout_width="match_parent"
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:background="@color/colorPrimary"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView20" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout6"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:ems="10"
|
||||
android:autofillHints="phone"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout2">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/km_init"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:autofillHints="phone"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:ems="10"
|
||||
android:hint="@string/zero"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="number"
|
||||
android:maxLines="1"
|
||||
android:padding="5dp"
|
||||
android:text="@string/zero" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout7"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:inputType="number"
|
||||
android:padding="5dp"
|
||||
android:text="@string/zero"
|
||||
android:hint="@string/zero"
|
||||
android:imeOptions="actionDone"
|
||||
android:maxLines="1"/>
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout6">
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout7"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
android:inputType="number"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout6">
|
||||
<TextView
|
||||
android:id="@+id/textView21"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/km_end"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:autofillHints="phone"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:ems="10"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="number"
|
||||
android:maxLines="1"
|
||||
android:padding="5dp"
|
||||
android:text="@string/zero" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout8"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:background="@color/colorPrimary"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView28" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout9"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout8">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView212"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/hour_start"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText12"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:autofillHints="text"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:ems="10"
|
||||
android:focusable="false"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:padding="5dp"
|
||||
android:text="@string/zeroHour" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout9">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView2123"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
|
||||
android:text="@string/hour_end"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText123"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:autofillHints="text"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:ems="10"
|
||||
android:focusable="false"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:padding="5dp"
|
||||
android:text="@string/zeroHour" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView21"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/textView37"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/km_end"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:ems="10"
|
||||
android:autofillHints="phone"
|
||||
android:inputType="number"
|
||||
android:padding="5dp"
|
||||
android:text="@string/zero"
|
||||
android:imeOptions="actionDone"
|
||||
android:maxLines="1"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout8"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:background="@color/colorPrimary"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/textView28" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout9"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout8">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView212"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
|
||||
android:text="@string/hour_start"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText12"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:ems="10"
|
||||
android:padding="5dp"
|
||||
android:inputType="text"
|
||||
android:autofillHints="text"
|
||||
android:text="@string/zeroHour"
|
||||
android:imeOptions="actionDone"
|
||||
android:maxLines="1"
|
||||
android:focusable="false"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/linearLayout9">
|
||||
<TextView
|
||||
android:id="@+id/textView2123"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
|
||||
android:text="@string/hour_end"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/editText123"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:ems="10"
|
||||
android:padding="5dp"
|
||||
android:text="@string/zeroHour"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="text"
|
||||
android:autofillHints="text"
|
||||
android:maxLines="1"
|
||||
android:focusable="false"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textView37"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="17dp"
|
||||
android:text="@string/save"
|
||||
android:textAlignment="center"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
/>
|
||||
android:layout_marginBottom="17dp"
|
||||
android:text="@string/save"
|
||||
android:textAlignment="center"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
|
@ -0,0 +1,101 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/toolbar_height"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/textinputlayout_username"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColorHint="@android:color/darker_gray">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
style="@style/InputLineTextSearch"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:backgroundTint="@android:color/white"
|
||||
android:drawableEnd="@drawable/ic_calendar"
|
||||
android:gravity="center"
|
||||
android:hint="@string/Fecha"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textColorHint="@android:color/darker_gray" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/layout_margin_min"
|
||||
android:layout_marginBottom="@dimen/layout_margin_1"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="@dimen/layout_margin_min"
|
||||
android:paddingEnd="@dimen/layout_margin_min">
|
||||
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/complement"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/body2" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/salaryComplementRecyclerview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
tools:listitem="@layout/item_salary_complement_row" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<es.verdnatura.presentation.view.commom.SearchableRecyclerView
|
||||
android:id="@+id/salarySearchableRecyclerView"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/main_toolbar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
|
||||
app:layout_constraintVertical_bias="0" />
|
||||
|
||||
<include
|
||||
android:id="@+id/main_toolbar"
|
||||
layout="@layout/toolbar_fragment"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
|
@ -101,6 +101,7 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/workermistake_recyclerview"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -110,6 +111,17 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<es.verdnatura.presentation.view.commom.SearchableRecyclerView
|
||||
android:id="@+id/searchableRecyclerView"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/main_toolbar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/main_toolbar"
|
||||
app:layout_constraintVertical_bias="0" />
|
||||
|
||||
<include
|
||||
android:id="@+id/main_toolbar"
|
||||
layout="@layout/toolbar_fragment"
|
||||
|
|
|
@ -50,16 +50,17 @@
|
|||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"
|
||||
android:text="@string/Nivel"
|
||||
android:textColor="@color/verdnatura_black"
|
||||
android:textSize="@dimen/h8" />
|
||||
android:textSize="@dimen/h9" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/level"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="@{sale.level}"
|
||||
android:textColor="@color/verdnatura_black"
|
||||
android:textSize="@dimen/h8"
|
||||
|
@ -69,10 +70,9 @@
|
|||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"
|
||||
android:text="@string/Ticket"
|
||||
android:textColor="@color/verdnatura_black"
|
||||
android:textSize="@dimen/h8" />
|
||||
android:textSize="@dimen/h9" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/ticketFk"
|
||||
|
@ -81,10 +81,18 @@
|
|||
android:text="@{sale.ticketFk}"
|
||||
android:textColor="@color/verdnatura_black"
|
||||
android:textSize="@dimen/h8"
|
||||
android:textStyle="bold"
|
||||
tool:text="123456789"
|
||||
android:textStyle="bold" />
|
||||
<!-- app:drawableEndCompat="@drawable/ic_click_black"-->
|
||||
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/parkingCode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text='@{String.format("(%s)", sale.parkingCode)}'
|
||||
android:textColor="@color/verdnatura_black"
|
||||
android:textSize="@dimen/caption"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
|
@ -184,7 +192,6 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_margin_min_to_modify"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"
|
||||
android:maxLines="1"
|
||||
android:text="@{Long.toString(sale.itemFk)}"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
|
@ -193,7 +200,7 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/linearLayout3"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tool:text="85478" />
|
||||
|
||||
<!--app:drawableEndCompat="@drawable/ic_click"-->
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_article_quantity_pickedOld"
|
||||
|
@ -440,7 +447,6 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:background="@color/verdnatura_background_item_picker"
|
||||
android:clipToPadding="false"
|
||||
|
||||
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||
tools:listitem="@layout/item_placement_row"
|
||||
tools:orientation="horizontal" />
|
||||
|
|
|
@ -14,17 +14,16 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/ef_padding_small"
|
||||
>
|
||||
android:padding="@dimen/ef_padding_small">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/expeditionDivider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:orientation="horizontal" />
|
||||
<LinearLayout
|
||||
android:id="@+id/expeditionDivider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/verdnatura_white"
|
||||
android:orientation="horizontal" />
|
||||
|
||||
<LinearLayout
|
||||
<LinearLayout
|
||||
android:id="@+id/expeditionConsign"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -84,6 +83,7 @@
|
|||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/expeditionViewAdress"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -95,7 +95,7 @@
|
|||
android:id="@+id/itemStreet"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:layout_weight="4"
|
||||
android:gravity="start"
|
||||
android:text="@{item.street + ` - ` + item.city + ` - ` + String.valueOf(item.postalCode)}"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
|
@ -103,6 +103,24 @@
|
|||
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/scanOrderLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:text="Orden:"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/delivery_body_2" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/scanOrderTxt"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@{String.valueOf(item.scanOrder)}"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/delivery_body_2" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
|
|
@ -8,63 +8,67 @@
|
|||
name="item"
|
||||
type="es.verdnatura.presentation.view.feature.sacador.model.PlacementVO" />
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/item_root_layout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/layout_margin_1"
|
||||
android:gravity="center"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"
|
||||
android:background="@color/verdnatura_background_item_picker">
|
||||
android:background="@color/verdnatura_background_item_picker"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/layout_margin_1">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{item.placement}"
|
||||
tool:text="053-05"
|
||||
android:textColor="@color/verdnatura_pumpkin_orange"
|
||||
android:textStyle="bold"
|
||||
android:textSize="@dimen/h7"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{item.shelving}"
|
||||
tool:text="YIC"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"
|
||||
android:text="@{item.placement}"
|
||||
android:textColor="@color/verdnatura_pumpkin_orange"
|
||||
android:textSize="@dimen/h7"
|
||||
android:textStyle="bold"
|
||||
android:textSize="@dimen/h8"/>
|
||||
tool:text="053-05" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/placementcode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{item.shelving}"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/h8"
|
||||
android:textStyle="bold"
|
||||
tool:text="YIC" />
|
||||
<!-- app:drawableEndCompat="@drawable/ic_click"-->
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"
|
||||
android:text="@{item.created}"
|
||||
tool:text="28/05 "
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/h8"
|
||||
android:layout_marginEnd="@dimen/layout_margin_min"/>
|
||||
tool:text="28/05 " />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{item.visible}"
|
||||
tool:text="260"
|
||||
android:textColor="@color/verdnatura_white"
|
||||
android:textSize="@dimen/h8"/>
|
||||
android:textSize="@dimen/h8"
|
||||
tool:text="260" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
</layout>
|
|
@ -0,0 +1,81 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tool="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
<variable
|
||||
name="item"
|
||||
type="es.verdnatura.presentation.view.feature.delivery.model.RouteComplement" />
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/verdnatura_black_5"
|
||||
android:paddingStart="@dimen/pasilleros_margin_main_picker"
|
||||
android:paddingTop="@dimen/pasilleros_margin_main_menu"
|
||||
android:paddingEnd="@dimen/pasilleros_margin_main_picker"
|
||||
android:paddingBottom="@dimen/pasilleros_margin_main_menu">
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_date"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_weight="1.75"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start"
|
||||
android:text="@{item.dated}"
|
||||
android:textColor="@color/verdnatura_pumpkin_orange"
|
||||
android:textSize="@dimen/row"
|
||||
tool:text="6-11-2024" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_complement"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:text="@{item.routeAction.name}"
|
||||
android:textColor="@color/verdnatura_pumpkin_orange"
|
||||
android:textSize="@dimen/row"
|
||||
tool:text="de la Torre Nebot" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_prize"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="5dp"
|
||||
android:gravity="start"
|
||||
android:text="@{String.valueOf(item.price)}"
|
||||
android:textColor="@color/verdnatura_pumpkin_orange"
|
||||
android:textSize="@dimen/row"
|
||||
android:visibility="gone"
|
||||
tool:text="30" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageDelete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:contentDescription="@string/error"
|
||||
android:gravity="center"
|
||||
app:srcCompat="@drawable/ic_delete_black_24dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</layout>
|
|
@ -448,6 +448,18 @@
|
|||
android:textColor="@color/verdnatura_white"
|
||||
tool:text="Cantidad original 100" />
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/addItem"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/verdnatura_red"
|
||||
android:gravity="end"
|
||||
android:src="@drawable/ic_add_black_24dp"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/delete_reserve"
|
||||
android:layout_width="0dp"
|
||||
|
@ -456,7 +468,7 @@
|
|||
android:background="@color/verdnatura_red"
|
||||
android:gravity="end"
|
||||
android:src="@drawable/ic_delete_black_24dp"
|
||||
android:visibility="invisible"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp">
|
||||
|
||||
<es.verdnatura.presentation.view.commom.SearchableRecyclerView
|
||||
android:id="@+id/searchable_recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp" />
|
||||
</LinearLayout>
|
|
@ -9,7 +9,7 @@
|
|||
<string name="Pallet">Pallet</string>
|
||||
<string name="Ruta">Ruta</string>
|
||||
<string name="Cajas">Cajas</string>
|
||||
<string name="Nivel">Niv:</string>
|
||||
<string name="Nivel">N:</string>
|
||||
<string name="de">de</string>
|
||||
<string name="Ticket">T:</string>
|
||||
<string name="Concepto">Concepto</string>
|
||||
|
@ -74,7 +74,7 @@
|
|||
<string name="BasuraRechazar">Basura</string>
|
||||
<string name="Indicanuevacantidad">Indica nueva cantidad</string>
|
||||
<string name="packingQuantity">Indica nuevo packing para el item :</string>
|
||||
<string name="Coleccióncompleta">Colección completa</string>
|
||||
<string name="completCollection">Colección completa</string>
|
||||
<string name="Parking">Parking</string>
|
||||
<string name="Reject">Rechazar</string>
|
||||
<string name="cmrError">No se ha podido asociar el pallet al CMR.</string>
|
||||
|
@ -728,6 +728,7 @@
|
|||
<string name="m3">m3</string>
|
||||
<string name="options">Opciones</string>
|
||||
<string name="hourMinute">%1$d:%2$d</string>
|
||||
<string name="dateDay">%1$02d-%2$02d-%3$04d</string>
|
||||
<string name="level">Nivel:</string>
|
||||
<string name="ticketAbb">-T:</string>
|
||||
<string name="signPackaging">Firma:</string>
|
||||
|
@ -882,6 +883,32 @@
|
|||
<string name="deleteExpedition">Borrar expedición</string>
|
||||
<string name="deleleExpeditionDescrip">Borrar expedición de reparto ,MRW o ViaExpress</string>
|
||||
<string name="errorBoxpicking">Caja preparada no válida.</string>
|
||||
<string name="indicateQuantity">Indica la cantidad</string>
|
||||
<string name="addItemQuantity">El artículo: %1$s va a ser añadido con la siguiente cantidad:</string>
|
||||
<string name="errorPrintBuy">El artículo no se puede imprimir. No se ha obtenido el código de compra(buy)</string>
|
||||
<string name="itemName">Artículo %1$d : %2$s</string>
|
||||
<string name="printQr">Imprimir QR</string>
|
||||
<string name="printBarcode">Imprimir BARCODE</string>
|
||||
<string name="labelNumber">Indica número de etiquetas</string>
|
||||
<string name="optionalPacking">Packing(opcional)</string>
|
||||
<string name="holdpositionAuto">Al revisar desplazar:</string>
|
||||
<string name="parkingIn">Aparcado en %1$s</string>
|
||||
<string name="filterLevelColor">Al pulsar filtras o no la lista por el color del nivel</string>
|
||||
<string name="salarySupplementTitle">Complementos salariales reparto</string>
|
||||
<string name="complement">Tus complementos:</string>
|
||||
<string name="supplementDelivery">Complementos reparto</string>
|
||||
<string name="moveExpedition">Mueve expedición/es a otra ruta</string>
|
||||
<string name="boxScanned">Caja ya escaneada</string>
|
||||
<string name="selectRoute">Selecciona ruta destino</string>
|
||||
<string name="moveToRoute">Mover a nueva ruta</string>
|
||||
<string name="scanExpeditionForMove">Escanea la/s caja/s que cambia/n de ruta</string>
|
||||
<string name="ticketPickup">Ticket de recogida</string>
|
||||
<string name="ticketPickupDescr">El ticket %1$s van a pasar a recogerlo</string>
|
||||
<string name="departamentSearch">Escribe departamento</string>
|
||||
<string name="BuyerSearch">Escribe comprador</string>
|
||||
<string name="sectorSearch">Escribe sector</string>
|
||||
<string name="supplierSearch">Escribe proveedor</string>
|
||||
<string name="entrySearch">Escribe entrada</string>
|
||||
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<string name="Pallet">Pallet</string>
|
||||
<string name="Ruta">Route</string>
|
||||
<string name="Cajas">Cajas</string>
|
||||
<string name="Nivel">Niv:</string>
|
||||
<string name="Nivel">N:</string>
|
||||
<string name="de">de</string>
|
||||
<string name="Ticket">T:</string>
|
||||
<string name="Concepto">Concepto</string>
|
||||
|
@ -74,7 +74,7 @@
|
|||
<string name="BasuraRechazar">Basura</string>
|
||||
<string name="Indicanuevacantidad">Indica nueva cantidad</string>
|
||||
<string name="packingQuantity">Indica nuevo packing para el item :</string>
|
||||
<string name="Coleccióncompleta">Colección completa</string>
|
||||
<string name="completCollection">Colección completa</string>
|
||||
<string name="Parking">Parking</string>
|
||||
<string name="Reject">Rechazar</string>
|
||||
<string name="cmrError">No se ha podido asociar el pallet al CMR.</string>
|
||||
|
@ -728,6 +728,7 @@
|
|||
<string name="m3">m3</string>
|
||||
<string name="options">Opciones</string>
|
||||
<string name="hourMinute">%1$d:%2$d</string>
|
||||
<string name="dateDay">%1$02d-%2$02d-%3$04d</string>
|
||||
<string name="level">Nivel:</string>
|
||||
<string name="ticketAbb">-T:</string>
|
||||
<string name="signPackaging">Firma:</string>
|
||||
|
@ -882,5 +883,31 @@
|
|||
<string name="deleteExpedition">Borrar expedición</string>
|
||||
<string name="deleleExpeditionDescrip">Borrar expedición de reparto ,MRW o ViaExpress</string>
|
||||
<string name="errorBoxpicking">Caja preparada no válida.</string>
|
||||
<string name="indicateQuantity">Indica la cantidad</string>
|
||||
<string name="addItemQuantity">El artículo: %1$s va a ser añadido con la siguiente cantidad:</string>
|
||||
<string name="errorPrintBuy">El artículo no se puede imprimir. No se ha obtenido el código de compra(buy)</string>
|
||||
<string name="itemName">Artículo %1$d : %2$s</string>
|
||||
<string name="printQr">Imprimir QR</string>
|
||||
<string name="printBarcode">Imprimir BARCODE</string>
|
||||
<string name="labelNumber">Indica número de etiquetas</string>
|
||||
<string name="optionalPacking">Packing(opcional)</string>
|
||||
<string name="holdpositionAuto">Al revisar desplazar:</string>
|
||||
<string name="parkingIn">Aparcado en %1$s</string>
|
||||
<string name="filterLevelColor">Al pulsar filtras o no la lista por color del nivel</string>
|
||||
<string name="salarySupplementTitle">Complementos salariales reparto</string>
|
||||
<string name="complement">Tus complementos:</string>
|
||||
<string name="supplementDelivery">Complementos reparto</string>
|
||||
<string name="moveExpedition">Mueve expedición/es a otra ruta</string>
|
||||
<string name="boxScanned">Caja ya escaneada</string>
|
||||
<string name="selectRoute">Selecciona ruta destino</string>
|
||||
<string name="moveToRoute">Mover a nueva ruta</string>
|
||||
<string name="scanExpeditionForMove">Escanea la/s caja/s que cambia/n de ruta</string>
|
||||
<string name="ticketPickup">Ticket de recogida</string>
|
||||
<string name="ticketPickupDescr">El ticket %1$s van a pasar a recogerlo</string>
|
||||
<string name="departamentSearch">Escribe departamento</string>
|
||||
<string name="BuyerSearch">Escribe comprador</string>
|
||||
<string name="sectorSearch">Escribe sector</string>
|
||||
<string name="supplierSearch">Escribe proveedor</string>
|
||||
<string name="entrySearch">Escribe entrada</string>
|
||||
|
||||
</resources>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue