Compare commits

...

78 Commits

Author SHA1 Message Date
1645fba77c Finish v1.18.6(236) 2021-10-07 10:53:32 +02:00
93c3350cb2 -> v1.18.6 (236) 2021-10-07 10:53:26 +02:00
2b97faaa65 Fix su decimali nel caso di FlagDig 2021-10-07 10:52:44 +02:00
9260379c5f Invalidata la cache del menu durante il logout 2021-09-30 15:23:54 +02:00
35e7fd60be Finish v1.18.5(235) 2021-09-30 13:35:49 +02:00
1bbe5818f8 Finish v1.18.5(235) 2021-09-30 13:35:48 +02:00
65d372c04c -> v1.18.5 (235) 2021-09-30 13:35:42 +02:00
be1c5ecd0b Sistemato caricamento menu laterale (Drawer) 2021-09-30 13:35:09 +02:00
30e16fb765 Finish v1.18.4(234) 2021-09-27 19:08:16 +02:00
effff99e9a Finish v1.18.4(234) 2021-09-27 19:08:15 +02:00
c40bb8d7b0 -> v1.18.4 (234) 2021-09-27 19:08:08 +02:00
a7063c70eb Invertito boolean di fakeGiacenza in Spedizione 2021-09-27 19:07:03 +02:00
512f5b0de3 Finish v1.18.3(233) 2021-09-27 12:50:13 +02:00
e306c28723 Finish v1.18.3(233) 2021-09-27 12:50:12 +02:00
f361701ad9 -> v1.18.3 (233) 2021-09-27 12:50:05 +02:00
aa00c440b0 Fix su qta_cnf in Fabbisogno linee prod 2021-09-27 12:49:24 +02:00
df2a566322 Finish v1.8.2(232) 2021-09-27 10:53:59 +02:00
eb83f8babb Finish v1.8.2(232) 2021-09-27 10:53:59 +02:00
e21946fe23 -> v1.18.2 (232) 2021-09-27 10:53:51 +02:00
30b5053a22 Risolto controllo su UL e CodArt in AddExtraItems 2021-09-27 10:53:06 +02:00
914618cfeb Finish v1.8.1(231) 2021-09-27 10:28:33 +02:00
53ebf6ff14 Finish v1.8.1(231) 2021-09-27 10:28:33 +02:00
34c2065041 -> v1.18.1 (231) 2021-09-27 10:28:26 +02:00
db7ceedb4a Rimosso controllo errato su ean128 2021-09-27 10:27:54 +02:00
1ef70c4f3a Sistemato arrotondamento decimali in fase di picking uscita 2021-09-24 12:12:37 +02:00
e1eae00e01 Finish v1.18.0(230) 2021-09-23 11:44:29 +02:00
f8533daeed Finish v1.18.0(230) 2021-09-23 11:44:28 +02:00
ff4d71e616 -> v1.18.0 (230) 2021-09-23 11:44:22 +02:00
8015961054 Finish MenuRefactoring 2021-09-23 11:42:02 +02:00
a9164109da Fix su refMtbColr 2021-09-23 11:41:32 +02:00
4a884b92ad Sistemata libreria Honeywell 2021-09-15 19:15:30 +02:00
6f15169157 Vario ed eliminazione delle personalizzazioni non più necessarie 2021-09-15 18:56:52 +02:00
eb99c9d8cf Aggiunto controllo su data scadenza < oggi 2021-09-10 12:22:04 +02:00
0cc31a4a8e Implementato controllo su barcode UL/Articolo in fase di add extra item. 2021-09-09 16:49:40 +02:00
a6664102db Vario 2021-09-02 09:56:15 +02:00
eaeef05e64 Vario 2021-08-12 11:02:50 +02:00
98b6a32126 Rename 2021-08-11 15:20:42 +02:00
fcddda8e3f Refactoring di Versamento e Recupero materiale produzione 2021-08-11 15:19:35 +02:00
9033548455 Refactoring dialog filtro accettazione ordini produzione 2021-08-06 15:35:25 +02:00
18b4b08e1b Refactoring accettazione ordini produzione 2021-08-06 13:30:03 +02:00
627d3646a6 Refactoring activity lista bancali 2021-08-06 11:37:26 +02:00
8d87970a75 Renaming 2021-08-06 10:22:48 +02:00
ea6b26e00f Refactoring activity contenuto bancale 2021-08-05 19:11:44 +02:00
624a880ad5 Refactoring main list accettazione 2021-08-05 18:24:50 +02:00
fbcda5eaf6 Implementato servizio di retrieve menu 2021-08-05 15:25:06 +02:00
fbe095b7f7 Refactoring splash screen 2021-08-05 13:07:05 +02:00
d4bd92ec90 Finish v1.17.9(229) 2021-07-26 11:52:29 +02:00
c3ee5519b4 Finish v1.17.9(229) 2021-07-26 11:52:28 +02:00
1394725286 -> v1.17.9 (928) 2021-07-26 11:52:22 +02:00
b4cf8f629c Implementato Assegna lotto su collo scarico 2021-07-26 11:42:21 +02:00
ec49384b58 Finish v1.17.8(228) 2021-07-21 17:49:30 +02:00
0404863e3d Finish v1.17.8(228) 2021-07-21 17:49:29 +02:00
b71d627f99 -> v1.17.8 (228) 2021-07-21 17:49:24 +02:00
403541c8e0 Fix su background color del DialogInputQuantity 2021-07-21 17:48:51 +02:00
f1e2a3a536 Finish v1.17.7(227) 2021-07-20 18:31:33 +02:00
23bb284cff Finish v1.17.7(227) 2021-07-20 18:31:32 +02:00
449955f182 -> v1.17.7 (227) 2021-07-20 18:31:27 +02:00
15d3b1858a Migliorie a Rientro Merce 2021-07-20 18:30:57 +02:00
cfb3acc33d Finish v1.17.6(226) 2021-07-20 13:07:07 +02:00
61768fb2d0 Finish v1.17.6(226) 2021-07-20 13:07:06 +02:00
d782e8667a -> v1.17.6 (226) 2021-07-20 13:07:01 +02:00
e3d366b7a5 Fix su rendering in Rientro Merce da produzione 2021-07-20 13:06:17 +02:00
c64112835b Merge tag 'v.1.17.5(225)' into develop
Finish v.1.17.5(225)
2021-07-20 12:01:09 +02:00
7ebc5de620 Finish v.1.17.5(225) 2021-07-20 12:01:08 +02:00
aa93dc489e -> 1.17.5 (225) 2021-07-20 12:00:58 +02:00
6c1be3a7bc Finish v1.7.4(224) 2021-07-20 10:31:34 +02:00
18593c7fa0 Merge branch 'master' into develop 2021-07-20 10:31:34 +02:00
3a6b87ba47 -> v1.7.4 (224) 2021-07-20 10:31:28 +02:00
95ee04fc2a Finish v1.17.4(223) 2021-07-20 10:01:54 +02:00
1d3113ce2e Merge branch 'master' into develop 2021-07-20 10:01:54 +02:00
ef3bac3b0b Revert build gradle 2021-07-20 10:01:47 +02:00
d5f590bfda Finish v1.17.4(222) 2021-07-19 19:17:58 +02:00
1b0f9fb4de Finish v1.17.4(222) 2021-07-19 19:17:57 +02:00
b1e309dc1c -> v1.17.4 (222) 2021-07-19 19:17:52 +02:00
6da020c5cc Implementato rientro merce da produzione 2021-07-19 19:17:19 +02:00
da4d66ecfe Merge tag 'v1.17.3(221)' into develop
Finish v1.17.3(221)
2021-07-16 11:36:36 +02:00
86c99a99ca Merge tag 'zebra_tc210k' into develop
Finish zebra_tc210k
2021-07-16 11:34:21 +02:00
42746b3656 Finish v1.17.2(220) 2021-06-08 15:58:21 +02:00
336 changed files with 11972 additions and 6372 deletions

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@@ -7,7 +7,8 @@
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,WMS_Native.dynamic_vgalimenti,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv,dynamic_vgalimenti" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic_agricoper,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,WMS_Native.dynamic_vgalimenti,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv,dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />

View File

@@ -1,59 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_frudis" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic__base,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,WMS_Native.dynamic_vgalimenti,dynamic__base,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv,dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="true" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -1,59 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_gramm" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic__base,WMS_Native.dynamic_frudis,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,WMS_Native.dynamic_vgalimenti,dynamic__base,dynamic_frudis,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv,dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="false" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -1,59 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_ime" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic__base,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,WMS_Native.dynamic_vgalimenti,dynamic__base,dynamic_frudis,dynamic_gramm,dynamic_saporiveri,dynamic_saporiveri_pv,dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="false" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -1,59 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_saporiveri" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic__base,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri_pv,WMS_Native.dynamic_vgalimenti,dynamic__base,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri_pv,dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -1,59 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_saporiveri_pv" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic__base,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_vgalimenti,dynamic__base,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -7,7 +7,8 @@
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic__base,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,dynamic__base,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS_Native.dynamic__base,WMS_Native.dynamic_agricoper,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,dynamic__base,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />

View File

@@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 221
def appVersionName = '1.17.3'
def appVersionCode = 236
def appVersionName = '1.18.6'
signingConfigs {
release {
@@ -15,6 +15,9 @@ android {
keyPassword 'inpmiy'
storeFile file('Integry.jks')
storePassword 'inpmiy'
enableV3Signing true
enableV4Signing true
}
}
@@ -50,8 +53,9 @@ android {
android.buildFeatures.dataBinding true
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
productFlavors {
}
@@ -72,10 +76,9 @@ android {
lintOptions {
abortOnError false
checkReleaseBuilds false
}
dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv", ":dynamic_saporiveri", ':dynamic_gramm']
dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti"]
}

View File

@@ -25,16 +25,18 @@
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity"
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".gest.picking_resi.PickingResiActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" />
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:name=".gest.main.MainActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustPan">
android:windowSoftInputMode="adjustNothing">
<intent-filter>
<action android:name="android.intent.action.CLIENTBARCODEACTIVITY" />
@@ -48,7 +50,6 @@
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".gest.login.LoginActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" />
<activity
android:name=".gest.lista_bancali.ListaBancaliActivity"

View File

@@ -4,6 +4,8 @@ import android.app.Application;
import android.content.res.Configuration;
import android.content.res.Resources;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
@@ -17,7 +19,8 @@ public class MainApplication extends Application {
public static MainApplicationModule appModule;
public static RoomModule roomModule;
private AppContext appContext = new AppContext(this);
@Inject
AppContext appContext;
@@ -27,16 +30,15 @@ public class MainApplication extends Application {
public void onCreate() {
super.onCreate();
appModule = new MainApplicationModule(MainApplication.this, this);
appModule = new MainApplicationModule(this);
roomModule = new RoomModule(this);
appComponent = DaggerMainApplicationComponent.builder()
.mainApplicationModule(appModule)
.roomModule(roomModule)
.build();
appComponent.inject(appContext);
appComponent.inject(this);
appContext.init();
res = getResources();
}

View File

@@ -5,22 +5,40 @@ import javax.inject.Singleton;
import dagger.Component;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneComponent;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneModule;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliModule;
import it.integry.integrywmsnative.gest.main.MainActivityComponent;
import it.integry.integrywmsnative.gest.main.MainActivityModule;
import it.integry.integrywmsnative.gest.main.MainFragmentComponent;
import it.integry.integrywmsnative.gest.main.MainFragmentModule;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoComponent;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoModule;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoComponent;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoModule;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdComponent;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdModule;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaComponent;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaModule;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeComponent;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.ProdRientroMerceOrderDetailComponent;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeComponent;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
@@ -33,8 +51,12 @@ import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviForn
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
@@ -45,10 +67,15 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
// Definition of the Application graph
@Singleton
@Component(modules = {
MainApplicationModule.class,
RoomModule.class,
SplashActivityModule.class,
MainApplicationModule.class,
MainActivityModule.class,
PVOrdineAcquistoGrigliaModule.class,
MainFragmentModule.class,
MainAccettazioneModule.class,
ListaBancaliModule.class,
ContenutoBancaleModule.class,
PVOrdiniAcquistoGrigliaModule.class,
PVOrdineAcquistoEditModule.class,
PickingLiberoModule.class,
RettificaGiacenzeModule.class,
@@ -59,17 +86,28 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
PickingResiModule.class,
OrdiniUscitaElencoModule.class,
DialogInputQuantityV2Module.class,
DialogInputLUProdModule.class,
DialogScanArtModule.class,
DialogScanOrCreateLUModule.class,
ProdFabbisognoLineeProdModule.class,
VersamentoMerceModule.class,
DialogAskMagazzinoProssimitaModule.class,
DialogChooseBatchLotModule.class,
DialogRowInfoProdFabbisognoLineeProdModule.class})
DialogRowInfoProdFabbisognoLineeProdModule.class,
ProdOrdineProduzioneElencoModule.class,
ProdRecuperoMaterialeModule.class,
ProdVersamentoMaterialeModule.class,
DialogChooseArtsFromListaArtsModule.class
})
public interface MainApplicationComponent {
SplashActivityComponent.Factory splashActivityComponent();
MainActivityComponent.Factory mainActivityComponent();
PVOrdineAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent();
MainFragmentComponent.Factory mainFragmentComponent();
MainAccettazioneComponent.Factory mainAccettazioneComponent();
ListaBancaliComponent.Factory listaBancaliComponent();
ContenutoBancaleComponent.Factory contenutoBancaleComponent();
PVOrdiniAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent();
PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent();
PickingLiberoComponent.Factory pickingLiberoComponent();
RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
@@ -80,6 +118,7 @@ public interface MainApplicationComponent {
PickingResiComponent.Factory pickingResiComponent();
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
DialogInputLUProdComponent.Factory dialogInputLUProdComponent();
DialogScanArtComponent.Factory dialogScanArtComponent();
DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent();
ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent();
@@ -87,8 +126,15 @@ public interface MainApplicationComponent {
DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent();
DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent();
DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent();
ProdRientroMerceComponent.Factory prodRientroMerceComponent();
ProdRientroMerceOrderDetailComponent.Factory prodRientroMerceOrderDetailComponent();
ProdOrdineProduzioneElencoComponent.Factory prodOrdineProduzioneElencoComponent();
ProdRecuperoMaterialeComponent.Factory prodRecuperoMaterialeComponent();
ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent();
DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent();
void inject(AppContext appContext);
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);
}

View File

@@ -1,17 +1,25 @@
package it.integry.integrywmsnative;
import android.app.Application;
import android.content.Context;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.menu.MenuRESTConsumer;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
@@ -21,11 +29,9 @@ import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabb
@Module
public class MainApplicationModule {
private final Context mContext;
private final Application mApplication;
public MainApplicationModule(Context context, Application application) {
this.mContext = context;
public MainApplicationModule(Application application) {
this.mApplication = application;
}
@@ -37,14 +43,34 @@ public class MainApplicationModule {
@Provides
@Singleton
ColliDataRecoverService provideColliDataRecoverService() {
return new ColliDataRecoverService();
AppContext providesAppContext() {
return new AppContext(mApplication);
}
@Provides
@Singleton
OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new OrdiniRESTConsumer(systemRESTConsumer);
MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase) {
return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase);
}
@Provides
@Singleton
ColliDataRecoverService provideColliDataRecoverService() {
ColliDataRecoverService colliDataRecoverService = new ColliDataRecoverService(mApplication.getApplicationContext());
colliDataRecoverService.init();
return colliDataRecoverService;
}
@Provides
@Singleton
MenuService provideMenuService(MenuRESTConsumer menuRESTConsumer) {
return new MenuService(menuRESTConsumer);
}
@Provides
@Singleton
OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
return new OrdiniRESTConsumer(systemRESTConsumer, entityRESTConsumer);
}
@Provides
@@ -61,8 +87,38 @@ public class MainApplicationModule {
@Provides
@Singleton
ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) {
return new ColliMagazzinoRESTConsumer(articoloRESTConsumer);
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer) {
return new DepositoRESTConsumer(entityRESTConsumer);
}
@Provides
@Singleton
MenuRESTConsumer provideMenuRESTConsumer() {
return new MenuRESTConsumer();
}
@Provides
@Singleton
MagazzinoRESTConsumer provideMagazzinoRESTConsumer() {
return new MagazzinoRESTConsumer();
}
@Provides
@Singleton
MesRESTConsumer provideMesRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new MesRESTConsumer(systemRESTConsumer);
}
@Provides
@Singleton
EntityRESTConsumer provideEntityRESTConsumer() {
return new EntityRESTConsumer();
}
@Provides
@Singleton
ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
return new ColliMagazzinoRESTConsumer(systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer);
}
@Provides
@@ -96,5 +152,4 @@ public class MainApplicationModule {
}
}

View File

@@ -5,6 +5,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
@@ -12,6 +13,8 @@ import androidx.databinding.DataBindingUtil;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
@@ -20,14 +23,18 @@ import it.integry.integrywmsnative.core.utility.PermissionsHelper;
import it.integry.integrywmsnative.core.utility.UtilityContext;
import it.integry.integrywmsnative.databinding.ActivitySplashBinding;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.main.MainActivity;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class SplashActivity extends BaseActivity {
public class SplashActivity extends BaseActivity implements MainContext.Listener {
private ActivitySplashBinding mBinding;
private MainContext mainContext = new MainContext(this);
// private MainContext mainContext = new MainContext(this);
@Inject
MainContext mainContext;
private RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult;
@@ -35,32 +42,23 @@ public class SplashActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainApplication.appComponent
.splashActivityComponent()
.create()
.inject(this);
mainContext.setListener(this);
mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_splash, null, false);
setContentView(mBinding.getRoot());
UtilityContext.initMainActivity(this);
initAppVersion();
initAppVersion();
initPermissions(this::init);
}
private void initPermissions(Runnable onComplete) {
PermissionsHelper.askPermissions(this, () -> {
onComplete.run();
}, permanentlyDenied -> {
if(permanentlyDenied) {
DialogSimpleMessageView.makeErrorDialog(new SpannableString(getText(R.string.permissions_permanently_denied)), null, () -> {
this.finish();
})
.show(getSupportFragmentManager(), "tag");
} else {
initPermissions(onComplete);
}
});
}
private void initAppVersion() {
try {
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
@@ -68,7 +66,7 @@ public class SplashActivity extends BaseActivity {
String debugText = "";
if(BuildConfig.DEBUG) debugText += "\n[DEBUG VERSION]";
if (BuildConfig.DEBUG) debugText += "\n[DEBUG VERSION]";
mBinding.appVersionTextview.setText("v" + version + debugText);
} catch (PackageManager.NameNotFoundException e) {
@@ -76,15 +74,39 @@ public class SplashActivity extends BaseActivity {
}
}
private void initPermissions(Runnable onComplete) {
PermissionsHelper.askPermissions(this, onComplete, permanentlyDenied -> {
if (permanentlyDenied) {
onError(new SpannableString(getText(R.string.permissions_permanently_denied)));
} else {
initPermissions(onComplete);
}
});
}
private void init() {
if(!SettingsManager.i().isUserLoggedIn()){
if (!SettingsManager.i().isUserLoggedIn()) {
startLoginActivity();
} else {
mainContext.init(this::startMainActivity);
mainContext.init();
}
}
@Override
public void onDBDataLoading(String item) {
mBinding.loadingInfoTextview.setText("Caricamento " + item);
}
@Override
public void onMenuLoading() {
mBinding.loadingInfoTextview.setText("Caricamento menù");
}
@Override
public void onContextInitialized() {
startMainActivity();
}
public void setOnRequestPermissionsResult(RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult) {
@@ -95,9 +117,9 @@ public class SplashActivity extends BaseActivity {
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(this.onRequestPermissionResult != null) {
if (this.onRequestPermissionResult != null) {
List<Integer> grantResultsList = new ArrayList<>();
for(int i = 0; i < grantResults.length; i++) {
for (int i = 0; i < grantResults.length; i++) {
grantResultsList.add(grantResults[i]);
}
@@ -106,20 +128,26 @@ public class SplashActivity extends BaseActivity {
}
private void startLoginActivity(){
private void startLoginActivity() {
this.finish();
Intent myIntent = new Intent(this, LoginActivity.class);
startActivity(myIntent);
}
private void startMainActivity(){
private void startMainActivity() {
this.finish();
Intent myIntent = new Intent(this, MainActivity.class);
startActivity(myIntent);
}
@Override
public void onError(Spanned message) {
DialogSimpleMessageView.makeErrorDialog(
message, null, this::finish, R.string.logout, () -> {
this.mainContext.logout(MainApplication::exit);
})
.show(this.getSupportFragmentManager(), "tag");
}
}

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative;
import dagger.Subcomponent;
@Subcomponent
public interface SplashActivityComponent {
@Subcomponent.Factory
interface Factory {
SplashActivityComponent create();
}
void inject(SplashActivity mainActivity);
}

View File

@@ -0,0 +1,7 @@
package it.integry.integrywmsnative;
import dagger.Module;
@Module(subcomponents = SplashActivityComponent.class)
public class SplashActivityModule {
}

View File

@@ -1,33 +1,27 @@
package it.integry.integrywmsnative.core.barcode_reader;
import android.content.Context;
import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader;
import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader;
import it.integry.zebrascannerlibrary.ZebraBarcodeReader;
public class BarcodeManager {
private static AppCompatActivity context;
private static BarcodeReaderInterface mCurrentBarcodeInterface;
private static List<BarcodeCallbackDTO> mBarcodeCallbacksStacktrace = new ArrayList<>();
private static final List<BarcodeCallbackDTO> mBarcodeCallbacksStacktrace = new ArrayList<>();
private static boolean mEnabled = true;
private static Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{
private static final Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{
PointMobileBarcodeReader.class,
ZebraBarcodeReader.class,
HoneyWellBarcodeReader.class,
@@ -35,73 +29,60 @@ public class BarcodeManager {
};
public static void init(AppCompatActivity context) {
BarcodeManager.context = context;
public static void init(Context applicationContext) throws Exception {
initBarcodeReader();
initBarcodeReader(applicationContext);
}
private static void initBarcodeReader() {
private static void initBarcodeReader(Context applicationContext) throws Exception {
for (Class<? extends BarcodeReaderInterface> readerInterface : registeredBarcodeReaderInterfaces){
for (Class<? extends BarcodeReaderInterface> readerInterface : registeredBarcodeReaderInterfaces) {
Constructor<?> cons = null;
try {
cons = Class.forName(readerInterface.getName()).getConstructors()[0];
BarcodeReaderInterface object = (BarcodeReaderInterface) cons.newInstance(context);
Constructor<?> cons = Class.forName(readerInterface.getName()).getConstructors()[0];
BarcodeReaderInterface object = (BarcodeReaderInterface) cons.newInstance(applicationContext);
if(object.isRightAdapter()) {
mCurrentBarcodeInterface = object;
break;
}
} catch (Exception e) {
UtilityExceptions.defaultException(context,e);
if (object.isRightAdapter()) {
mCurrentBarcodeInterface = object;
break;
}
}
if(mCurrentBarcodeInterface != null) {
if (mCurrentBarcodeInterface != null) {
try {
mCurrentBarcodeInterface.init(() -> {
mCurrentBarcodeInterface.register(data -> {
BarcodeCallbackDTO callback = getValidCallback();
if(callback != null && mEnabled) {
callback.getOnScanSuccessfull().run(data);
}
}, ex -> {
BarcodeCallbackDTO callback = getValidCallback();
if(callback != null && mEnabled) {
callback.getOnScanFailed().run(ex);
}
});
mCurrentBarcodeInterface.init(() -> {
mCurrentBarcodeInterface.register(data -> {
BarcodeCallbackDTO callback = getValidCallback();
if (callback != null && mEnabled) {
callback.getOnScanSuccessfull().run(data);
}
}, ex -> {
BarcodeCallbackDTO callback = getValidCallback();
if (callback != null && mEnabled) {
callback.getOnScanFailed().run(ex);
}
});
} catch (BarcodeAdapterNotFoundException ex) {
UtilityExceptions.defaultException(context, ex);
}
});
}
}
private static BarcodeCallbackDTO getValidCallback() {
if(mBarcodeCallbacksStacktrace.size() > 0) {
return mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() -1);
if (mBarcodeCallbacksStacktrace.size() > 0) {
return mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() - 1);
} else {
return null;
}
}
public static boolean onKeyDown(int keyCode, KeyEvent keyEvent){
public static boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
if (mCurrentBarcodeInterface != null)
mCurrentBarcodeInterface.onKeyEvent(keyEvent);
mCurrentBarcodeInterface.onKeyEvent(keyEvent);
return true;
}
@@ -113,8 +94,8 @@ public class BarcodeManager {
int newID = -1;
if(mBarcodeCallbacksStacktrace.size() > 0) {
newID = mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() -1).getID() + 1;
if (mBarcodeCallbacksStacktrace.size() > 0) {
newID = mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() - 1).getID() + 1;
} else {
newID = 1;
}
@@ -131,7 +112,7 @@ public class BarcodeManager {
//Rimuovo la callback con l'ID trovato e tutte quelle con >ID in modo che rimuovo tutte le call aggiunte successivamente
for (int i = 0; i < mBarcodeCallbacksStacktrace.size(); i++) {
if(mBarcodeCallbacksStacktrace.get(i).getID() == ID || callbackObjFound) {
if (mBarcodeCallbacksStacktrace.get(i).getID() == ID || callbackObjFound) {
mBarcodeCallbacksStacktrace.remove(i);
callbackObjFound = true;

View File

@@ -6,8 +6,6 @@ import android.util.Pair;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.class_router.exceptions.MethodPathNotRegisteredException;
public class ClassRouter {
public enum PATH {
@@ -21,8 +19,8 @@ public class ClassRouter {
private static List<Pair<PATH, Object>> mRouteClasses = new ArrayList<>();
public static void init(Context context) {
ClassRouter.context = context;
public static void init() {
// ClassRouter.context = context;
}
private static boolean checkIClassExists(PATH path) {
@@ -51,9 +49,7 @@ public class ClassRouter {
try {
mRouteClasses.add(new Pair<>(path, clazz.newInstance()));
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
} catch (IllegalAccessException | InstantiationException e) {
e.printStackTrace();
}
}
@@ -69,15 +65,15 @@ public class ClassRouter {
try {
if (!checkIClassExists(path)) {
throw new MethodPathNotRegisteredException(path);
// throw new MethodPathNotRegisteredException(path);
}
Object instance = mRouteClasses.get(getClassIndex(path)).second;
return (T)instance;
} catch (MethodPathNotRegisteredException ex) {
// UtilityExceptions.defaultException(null, ex, true);
} catch (Exception ex) {
// UtilityExceptions.defaultException(null, ex, true);
}
return null;

View File

@@ -32,6 +32,8 @@ public class BaseMenuConfiguration {
@IdRes
private int mGroupId;
private String codMenu;
private List<MenuItem> mItems = new ArrayList<>();
public @IdRes int getGroupId() {
@@ -52,6 +54,15 @@ public class BaseMenuConfiguration {
return this;
}
public String getCodMenu() {
return codMenu;
}
public MenuGroup setCodMenu(String codMenu) {
this.codMenu = codMenu;
return this;
}
public List<MenuItem> getItems() {
return mItems;
}
@@ -67,6 +78,7 @@ public class BaseMenuConfiguration {
@StringRes private int mTitleText;
@DrawableRes private int mTitleIcon;
@DrawableRes private int mDrawerIcon;
private String codMenu;
private RunnableWithReturn<Fragment> fragmentFactory;
public int getID() {
@@ -105,6 +117,15 @@ public class BaseMenuConfiguration {
return this;
}
public String getCodMenu() {
return codMenu;
}
public MenuItem setCodMenu(String codMenu) {
this.codMenu = codMenu;
return this;
}
public RunnableWithReturn<Fragment> getFragmentFactory() {
return fragmentFactory;
}

View File

@@ -9,6 +9,7 @@ import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrd
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
@@ -24,9 +25,11 @@ public class MenuConfiguration extends BaseMenuConfiguration {
new MenuGroup()
.setGroupText(R.string.purchase)
.setGroupId(R.id.nav_group_acquisto)
.setCodMenu("MM008")
.addItem(new MenuItem()
.setID(R.id.nav_accettazione)
.setCodMenu("MG044")
.setTitleText(R.string.accettazione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_accettazione)
.setDrawerIcon(R.drawable.ic_black_download)
@@ -34,6 +37,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem()
.setID(R.id.nav_resi_fornitore)
.setCodMenu("MG045")
.setTitleText(R.string.fragment_ultime_arrivi_fornitore_title)
.setTitleIcon(R.drawable.ic_latest_delivery)
.setDrawerIcon(R.drawable.ic_black_latest_delivery)
@@ -42,9 +46,11 @@ public class MenuConfiguration extends BaseMenuConfiguration {
new MenuGroup()
.setGroupText(R.string.checkout)
.setGroupId(R.id.nav_group_spedizione)
.setCodMenu("MM010")
.addItem(new MenuItem()
.setID(R.id.nav_spedizione)
.setCodMenu("MG046")
.setTitleText(R.string.vendita_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_spedizione)
.setDrawerIcon(R.drawable.ic_black_upload)
@@ -52,6 +58,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem()
.setID(R.id.nav_free_picking)
.setCodMenu("MG047")
.setTitleText(R.string.free_picking)
.setTitleIcon(R.drawable.ic_dashboard_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
@@ -59,6 +66,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem()
.setID(R.id.nav_resi_cliente)
.setCodMenu("MG048")
.setTitleText(R.string.fragment_ultime_consegne_cliente_title)
.setTitleIcon(R.drawable.ic_latest_delivery_customer)
.setDrawerIcon(R.drawable.ic_black_latest_delivery)
@@ -66,9 +74,11 @@ public class MenuConfiguration extends BaseMenuConfiguration {
).addGroup(new MenuGroup()
.setGroupText(R.string.manufacture)
.setGroupId(R.id.nav_group_produzione)
.setCodMenu("MM009")
.addItem(new MenuItem()
.setID(R.id.nav_prod_ordine_produzione)
.setCodMenu("MG049")
.setTitleText(R.string.prod_ordine_produzione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(R.drawable.ic_black_external)
@@ -76,6 +86,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem()
.setID(R.id.nav_prod_ordine_lavorazione)
.setCodMenu("MG050")
.setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione)
.setDrawerIcon(R.drawable.ic_black_external)
@@ -83,6 +94,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem()
.setID(R.id.nav_free_lav_picking)
.setCodMenu("MG051")
.setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner)
@@ -90,6 +102,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem()
.setID(R.id.nav_prod_posizionamento_da_ord)
.setCodMenu("MG052")
.setTitleText(R.string.prod_fabbisogno_linee_prod_title)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf)
@@ -97,6 +110,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem()
.setID(R.id.nav_prod_versamento_materiale)
.setCodMenu("MG053")
.setTitleText(R.string.prod_versamento_materiale_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
@@ -104,32 +118,55 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem()
.setID(R.id.nav_prod_recupero_materiale)
.setCodMenu("MG054")
.setTitleText(R.string.prod_recupero_materiale_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance))
)
.addGroup(
new MenuGroup()
.setGroupText(R.string.internal_handling)
.setGroupId(R.id.nav_group_movimentazione_interna)
).addGroup(
new MenuGroup()
.setGroupText(R.string.internal_handling)
.setGroupId(R.id.nav_group_movimentazione_interna)
.setCodMenu("MM011")
.addItem(new MenuItem()
.setID(R.id.nav_versamento_merce)
.setTitleText(R.string.versamento_merce_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_versamento_merce)
.setDrawerIcon(R.drawable.ic_black_load_shelf)
.setFragmentFactory(VersamentoMerceFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_versamento_merce)
.setCodMenu("MG055")
.setTitleText(R.string.versamento_merce_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_versamento_merce)
.setDrawerIcon(R.drawable.ic_black_load_shelf)
.setFragmentFactory(VersamentoMerceFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_rettifica_giacenze)
.setTitleText(R.string.rettifica_giacenze_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(RettificaGiacenzeFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_rettifica_giacenze)
.setCodMenu("MG056")
.setTitleText(R.string.rettifica_giacenze_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(RettificaGiacenzeFragment::newInstance))
);
).addGroup(
new MenuGroup()
.setCodMenu("MM012")
.setGroupText(it.integry.integrywmsnative.R.string.punto_vendita)
.setGroupId(it.integry.integrywmsnative.R.id.nav_group_puntivendita)
.addItem(new MenuItem()
.setCodMenu("MG057")
.setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto)
.setTitleText(it.integry.integrywmsnative.R.string.generate_orders)
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance))
// .addItem(new MenuItem()
// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi)
// .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders)
// .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list)
// .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list)
// .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance()))
);
}

View File

@@ -7,31 +7,38 @@ import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import javax.inject.Inject;
import javax.inject.Singleton;
import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.Stash;
import it.integry.integrywmsnative.core.utility.UtilityContext;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
@Singleton
public class AppContext {
//Note: this is the Application Context NOT the Activity Context
private final Context mContext;
private final Context mApplicationContext;
@Inject
AppDatabase mAppDatabase;
public AppContext(Context context) {
this.mContext = context;
this.mApplicationContext = context;
MainApplication.appComponent
.inject(this);
}
@Inject
public void init() {
this.initUtilities();
@@ -45,8 +52,8 @@ public class AppContext {
private void initSettings() {
Stash.init(mContext);
SettingsManager.init(mContext);
Stash.init(mApplicationContext);
SettingsManager.init(mApplicationContext);
}
private void initCrashlytics() {
@@ -64,10 +71,9 @@ public class AppContext {
}
private void initUtilities() {
UtilityContext.initApplicationContext(mContext);
UtilityResources.init(mContext);
UtilityToast.init(mContext);
UtilitySettings.init(mAppDatabase);
UtilityContext.initApplicationContext(mApplicationContext);
UtilityResources.init(mApplicationContext);
UtilityToast.init(mApplicationContext);
}
private void initLogger() {

View File

@@ -4,54 +4,81 @@ import android.content.Context;
import android.text.Html;
import android.text.SpannableString;
import android.text.Spanned;
import androidx.appcompat.app.AppCompatActivity;
import android.text.SpannedString;
import java.lang.reflect.Method;
import java.net.ConnectException;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.core.utility.UtilityThread;
@Singleton
public class MainContext {
private final AppCompatActivity mContext;
private final Context applicationContext;
private final MenuService menuService;
private final AppDatabase appDatabase;
public MainContext(AppCompatActivity context) {
this.mContext = context;
private Listener mListener;
public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase) {
this.applicationContext = applicationContext;
this.menuService = menuService;
this.appDatabase = appDatabase;
}
public void init() {
public void init(Runnable onContextInitialized) {
try {
BarcodeManager.init(applicationContext);
} catch (Exception exception) {
BarcodeManager.init(mContext);
}
this.initDBData(() -> {
onContextInitialized.run();
this.initMenu(() -> {
this.initReflections();
if (mListener != null) mListener.onContextInitialized();
});
});
this.initReflections();
this.initServerStatusChecker();
ColliDataRecover.init(mContext);
}
public void logout(Runnable onLoggedOut) {
menuService.invalidateCache();
UtilityThread.executeParallel(() -> {
SettingsManager.i().setUser(null);
SettingsManager.i().setUserSession(null);
SettingsManager.update();
appDatabase.clearAllTables();
onLoggedOut.run();
}, true);
}
private void initServerStatusChecker() {
ServerStatusChecker.init();
}
private void initDBData(Runnable onComplete) {
SettingsManager.loadDBVariables(onComplete, ex -> {
SettingsManager.loadDBVariables(item -> {
if (mListener != null) mListener.onDBDataLoading(item);
},
onComplete,
ex -> {
Spanned message = null;
@@ -63,18 +90,21 @@ public class MainContext {
message = new SpannableString(ex.getMessage());
}
DialogSimpleMessageView.makeErrorDialog(
message, null, mContext::finish, R.string.logout, () -> {
UtilitySettings.logout();
MainApplication.exit();
})
.show(mContext.getSupportFragmentManager(), "tag");
if (mListener != null) mListener.onError(message);
}
);
}
private void initMenu(Runnable onComplete) {
if (mListener != null) mListener.onMenuLoading();
this.menuService.init(onComplete, ex -> {
if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
});
}
private void initReflections() {
ClassRouter.init(mContext);
ClassRouter.init();
try {
String initMethod = "init";
@@ -87,14 +117,29 @@ public class MainContext {
// for static methods we can use null as instance of class
final Object newInstance = dynamicContextClass.newInstance();
m.invoke(newInstance, (Context) mContext);
m.invoke(newInstance, applicationContext);
break;
}
}
} catch (Exception e) {
UtilityExceptions.defaultException(mContext, e, true);
// UtilityExceptions.defaultException(mContext, e, true);
}
}
public MainContext setListener(Listener listener) {
this.mListener = listener;
return this;
}
public interface Listener {
void onDBDataLoading(String item);
void onMenuLoading();
void onContextInitialized();
void onError(Spanned message);
}
}

View File

@@ -1,235 +0,0 @@
package it.integry.integrywmsnative.core.data_recover;
import android.content.Context;
import androidx.appcompat.app.AppCompatActivity;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
public class ColliDataRecover {
public static class RecoverDTO {
private int id;
private int numCollo;
private String serCollo;
private String dataCollo;
private String gestioneCollo;
private String filtro;
private List<OrdineUscitaInevasoDTO> testateOrdini;
public int getId() {
return id;
}
public RecoverDTO setId(int id) {
this.id = id;
return this;
}
public int getNumCollo() {
return numCollo;
}
public RecoverDTO setNumCollo(int numCollo) {
this.numCollo = numCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public RecoverDTO setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public String getDataCollo() {
return dataCollo;
}
public RecoverDTO setDataCollo(String dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public String getGestioneCollo() {
return gestioneCollo;
}
public RecoverDTO setGestioneCollo(String gestioneCollo) {
this.gestioneCollo = gestioneCollo;
return this;
}
public String getFiltro() {
return filtro;
}
public RecoverDTO setFiltro(String filtro) {
this.filtro = filtro;
return this;
}
public List<OrdineUscitaInevasoDTO> getTestateOrdini() {
return testateOrdini;
}
public RecoverDTO setTestateOrdini(List<OrdineUscitaInevasoDTO> testateOrdini) {
this.testateOrdini = testateOrdini;
return this;
}
public MtbColt getMtbColt() {
return new MtbColt()
.setNumCollo(getNumCollo())
.setSerCollo(getSerCollo())
.setGestione(getGestioneCollo())
.setDataCollo(getDataCollo())
.setFiltroOrdini(getFiltro());
}
}
private static AppCompatActivity mContext;
private static List<RecoverDTO> mtbColtsSessions = new ArrayList<>();
public static void init(AppCompatActivity context) {
mContext = context;
if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) {
loadLocalFile();
}
}
public static boolean thereIsAnExistantSession() {
return mtbColtsSessions != null && mtbColtsSessions.size() > 0;
}
public static List<Integer> getAllSessionIDs() {
if(thereIsAnExistantSession()) {
return Stream.of(mtbColtsSessions)
.map(RecoverDTO::getId)
.toList();
} else return null;
}
public static RecoverDTO getSession(Integer sessionID) {
if(sessionID == null) return null;
return getIfExists(sessionID);
}
private static RecoverDTO getIfExists(int id) {
Optional<RecoverDTO> recoverDTOOptional = Stream.of(mtbColtsSessions)
.filter(x -> x.getId() == id)
.findSingle();
return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null;
}
public static int startNewSession(MtbColt mtbColtSession, List<OrdineUscitaInevasoDTO> testateOrdini) {
Integer newId = null;
while(newId == null) {
int randomId = new Random().nextInt(1000);
RecoverDTO dto = getIfExists(randomId);
if(dto == null) newId = randomId;
}
RecoverDTO recoverDTO = new RecoverDTO()
.setId(newId)
.setDataCollo(mtbColtSession.getDataColloS())
.setNumCollo(mtbColtSession.getNumCollo())
.setSerCollo(mtbColtSession.getSerCollo())
.setGestioneCollo(mtbColtSession.getGestione())
.setFiltro(mtbColtSession.getFiltroOrdini())
.setTestateOrdini(testateOrdini);
mtbColtsSessions.add(recoverDTO);
updateLocalFile();
return newId;
}
public static void closeSession(int ID) {
RecoverDTO dto = getIfExists(ID);
if(dto != null) {
mtbColtsSessions.remove(dto);
updateLocalFile();
}
}
private static void loadLocalFile() {
InputStream inputStream;
Gson gson = new Gson();
try {
inputStream = mContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE);
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
inputStream.close();
String jsonString = new String(bytes);
Type listType = new TypeToken<ArrayList<RecoverDTO>>(){}.getType();
mtbColtsSessions = gson.fromJson(jsonString, listType);
if(mtbColtsSessions == null) mtbColtsSessions = new ArrayList<>();
} catch (Exception e) {
e.printStackTrace();
UtilityExceptions.defaultException(mContext, e);
}
}
private static void updateLocalFile() {
FileOutputStream outputStream;
Gson gson = new Gson();
String jsonText = gson.toJson(mtbColtsSessions);
try {
outputStream = mContext.openFileOutput(CommonConst.Files.RECOVER_COLLO_FILE, Context.MODE_PRIVATE);
outputStream.write(jsonText.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
UtilityExceptions.defaultException(mContext, e);
}
}
private static boolean isFilePresent(String fileName) {
String path = mContext.getFilesDir().getAbsolutePath() + "/" + fileName;
File file = new File(path);
return file.exists();
}
}

View File

@@ -2,8 +2,6 @@ package it.integry.integrywmsnative.core.data_recover;
import android.content.Context;
import androidx.appcompat.app.AppCompatActivity;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.android.gms.common.util.IOUtils;
@@ -24,22 +22,20 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
@Singleton
public class ColliDataRecoverService {
private AppCompatActivity mContext;
private final Context mApplicationContext;
private List<ColliDataRecoverDTO> mtbColtsSessions = new ArrayList<>();
@Inject
public ColliDataRecoverService() {
public ColliDataRecoverService(Context applicationContext) {
this.mApplicationContext = applicationContext;
}
public void init(AppCompatActivity appCompatActivity) {
this.mContext = appCompatActivity;
@Inject
public void init() {
if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) {
loadLocalFile();
}
@@ -114,7 +110,7 @@ public class ColliDataRecoverService {
Gson gson = new Gson();
try {
inputStream = mContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE);
inputStream = mApplicationContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE);
byte[] bytes = IOUtils.readInputStreamFully(inputStream);
String jsonString = new String(bytes);
@@ -125,7 +121,7 @@ public class ColliDataRecoverService {
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
UtilityExceptions.defaultException(mContext, e);
// UtilityExceptions.defaultException(mContext, e);
}
}
@@ -137,17 +133,17 @@ public class ColliDataRecoverService {
String jsonText = gson.toJson(mtbColtsSessions);
try {
outputStream = mContext.openFileOutput(CommonConst.Files.RECOVER_COLLO_FILE, Context.MODE_PRIVATE);
outputStream = mApplicationContext.openFileOutput(CommonConst.Files.RECOVER_COLLO_FILE, Context.MODE_PRIVATE);
outputStream.write(jsonText.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
UtilityExceptions.defaultException(mContext, e);
// UtilityExceptions.defaultException(mContext, e);
}
}
private boolean isFilePresent(String fileName) {
String path = mContext.getFilesDir().getAbsolutePath() + "/" + fileName;
String path = mApplicationContext.getFilesDir().getAbsolutePath() + "/" + fileName;
File file = new File(path);
return file.exists();
}

View File

@@ -0,0 +1,110 @@
package it.integry.integrywmsnative.core.di;
import androidx.annotation.NonNull;
import androidx.databinding.Bindable;
import androidx.databinding.Observable;
import androidx.databinding.PropertyChangeRegistry;
import java.math.BigDecimal;
public class BindableBigDecimal implements Observable {
BigDecimal mValue;
private transient PropertyChangeRegistry mCallbacks;
public BindableBigDecimal() {
}
public BindableBigDecimal(BigDecimal startValue) {
this.mValue = startValue;
}
@Override
public void addOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) {
synchronized (this) {
if (mCallbacks == null) {
mCallbacks = new PropertyChangeRegistry();
}
}
mCallbacks.add(callback);
}
public void addOnPropertyChangedCallback(@NonNull Runnable callback) {
synchronized (this) {
if (mCallbacks == null) {
mCallbacks = new PropertyChangeRegistry();
}
}
mCallbacks.add(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
callback.run();
}
});
}
@Override
public void removeOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) {
synchronized (this) {
if (mCallbacks == null) {
return;
}
}
mCallbacks.remove(callback);
}
public void resetOnPropertyChangedCallback() {
synchronized (this) {
if (mCallbacks == null) {
return;
}
}
mCallbacks.clear();
mCallbacks = null;
}
/**
* Notifies listeners that all properties of this instance have changed.
*/
public void notifyChange() {
synchronized (this) {
if (mCallbacks == null) {
return;
}
}
mCallbacks.notifyCallbacks(this, 0, null);
}
/**
* Notifies listeners that a specific property has changed. The getter for the property
* that changes should be marked with {@link Bindable} to generate a field in
* <code>BR</code> to be used as <code>fieldId</code>.
*
* @param fieldId The generated BR id for the Bindable field.
*/
public void notifyPropertyChanged(int fieldId) {
synchronized (this) {
if (mCallbacks == null) {
return;
}
}
mCallbacks.notifyCallbacks(this, fieldId, null);
}
public BigDecimal get() {
return mValue;
}
public void set(BigDecimal value) {
this.set(value, false);
}
public void set(BigDecimal value, boolean forceRefresh) {
if (!mValue.equals(value) || forceRefresh) {
this.mValue = value;
notifyChange();
}
}
}

View File

@@ -1,12 +1,11 @@
package it.integry.integrywmsnative.core.di;
import androidx.annotation.NonNull;
import androidx.databinding.BaseObservable;
import androidx.databinding.Bindable;
import androidx.databinding.Observable;
import androidx.databinding.PropertyChangeRegistry;
public class BindableBoolean implements Observable {
public class BindableBoolean implements Observable {
boolean mValue;

View File

@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.di;
import android.app.DatePickerDialog;
import android.content.res.ColorStateList;
import android.text.SpannableString;
import android.util.Log;
import android.view.View;
import android.widget.AutoCompleteTextView;
@@ -37,11 +38,13 @@ import java.util.Locale;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class Converters {
@@ -84,6 +87,28 @@ public class Converters {
}
}
@BindingAdapter("binding")
public static void bindEditText(AppCompatTextView view, final ObservableField<String> observableField) {
Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableField) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(observableField != null) observableField.set(s.toString());
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher));
view.addTextChangedListener(watcher);
}
String newValue = observableField.get();
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue);
}
}
@BindingAdapter("binding")
public static void bindEditText(EditText view, final BindableString bindableString) {
Pair<BindableString, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
@@ -106,6 +131,50 @@ public class Converters {
}
}
@BindingAdapter("binding")
public static void bindEditText(EditText view, final ObservableField<String> observableString) {
Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableString) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
observableString.set(s.toString());
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableString, watcher));
view.addTextChangedListener(watcher);
}
String newValue = observableString.get();
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue);
}
}
@BindingAdapter("binding")
public static void bindEditText(AutoCompleteTextView view, final ObservableField<String> observableString) {
Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableString) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
observableString.set(s.toString());
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableString, watcher));
view.addTextChangedListener(watcher);
}
String newValue = observableString.get();
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue, false);
}
}
@BindingAdapter("binding")
public static void bindTextInputEditText(TextInputEditText view, final BindableString bindableString) {
Pair<BindableString, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
@@ -178,8 +247,8 @@ public class Converters {
}
}
@BindingAdapter({"binding"})
public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField<Date> observableDate) {
@BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false)
public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField<Date> observableDate, BaseDialogFragment parentFragment, boolean warningOnOldDates) {
Pair<ObservableField<Date>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableDate) {
if (pair != null) {
@@ -208,8 +277,20 @@ public class Converters {
DatePickerDialog datePickerDialog = new DatePickerDialog(view.getContext(),
(cView, year, month, day) -> {
Date resultDate = new GregorianCalendar(year, month, day).getTime();
view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
observableDate.set(resultDate);
if(parentFragment != null && warningOnOldDates && resultDate.before(new Date())) {
DialogSimpleMessageView
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
observableDate.set(resultDate);
}, () -> {
})
.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
} else {
view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
observableDate.set(resultDate);
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
};

View File

@@ -0,0 +1,6 @@
package it.integry.integrywmsnative.core.di.binders;
public class AutoCompleteTextViewBinders {
}

View File

@@ -6,6 +6,7 @@ import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
public class BaseActivity extends AppCompatActivity {
@@ -38,19 +39,45 @@ public class BaseActivity extends AppCompatActivity {
}
protected void openProgress() {
BarcodeManager.disable();
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this);
}
runOnUiThread(() -> {
BarcodeManager.disable();
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this);
}
});
}
protected void closeProgress() {
BarcodeManager.enable();
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
runOnUiThread(() -> {
BarcodeManager.enable();
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
});
}
public void onLoadingStarted() {
new Thread(() -> {
BarcodeManager.disable();
this.openProgress();
}).start();
}
public void onLoadingEnded() {
new Thread(() -> {
this.closeProgress();
BarcodeManager.enable();
}).start();
}
public void onError(Exception ex) {
this.runOnUiThread(() -> {
this.closeProgress();
UtilityExceptions.defaultException(this, ex, mCurrentProgress);
BarcodeManager.enable();
});
}
}

View File

@@ -2,14 +2,18 @@ package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
public class BaseDialogFragment extends DialogFragment {
@@ -22,6 +26,17 @@ public class BaseDialogFragment extends DialogFragment {
}
@Override
public void show(FragmentManager manager, String tag) {
try {
FragmentTransaction ft = manager.beginTransaction();
ft.add(this, tag);
ft.commit();
} catch (IllegalStateException e) {
Log.d("ABSDIALOGFRAG", "Exception", e);
}
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@@ -49,16 +64,46 @@ public class BaseDialogFragment extends DialogFragment {
this.mBarcodeListener = listen;
}
public void onLoadingStarted() {
BarcodeManager.disable();
this.openProgress();
}
public void onLoadingEnded() {
this.closeProgress();
BarcodeManager.enable();
}
protected void openProgress() {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
// new Thread(() -> {
requireActivity().runOnUiThread(() -> {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
});
// }).start();
}
protected void closeProgress() {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
// new Thread(() -> {
requireActivity().runOnUiThread(() -> {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
});
// }).start();
}
public void onError(Exception ex) {
requireActivity().runOnUiThread(() -> {
this.closeProgress();
UtilityExceptions.defaultException(requireActivity(), ex);
});
}
}

View File

@@ -4,32 +4,90 @@ import android.app.Dialog;
import androidx.fragment.app.Fragment;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import java.util.ArrayList;
import java.util.List;
public class BaseFragment extends Fragment {
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
public abstract class BaseFragment extends Fragment {
protected Dialog mCurrentProgress;
protected ElevatedToolbar mToolbar;
protected final List<Runnable> mOnPreDestroyList = new ArrayList<>();
public void setScrollToolbar(ElevatedToolbar toolbar) {
mToolbar = toolbar;
}
public void addOnPreDestroy(Runnable onPreDestroy) {
this.mOnPreDestroyList.add(onPreDestroy);
}
public void onLoadingStarted() {
new Thread(() -> {
BarcodeManager.disable();
this.openProgress();
}).start();
}
public void onLoadingEnded() {
new Thread(() -> {
this.closeProgress();
BarcodeManager.enable();
}).start();
}
public void onError(Exception ex) {
this.getActivity().runOnUiThread(() -> {
this.closeProgress();
UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress);
BarcodeManager.enable();
});
}
@Override
public void onDestroy() {
super.onDestroy();
for (Runnable onPreDestroy : mOnPreDestroyList) {
onPreDestroy.run();
}
}
protected void openProgress() {
// new Thread(() -> {
getActivity().runOnUiThread(() -> {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
});
// }).start();
}
protected void closeProgress() {
// new Thread(() -> {
getActivity().runOnUiThread(() -> {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
});
// }).start();
}
protected void popMe() {
((IPoppableActivity) requireActivity()).pop();
}
}

View File

@@ -7,6 +7,7 @@ import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
@@ -38,6 +39,28 @@ public abstract class ExtendedRecyclerView<T, VH extends RecyclerView.ViewHolder
return mDataset.size();
}
public void clearDataset() {
mDataset.clear();
notifyDataSetChanged();
}
public void updateDataset(List<T> updatedDataset) {
mDataset.clear();
if(updatedDataset != null && !updatedDataset.isEmpty()) {
mDataset.addAll(updatedDataset);
}
notifyDataSetChanged();
}
public void addDataset(List<T> insertDataset) {
if(insertDataset != null && !insertDataset.isEmpty()) {
mDataset.addAll(insertDataset);
notifyDataSetChanged();
}
}
public ExtendedRecyclerView<T, VH> setEmptyView(View emptyView) {
this.mEmptyView = emptyView;
this.checkIfEmpty();

View File

@@ -0,0 +1,34 @@
package it.integry.integrywmsnative.core.menu;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.StbMenu;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton
public class MenuRESTConsumer extends _BaseRESTConsumer {
public void retrieveMenu(String rootCodOpz, RunnableArgs<StbMenu> onComplete, RunnableArgs<Exception> onFailed) {
MenuRESTConsumerService menuRESTConsumerService = RESTBuilder.getService(MenuRESTConsumerService.class);
menuRESTConsumerService.retrieveMenuConfig(rootCodOpz).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<StbMenu>> call, Response<ServiceRESTResponse<StbMenu>> response) {
analyzeAnswer(response, "retrieveMenu", (m) -> {
onComplete.run(response.body().getEntity());
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<StbMenu>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -0,0 +1,13 @@
package it.integry.integrywmsnative.core.menu;
import it.integry.integrywmsnative.core.model.StbMenu;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface MenuRESTConsumerService {
@GET("retrieveMenuConfig")
Call<ServiceRESTResponse<StbMenu>> retrieveMenuConfig(@Query("rootCodOpz") String rootCodOpz);
}

View File

@@ -0,0 +1,81 @@
package it.integry.integrywmsnative.core.menu;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.menu.exception.MenuNotFoundException;
import it.integry.integrywmsnative.core.model.StbMenu;
@Singleton
public class MenuService {
private static final String MENU_COD_OPZ = "MM007";
private final MenuRESTConsumer menuRESTConsumer;
private List<StbMenu> mInternalCachedMenu;
private List<StbMenu> mInternalCachedFlatMenu;
@Inject
public MenuService(MenuRESTConsumer menuRESTConsumer) {
this.menuRESTConsumer = menuRESTConsumer;
}
public void init(Runnable onMenuInitialized, RunnableArgs<Exception> onFailed) {
menuRESTConsumer.retrieveMenu(MENU_COD_OPZ, menu -> {
if(menu != null) {
this.mInternalCachedMenu = menu.getStbMenuChildren();
this.mInternalCachedFlatMenu = new ArrayList<>();
flattenMenu(this.mInternalCachedMenu);
}
onMenuInitialized.run();
}, onFailed);
}
public List<StbMenu> getMenu() throws Exception {
if(mInternalCachedMenu == null) throw new MenuNotFoundException();
return mInternalCachedMenu;
}
public boolean isGroupEnabled(MenuConfiguration.MenuGroup androidMenuGroup) throws Exception {
List<StbMenu> dbMenu = getMenu();
return Stream.of(this.mInternalCachedFlatMenu)
.anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuGroup.getCodMenu()));
}
public boolean isItemEnabled(BaseMenuConfiguration.MenuItem androidMenuItem) throws Exception {
List<StbMenu> dbMenu = getMenu();
return Stream.of(this.mInternalCachedFlatMenu)
.anyMatch(x -> x.getCodOpz().equalsIgnoreCase(androidMenuItem.getCodMenu()));
}
private void flattenMenu(List<StbMenu> menu) {
for(StbMenu stbMenu : menu) {
this.mInternalCachedFlatMenu.add(stbMenu);
if(stbMenu.getStbMenuChildren() != null && !stbMenu.getStbMenuChildren().isEmpty()) {
flattenMenu(stbMenu.getStbMenuChildren());
}
}
}
public void invalidateCache() {
this.mInternalCachedMenu = null;
this.mInternalCachedFlatMenu = null;
}
}

View File

@@ -0,0 +1,8 @@
package it.integry.integrywmsnative.core.menu.exception;
public class MenuNotFoundException extends Exception{
public MenuNotFoundException() {
super("Non è stato possibile caricare il menù");
}
}

View File

@@ -1,73 +0,0 @@
package it.integry.integrywmsnative.core.model;
import androidx.databinding.Observable;
import java.util.List;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableFloat;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ChooseOrdsLavFromListItemModel;
public class CheckableOrdineLavoro {
private ChooseOrdsLavFromListItemModel item;
private BindableBoolean checked = new BindableBoolean(false);
private String testata;
public CheckableOrdineLavoro(ChooseOrdsLavFromListItemModel item) {
this.item = item;
}
public ChooseOrdsLavFromListItemModel getItem() {
return item;
}
public CheckableOrdineLavoro setItem(ChooseOrdsLavFromListItemModel item) {
this.item = item;
return this;
}
public BindableBoolean getChecked() {
return checked;
}
public CheckableOrdineLavoro setChecked(BindableBoolean checked) {
this.checked = checked;
return this;
}
public BindableFloat getQtaCol() {
return item.getOrdineLav().getQtaColVersamento();
}
public void setQtaCol(float qtaCnf) {
this.item.getOrdineLav().setQtaColVersamento(qtaCnf);
}
public void toggleCheck() {
this.checked.set(!this.checked.get());
}
public boolean isChecked() {
return checked.get();
}
public String getTestata() {
return testata;
}
public void setTestata(String testata) {
this.testata = testata;
}
public BindableFloat getNumCnf() {
return item.getOrdineLav().getNumCnfVersamento();
}
public void setNumCnf(float numCnf) {
this.item.getOrdineLav().setNumCnfVersamento(numCnf);
}
}

View File

@@ -0,0 +1,348 @@
package it.integry.integrywmsnative.core.model;
import java.math.BigDecimal;
public class DtbOrdSteps extends EntityBase {
private String dataOrd;
private String gestione;
private Integer idRiga;
private Integer idStep;
private Integer numOrd;
private String activityId;
private String codAnag;
private String codDtip;
private String codJfas;
private String codMdep;
private String codProdPri;
private String dataDoc;
private String dataFine;
private String dataIniz;
private String descrizioneAttivita;
private String flagTipoTempo;
private Integer hrNum;
private BigDecimal hrTime;
private String idRigaDoc;
private String note;
private String numDoc;
private Integer numFase;
private BigDecimal qtaAllocata;
private BigDecimal qtaDisp;
private BigDecimal qtaDispImmessa;
private BigDecimal qtaImmesse;
private BigDecimal qtaInProd;
private BigDecimal qtaLav;
private BigDecimal qtaProd;
private BigDecimal qtaScartate;
private BigDecimal qtaTrasferite;
private BigDecimal rapConvLav;
private String serDoc;
private String untMisLav;
public String getDataOrd() {
return dataOrd;
}
public DtbOrdSteps setDataOrd(String dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public String getGestione() {
return gestione;
}
public DtbOrdSteps setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Integer getIdRiga() {
return idRiga;
}
public DtbOrdSteps setIdRiga(Integer idRiga) {
this.idRiga = idRiga;
return this;
}
public Integer getIdStep() {
return idStep;
}
public DtbOrdSteps setIdStep(Integer idStep) {
this.idStep = idStep;
return this;
}
public Integer getNumOrd() {
return numOrd;
}
public DtbOrdSteps setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
public String getActivityId() {
return activityId;
}
public DtbOrdSteps setActivityId(String activityId) {
this.activityId = activityId;
return this;
}
public String getCodAnag() {
return codAnag;
}
public DtbOrdSteps setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodDtip() {
return codDtip;
}
public DtbOrdSteps setCodDtip(String codDtip) {
this.codDtip = codDtip;
return this;
}
public String getCodJfas() {
return codJfas;
}
public DtbOrdSteps setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public String getCodMdep() {
return codMdep;
}
public DtbOrdSteps setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getCodProdPri() {
return codProdPri;
}
public DtbOrdSteps setCodProdPri(String codProdPri) {
this.codProdPri = codProdPri;
return this;
}
public String getDataDoc() {
return dataDoc;
}
public DtbOrdSteps setDataDoc(String dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public String getDataFine() {
return dataFine;
}
public DtbOrdSteps setDataFine(String dataFine) {
this.dataFine = dataFine;
return this;
}
public String getDataIniz() {
return dataIniz;
}
public DtbOrdSteps setDataIniz(String dataIniz) {
this.dataIniz = dataIniz;
return this;
}
public String getDescrizioneAttivita() {
return descrizioneAttivita;
}
public DtbOrdSteps setDescrizioneAttivita(String descrizioneAttivita) {
this.descrizioneAttivita = descrizioneAttivita;
return this;
}
public String getFlagTipoTempo() {
return flagTipoTempo;
}
public DtbOrdSteps setFlagTipoTempo(String flagTipoTempo) {
this.flagTipoTempo = flagTipoTempo;
return this;
}
public Integer getHrNum() {
return hrNum;
}
public DtbOrdSteps setHrNum(Integer hrNum) {
this.hrNum = hrNum;
return this;
}
public BigDecimal getHrTime() {
return hrTime;
}
public DtbOrdSteps setHrTime(BigDecimal hrTime) {
this.hrTime = hrTime;
return this;
}
public String getIdRigaDoc() {
return idRigaDoc;
}
public DtbOrdSteps setIdRigaDoc(String idRigaDoc) {
this.idRigaDoc = idRigaDoc;
return this;
}
public String getNote() {
return note;
}
public DtbOrdSteps setNote(String note) {
this.note = note;
return this;
}
public String getNumDoc() {
return numDoc;
}
public DtbOrdSteps setNumDoc(String numDoc) {
this.numDoc = numDoc;
return this;
}
public Integer getNumFase() {
return numFase;
}
public DtbOrdSteps setNumFase(Integer numFase) {
this.numFase = numFase;
return this;
}
public BigDecimal getQtaAllocata() {
return qtaAllocata;
}
public DtbOrdSteps setQtaAllocata(BigDecimal qtaAllocata) {
this.qtaAllocata = qtaAllocata;
return this;
}
public BigDecimal getQtaDisp() {
return qtaDisp;
}
public DtbOrdSteps setQtaDisp(BigDecimal qtaDisp) {
this.qtaDisp = qtaDisp;
return this;
}
public BigDecimal getQtaDispImmessa() {
return qtaDispImmessa;
}
public DtbOrdSteps setQtaDispImmessa(BigDecimal qtaDispImmessa) {
this.qtaDispImmessa = qtaDispImmessa;
return this;
}
public BigDecimal getQtaImmesse() {
return qtaImmesse;
}
public DtbOrdSteps setQtaImmesse(BigDecimal qtaImmesse) {
this.qtaImmesse = qtaImmesse;
return this;
}
public BigDecimal getQtaInProd() {
return qtaInProd;
}
public DtbOrdSteps setQtaInProd(BigDecimal qtaInProd) {
this.qtaInProd = qtaInProd;
return this;
}
public BigDecimal getQtaLav() {
return qtaLav;
}
public DtbOrdSteps setQtaLav(BigDecimal qtaLav) {
this.qtaLav = qtaLav;
return this;
}
public BigDecimal getQtaProd() {
return qtaProd;
}
public DtbOrdSteps setQtaProd(BigDecimal qtaProd) {
this.qtaProd = qtaProd;
return this;
}
public BigDecimal getQtaScartate() {
return qtaScartate;
}
public DtbOrdSteps setQtaScartate(BigDecimal qtaScartate) {
this.qtaScartate = qtaScartate;
return this;
}
public BigDecimal getQtaTrasferite() {
return qtaTrasferite;
}
public DtbOrdSteps setQtaTrasferite(BigDecimal qtaTrasferite) {
this.qtaTrasferite = qtaTrasferite;
return this;
}
public BigDecimal getRapConvLav() {
return rapConvLav;
}
public DtbOrdSteps setRapConvLav(BigDecimal rapConvLav) {
this.rapConvLav = rapConvLav;
return this;
}
public String getSerDoc() {
return serDoc;
}
public DtbOrdSteps setSerDoc(String serDoc) {
this.serDoc = serDoc;
return this;
}
public String getUntMisLav() {
return untMisLav;
}
public DtbOrdSteps setUntMisLav(String untMisLav) {
this.untMisLav = untMisLav;
return this;
}
}

View File

@@ -53,6 +53,8 @@ public class MtbColr extends EntityBase {
private MtbAart mtbAart;
private MtbPartitaMag mtbPartitaMag;
private transient int id;
private transient MtbColr refMtbColr;
public MtbColr() {
@@ -516,6 +518,15 @@ public class MtbColr extends EntityBase {
return this;
}
public int getId() {
return id;
}
public MtbColr setId(int id) {
this.id = id;
return this;
}
public MtbColr getRefMtbColr() {
return refMtbColr;
}

View File

@@ -385,6 +385,18 @@ public class MtbColt extends EntityBase {
return dataVers;
}
public Date getDataVersD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataVers());
}
public String getTimeVers() {
Date dataColloD = getDataVersD();
if(dataColloD != null){
return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.TIME);
} else return null;
}
public MtbColt setDataVers(String dataVers) {
this.dataVers = dataVers;

View File

@@ -5,7 +5,7 @@ import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class MtbPartitaMag {
public class MtbPartitaMag extends EntityBase{
private String codMart;
private String partitaMag;
@@ -30,6 +30,10 @@ public class MtbPartitaMag {
private String partitaMagSec;
private BigDecimal qtaAttesa;
public MtbPartitaMag() {
this.type = "mtb_partita_mag";
}
public String getCodMart() {
return codMart;

View File

@@ -105,4 +105,6 @@ public class MtbTCol {
this.circuito = circuito;
return this;
}
}

View File

@@ -0,0 +1,217 @@
package it.integry.integrywmsnative.core.model;
import java.util.ArrayList;
import java.util.List;
public class StbMenu extends EntityBase {
public StbMenu() {
this.type = "stb_menu";
}
private String codOpz;
private String codParent;
private String tipoAzienda;
private String descrizione;
private String descrizioneEstesa;
private String entityName;
private String flagAttivo;
private String flagPrinterSetup;
private String gestName;
private String note;
private String objectType;
private String openType;
private String parameter;
private String pictureMenu;
private String pictureSelect;
private Integer pos;
private Integer posCliente;
private Integer posTipoAzienda;
private String urlDescrizione;
private final List<StbMenu> stbMenuChildren = new ArrayList<>();
public String getCodOpz() {
return codOpz;
}
public StbMenu setCodOpz(String codOpz) {
this.codOpz = codOpz;
return this;
}
public String getCodParent() {
return codParent;
}
public StbMenu setCodParent(String codParent) {
this.codParent = codParent;
return this;
}
public String getTipoAzienda() {
return tipoAzienda;
}
public StbMenu setTipoAzienda(String tipoAzienda) {
this.tipoAzienda = tipoAzienda;
return this;
}
public String getDescrizione() {
return descrizione;
}
public StbMenu setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getDescrizioneEstesa() {
return descrizioneEstesa;
}
public StbMenu setDescrizioneEstesa(String descrizioneEstesa) {
this.descrizioneEstesa = descrizioneEstesa;
return this;
}
public String getEntityName() {
return entityName;
}
public StbMenu setEntityName(String entityName) {
this.entityName = entityName;
return this;
}
public String getFlagAttivo() {
return flagAttivo;
}
public StbMenu setFlagAttivo(String flagAttivo) {
this.flagAttivo = flagAttivo;
return this;
}
public String getFlagPrinterSetup() {
return flagPrinterSetup;
}
public StbMenu setFlagPrinterSetup(String flagPrinterSetup) {
this.flagPrinterSetup = flagPrinterSetup;
return this;
}
public String getGestName() {
return gestName;
}
public StbMenu setGestName(String gestName) {
this.gestName = gestName;
return this;
}
public String getNote() {
return note;
}
public StbMenu setNote(String note) {
this.note = note;
return this;
}
public String getObjectType() {
return objectType;
}
public StbMenu setObjectType(String objectType) {
this.objectType = objectType;
return this;
}
public String getOpenType() {
return openType;
}
public StbMenu setOpenType(String openType) {
this.openType = openType;
return this;
}
public String getParameter() {
return parameter;
}
public StbMenu setParameter(String parameter) {
this.parameter = parameter;
return this;
}
public String getPictureMenu() {
return pictureMenu;
}
public StbMenu setPictureMenu(String pictureMenu) {
this.pictureMenu = pictureMenu;
return this;
}
public String getPictureSelect() {
return pictureSelect;
}
public StbMenu setPictureSelect(String pictureSelect) {
this.pictureSelect = pictureSelect;
return this;
}
public Integer getPos() {
return pos;
}
public StbMenu setPos(Integer pos) {
this.pos = pos;
return this;
}
public Integer getPosCliente() {
return posCliente;
}
public StbMenu setPosCliente(Integer posCliente) {
this.posCliente = posCliente;
return this;
}
public Integer getPosTipoAzienda() {
return posTipoAzienda;
}
public StbMenu setPosTipoAzienda(Integer posTipoAzienda) {
this.posTipoAzienda = posTipoAzienda;
return this;
}
public String getType() {
return type;
}
public StbMenu setType(String type) {
this.type = type;
return this;
}
public String getUrlDescrizione() {
return urlDescrizione;
}
public StbMenu setUrlDescrizione(String urlDescrizione) {
this.urlDescrizione = urlDescrizione;
return this;
}
public List<StbMenu> getStbMenuChildren() {
return stbMenuChildren;
}
}

View File

@@ -3,10 +3,8 @@ package it.integry.integrywmsnative.core.rest;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.sql.Date;
import java.util.concurrent.TimeUnit;
import it.integry.integrywmsnative.core.rest.deserializer.DateDeserializer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
@@ -19,12 +17,10 @@ import retrofit2.converter.gson.GsonConverterFactory;
public class RESTBuilder {
public static <T> T getService(final Class<T> service) {
// return getService(service, "192.168.2.13", 8080);
return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true);
}
public static <T> T getService(final Class<T> service, int timeout) {
// return getService(service, "192.168.2.13", 8080);
return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true, true, timeout);
}
@@ -53,19 +49,15 @@ public class RESTBuilder {
String endpoint = "http://" + host + ":" + port + "/" + (addEmsApi ? "ems-api/" : "");
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateDeserializer())
.setDateFormat("dd/MM/yyyy HH:mm:ss")
.create();
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.baseUrl(endpoint)
.client(client)
.build();
return retrofit.create(service);
}
}

View File

@@ -18,7 +18,8 @@ import retrofit2.Response;
@Singleton
public class ArticoloRESTConsumer extends _BaseRESTConsumer {
public static void getByBarcodeProdStatic(String barcodeProd, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
public void getByBarcodeProd(String barcodeProd, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumerService.getByBarcodeProd(barcodeProd).enqueue(new Callback<ServiceRESTResponse<MtbAart>>() {
@Override
@@ -35,16 +36,12 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
});
}
public void getByBarcodeProd(String barcodeProd, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
getByBarcodeProdStatic(barcodeProd, onComplete, onFailed);
public void getByCodMarts(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
getByCodMartsStatic(codMartToFind, onComplete, onFailed);
}
public void getByCodMart(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
getByCodMartStatic(codMartToFind, onComplete, onFailed);
}
public static void getByCodMartStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
public static void getByCodMartsStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String joinedCods = Stream.of(codMartToFind)
.collect(Collectors.joining(","));
@@ -67,4 +64,26 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
}
public void getByCodMart(String codMartToFind, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(codMartToFind).enqueue(new Callback<ServiceRESTResponse<MtbAart>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> {
if(response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) {
onComplete.run(response.body().getEntityList().get(0));
} else onComplete.run(null);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -16,7 +16,7 @@ import retrofit2.Response;
@Singleton
public class BarcodeRESTConsumer extends _BaseRESTConsumer {
public static void decodeEan128Static(BarcodeScanDTO barcodeObj, RunnableArgs<Ean128Model> onComplete, RunnableArgs<Exception> onFailed) {
public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs<Ean128Model> onComplete, RunnableArgs<Exception> onFailed) {
IBarcodeCustomization barcodeCustomization = ClassRouter.getInstance(ClassRouter.PATH.BARCODE_CUSTOMIZATION);
@@ -42,8 +42,4 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer {
}
});
}
public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs<Ean128Model> onComplete, RunnableArgs<Exception> onFailed) {
BarcodeRESTConsumer.decodeEan128Static(barcodeObj, onComplete, onFailed);
}
}

View File

@@ -45,30 +45,19 @@ import retrofit2.Response;
@Singleton
public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
private ArticoloRESTConsumer mArticoloRESTConsumer;
private final SystemRESTConsumer mSystemRESTConsumer;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final EntityRESTConsumer mEntityRESTConsumer;
public ColliMagazzinoRESTConsumer(ArticoloRESTConsumer articoloRESTConsumer) {
public ColliMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer,
ArticoloRESTConsumer articoloRESTConsumer,
EntityRESTConsumer entityRESTConsumer) {
this.mSystemRESTConsumer = systemRESTConsumer;
this.mArticoloRESTConsumer = articoloRESTConsumer;
}
public static void saveColloStatic(MtbColt mtbColtToSave, final ISimpleOperationCallback<MtbColt> callback) {
for (int i = 0; i < mtbColtToSave.getMtbColr().size(); i++) {
mtbColtToSave.getMtbColr().get(i)
.setMtbAart(null)
.setMtbPartitaMag(null);
}
EntityRESTConsumer.processEntity(mtbColtToSave, callback, MtbColt.class);
this.mEntityRESTConsumer = entityRESTConsumer;
}
public void saveCollo(MtbColt mtbColtToSave, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtToSave, onComplete, onFailed);
}
public static void saveColloStatic(MtbColt mtbColtToSave, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt mtbColtToSaveClone = (MtbColt) mtbColtToSave.clone();
mtbColtToSave.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
@@ -81,7 +70,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
.setMtbPartitaMag(null));
}
EntityRESTConsumer.processEntity(mtbColtToSaveClone, new ISimpleOperationCallback<MtbColt>() {
this.mEntityRESTConsumer.processEntity(mtbColtToSaveClone, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
if (onComplete != null) onComplete.run(value);
@@ -96,10 +85,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
public void saveColli(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
saveColliStatic(mtbColtsToSave, onComplete, onFailed);
}
public static void saveColliStatic(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
for (MtbColt mtbColt : mtbColtsToSave) {
mtbColt.setMtbCols(null);
@@ -111,17 +96,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
}
EntityRESTConsumer.processEntityList(mtbColtsToSave, new ISimpleOperationCallback<List<MtbColt>>() {
@Override
public void onSuccess(List<MtbColt> value) {
if (onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
}, true, MtbColt.class);
this.mEntityRESTConsumer.processEntityList(mtbColtsToSave, true, MtbColt.class, onComplete, onFailed);
}
@@ -143,7 +118,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
public static void createColloScaricoDaCarico(MtbColt sourceMtbColt, MtbDepoPosizione posizione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
public void createColloScaricoDaCarico(MtbColt sourceMtbColt, MtbDepoPosizione posizione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt newMtbColt = new MtbColt()
.initDefaultFields()
@@ -193,20 +168,10 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
saveColloStatic(newMtbColt, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
if (onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
});
saveCollo(newMtbColt, onComplete, onFailed);
}
public static void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt, MtbColr sourceMtbColr, MtbDepoPosizione posizione, List<OrdineLavorazioneDTO> ordini, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
public void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt, MtbColr sourceMtbColr, MtbDepoPosizione posizione, List<OrdineLavorazioneDTO> ordini, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt newMtbColt = new MtbColt()
.initDefaultFields()
@@ -214,8 +179,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
.setGestione(GestioneEnum.LAVORAZIONE)
.setSegno(-1)
.setCodTcol(sourceMtbColt.getCodTcol())
.setPesoKg(sourceMtbColt.getPesoKg())
.setPesoNettoKg(sourceMtbColt.getPesoNettoKg())
// .setPesoKg(sourceMtbColt.getPesoKg())
// .setPesoNettoKg(sourceMtbColt.getPesoNettoKg())
.setLarghezzaCm(sourceMtbColt.getLarghezzaCm())
.setLunghezzaCm(sourceMtbColt.getLunghezzaCm())
.setAltezzaCm(sourceMtbColt.getAltezzaCm())
@@ -269,18 +234,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
saveColloStatic(newMtbColt, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
if (onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if (onFailed != null) onFailed.run(ex);
}
});
saveCollo(newMtbColt, onComplete, onFailed);
}
@@ -314,11 +268,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
mtbColtToCreate
.setOperation(CommonModelConsts.OPERATION.INSERT);
saveCollo(mtbColtToCreate, value -> {
if (onComplete != null) onComplete.run(value);
}, ex -> {
if (onFailed != null) onFailed.run(ex);
});
saveCollo(mtbColtToCreate, onComplete, onFailed);
}
public void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs<Exception> onFailed) {
@@ -327,9 +277,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
saveCollo(mtbColtToDelete, value -> {
if (onComplete != null) onComplete.run();
}, ex -> {
if (onFailed != null) onFailed.run(ex);
});
}, onFailed);
}
public static void distribuisciCollo(MtbColt mtbColtToDistribute, DistribuzioneColloDTO.CriterioDistribuzione criterioDistribuzione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
@@ -374,10 +322,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumer.getBySSCCStatic(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed);
}
public static void getBySSCCStatic(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<ServiceRESTResponse<MtbColt>>() {
@Override
@@ -418,7 +362,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> {
ArticoloRESTConsumer.getByCodMartsStatic(codMarts, arts -> {
if (arts != null && arts.size() > 0) {
for (MtbColt mtbColt : mtbColts) {
@@ -447,10 +391,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
public void getMultipleByTestate(List<MtbColt> testate, boolean onlyResiduo, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumer.getMultipleByTestateStatic(testate, onlyResiduo, onComplete, onFailed);
}
public static void getMultipleByTestateStatic(List<MtbColt> testate, boolean onlyResiduo, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
ArrayList<MtbColt> resultMtbColt = new ArrayList<>();
cyclicGetMultipleByTestate(testate.iterator(), onlyResiduo, resultMtbColt, () -> {
onComplete.run(resultMtbColt);
@@ -458,9 +398,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
private static void cyclicGetMultipleByTestate(@NotNull Iterator<MtbColt> sourceMtbColts, boolean onlyResiduo, ArrayList<MtbColt> resultMtbColt, Runnable onComplete, RunnableArgs<Exception> onAbort) {
private void cyclicGetMultipleByTestate(@NotNull Iterator<MtbColt> sourceMtbColts, boolean onlyResiduo, ArrayList<MtbColt> resultMtbColt, Runnable onComplete, RunnableArgs<Exception> onAbort) {
if (sourceMtbColts.hasNext()) {
getByTestataStatic(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> {
getByTestata(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> {
resultMtbColt.add(mtbColt);
cyclicGetMultipleByTestate(sourceMtbColts, onlyResiduo, resultMtbColt, onComplete, onAbort);
}, onAbort);
@@ -476,14 +416,10 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
.setDataCollo(dataCollo)
.setSerCollo(serCollo);
ColliMagazzinoRESTConsumer.getByTestataStatic(mtbColtToRetrieve, onlyResiduo, throwExcIfNull, onComplete, onFailed);
getByTestata(mtbColtToRetrieve, onlyResiduo, throwExcIfNull, onComplete, onFailed);
}
public void getByTestata(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumer.getByTestataStatic(testata, onlyResiduo, throwExcIfNull, onComplete, onFailed);
}
public static void getByTestataStatic(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
testata.setMtbColr(new ObservableArrayList<>());
@@ -546,17 +482,13 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
public void updateDataFine(MtbColt mtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumer.updateDataFineStatic(mtbColt, onComplete, onFailed);
}
public static void updateDataFineStatic(MtbColt mtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MtbColt cloneMtbColt = (MtbColt) mtbColt.clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setOraFinePrep(UtilityDate.getDateInstance());
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> {
saveCollo(cloneMtbColt, value -> {
onComplete.run();
}, ex -> {
if (onFailed != null) onFailed.run(ex);
@@ -565,10 +497,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
public void canLUBeDeleted(MtbColt mtbColt, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumer.canLUBeDeletedStatic(mtbColt, onComplete, onFailed);
}
public static void canLUBeDeletedStatic(MtbColt mtbColt, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) {
HashMap<String, Object> params = new HashMap<>();
params.put("mtb_colt.gestione", mtbColt.getGestione());
@@ -610,7 +538,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {
}.getType();
SystemRESTConsumer.<ArrayList<MtbColt>>processSqlStatic(query, typeOfObjectsList, data -> {
this.mSystemRESTConsumer.<ArrayList<MtbColt>>processSql(query, typeOfObjectsList, data -> {
onComplete.run(data != null && data.size() > 0);
}, onFailed);
}
@@ -647,7 +575,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
colliMagazzinoRESTConsumerService.creaRettificaCollo(
SettingsManager.i().getUserSession().getDepo().getCodMdep(),
rettificaULDTO
).enqueue(new Callback<ServiceRESTResponse<MtbColr>>() {
).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbColr>> call, Response<ServiceRESTResponse<MtbColr>> response) {
analyzeAnswer(response, "creaRettificaCollo", onComplete, onFailed);
@@ -677,9 +605,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
.setDestinationMtbColt(mtbColtDestClone);
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.spostaArtsTraUL(
spostaArtsTraULRequestDTO
).enqueue(new Callback<ServiceRESTResponse<Object>>() {
colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "spostaArtsTraUL", data -> {
@@ -694,4 +620,30 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
public void assegnaLottoSuColloScarico(MtbColt sourceMtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone();
for (int i = 0; i < sourceMtbColtClone.getMtbColr().size(); i++) {
sourceMtbColtClone.getMtbColr().get(i)
.setMtbAart(null)
.setMtbPartitaMag(null);
}
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.assegnaLottoSuColloScarico(sourceMtbColtClone).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbColt>> call, Response<ServiceRESTResponse<MtbColt>> response) {
analyzeAnswer(response, "assegnaLottoSuColloScarico", data -> {
onComplete.run();
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<MtbColt>> call, Throwable t) {
if (onFailed != null) onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -18,7 +18,7 @@ import retrofit2.http.Query;
public interface ColliMagazzinoRESTConsumerService {
@POST("SM2DistribuzioneRigheCollo")
@POST("wms/distribuzioneRigheCollo")
Call<ServiceRESTResponse<JsonObject>> distribuisciCollo(@Body DistribuzioneColloDTO distribuzioneCollo);
@POST("getColloByBarcode")
@@ -39,4 +39,7 @@ public interface ColliMagazzinoRESTConsumerService {
@POST("wms/spostaArtsTraUL")
Call<ServiceRESTResponse<Object>> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO);
@POST("wms/assegnaLottoSuColloScarico")
Call<ServiceRESTResponse<MtbColt>> assegnaLottoSuColloScarico(@Body MtbColt mtbColt);
}

View File

@@ -2,31 +2,39 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
public class DepositoRESTConsumer {
@Singleton
public class DepositoRESTConsumer extends _BaseRESTConsumer {
public static void getDepoByCodMdep(String codMdep, RunnableArgs<MtbDepo> onComplete) {
private final EntityRESTConsumer entityRESTConsumer;
public DepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer) {
this.entityRESTConsumer = entityRESTConsumer;
}
public void getDepoByCodMdep(String codMdep, RunnableArgs<MtbDepo> onComplete, RunnableArgs<Exception> onFailed) {
MtbDepo mtbDepo = new MtbDepo();
mtbDepo.setCodMdep(codMdep);
mtbDepo.setOperation(CommonModelConsts.OPERATION.SELECT);
mtbDepo.setOnlyPkMaster(false);
EntityRESTConsumer.selectEntity(mtbDepo, new ISimpleOperationCallback<List<MtbDepo>>() {
this.entityRESTConsumer.selectEntity(mtbDepo, new ISimpleOperationCallback<>() {
@Override
public void onSuccess(List<MtbDepo> value) {
if(value != null && value.size() > 0) {
if (value != null && value.size() > 0) {
onComplete.run(value.get(0));
}
}
@Override
public void onFailed(Exception ex) {
UtilityLogger.errorMe(ex);
onFailed.run(ex);
}
}, MtbDepo.class);
}

View File

@@ -4,42 +4,26 @@ import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.EntityBase;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.EsitoType;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.model.EntityBase;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class EntityRESTConsumer {
public static <T extends EntityBase> void processEntity(T entityToSave, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed, Class<T> type) {
processEntity(entityToSave, new ISimpleOperationCallback<T>() {
@Override
public void onSuccess(T value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
}, type);
}
@Singleton
public class EntityRESTConsumer extends _BaseRESTConsumer {
public static <T extends EntityBase> void processEntity(T entityToSave, final ISimpleOperationCallback<T> callback, Class<T> type) {
public <T extends EntityBase> void processEntity(T entityToSave, final ISimpleOperationCallback<T> callback, Class<T> type) {
RunnableArgs<Exception> tmpFailed = ex -> {
if (callback != null) callback.onFailed(ex);
@@ -48,7 +32,7 @@ public class EntityRESTConsumer {
EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class);
service
.processEntity(entityToSave)
.enqueue(new Callback<ServiceRESTResponse<JsonObject>>() {
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<JsonObject>> call, Response<ServiceRESTResponse<JsonObject>> response) {
if (response.isSuccessful()) {
@@ -82,16 +66,16 @@ public class EntityRESTConsumer {
}
public static <T extends EntityBase> void processEntityList(List<T> entitiesToSave, final ISimpleOperationCallback<List<T>> callback, boolean singleTransaction, Class<T> type) {
public <T extends EntityBase> void processEntityList(List<T> entitiesToSave, boolean singleTransaction, Class<T> type, final RunnableArgs<List<T>> onComplete, final RunnableArgs<Exception> onFailed) {
RunnableArgs<Exception> tmpFailed = ex -> {
// UtilityExceptions.defaultException(null, ex);
if (callback != null) callback.onFailed(ex);
if (onFailed != null) onFailed.run(ex);
};
EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class);
Call<List<ServiceRESTResponse<JsonObject>>> request = service.processEntityList(singleTransaction, entitiesToSave);
request.enqueue(new Callback<List<ServiceRESTResponse<JsonObject>>>() {
request.enqueue(new Callback<>() {
@Override
public void onResponse(Call<List<ServiceRESTResponse<JsonObject>>> call, Response<List<ServiceRESTResponse<JsonObject>>> response) {
if (response.isSuccessful()) {
@@ -115,7 +99,7 @@ public class EntityRESTConsumer {
}
}
callback.onSuccess(responseList);
onComplete.run(responseList);
} else {
Log.e("EntityRESTConsumer", response.message());
tmpFailed.run(new Exception(response.message()));
@@ -136,7 +120,7 @@ public class EntityRESTConsumer {
}
public static <T extends EntityBase> void selectEntity(T entityToSave, final ISimpleOperationCallback<List<T>> callback, Class type) {
public <T extends EntityBase> void selectEntity(T entityToSave, final ISimpleOperationCallback<List<T>> callback, Class type) {
EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class);
Call<ServiceRESTResponse<JsonObject>> request = service.processEntity(entityToSave);

View File

@@ -6,15 +6,18 @@ import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.utility.UtilityDB;
@Singleton
public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
public static void getTipoCollo(String codTcol, RunnableArgs<MtbTCol> onComplete, RunnableArgs<Exception> onFailed) {
public void getTipoCollo(String codTcol, RunnableArgs<MtbTCol> onComplete, RunnableArgs<Exception> onFailed) {
String baseSql = "SELECT * " +
"FROM mtb_tcol " +
"WHERE cod_tcol = " + UtilityDB.valueToString(codTcol);
@@ -36,7 +39,11 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
public static void getTipiCollo(RunnableArgs<List<MtbTCol>> onComplete, RunnableArgs<Exception> onFailed) {
public void getTipiCollo(RunnableArgs<List<MtbTCol>> onComplete, RunnableArgs<Exception> onFailed) {
getTipiColloStatic(onComplete, onFailed);
}
public static void getTipiColloStatic(RunnableArgs<List<MtbTCol>> onComplete, RunnableArgs<Exception> onFailed) {
String baseSql = "SELECT * " +
"FROM mtb_tcol ";

View File

@@ -1,31 +1,93 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.JtbFasi;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton
public class MesRESTConsumer extends _BaseRESTConsumer {
public static void getOrdiniLavorazioneMateriale(String codJfas, String idMateriale, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed){
private final SystemRESTConsumer mSystemRESTConsumer;
public MesRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
this.mSystemRESTConsumer = systemRESTConsumer;
}
public void getOrdiniLavorazioneMateriale(String codJfas, String idMateriale, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
mesRESTConsumerService.getOrdiniLavorazioneMateriale(codJfas,idMateriale).enqueue(new Callback<ServiceRESTResponse<List<OrdineLavorazioneDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Response<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> response) {
analyzeAnswer(response, "getAvailablePosizioni", (m) -> onComplete.run(response.body().getDto()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
mesRESTConsumerService.getOrdiniLavorazioneMateriale(codJfas, idMateriale)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Response<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> response) {
analyzeAnswer(response, "getOrdiniLavorazioneMateriale", (m) -> onComplete.run(response.body().getDto()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void getOrdiniLavorazione(String flagEvaso, String codJfas, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
mesRESTConsumerService.getOrdiniLavorazione(flagEvaso, codJfas)
.enqueue(new Callback<ServiceRESTResponse<List<OrdineLavorazioneDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Response<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> response) {
analyzeAnswer(response, "getOrdiniLavorazione", (m) -> onComplete.run(response.body().getDto()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void getOrdiniLavorazione(Date dateStart, String flagEvaso, String codJfas, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
mesRESTConsumerService.getOrdiniLavorazione(UtilityDate.formatDate(dateStart, UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH), flagEvaso, codJfas)
.enqueue(new Callback<ServiceRESTResponse<List<OrdineLavorazioneDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Response<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> response) {
analyzeAnswer(response, "getOrdiniLavorazione", (m) -> onComplete.run(response.body().getDto()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void getLineeProduzione(String codJfasParent, RunnableArgs<List<JtbFasi>> onComplete, RunnableArgs<Exception> onFailed) {
Type typeOfObjectsList = new TypeToken<ArrayList<JtbFasi>>() {}.getType();
this.mSystemRESTConsumer.processSql(
"SELECT * FROM jtb_fasi WHERE cod_jfas_parent = " + UtilityDB.valueToString(codJfasParent),
typeOfObjectsList,
onComplete,
onFailed);
}
}

View File

@@ -14,4 +14,12 @@ public interface MesRESTConsumerService {
@GET("mes_v2/getOrdiniLavorazioneMateriale")
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazioneMateriale(@Query("codJfas") String codJfas, @Query("idMateriale") String idMateriale);
@GET("mes_v2/getOrdiniLavorazione")
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazione(@Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas);
@GET("mes_v2/getOrdiniLavorazione")
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazione(@Query("startDate") String startDate, @Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas);
}

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import com.orhanobut.logger.Logger;
@@ -8,22 +9,27 @@ import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.GetPickingListDTO;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.core.rest.model.GetPickingListDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -32,9 +38,11 @@ import retrofit2.Response;
public class OrdiniRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer mSystemRESTConsumer;
private final EntityRESTConsumer mEntityRESTConsumer;
public OrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
public OrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
this.mSystemRESTConsumer = systemRESTConsumer;
this.mEntityRESTConsumer = entityRESTConsumer;
}
public void getSuggestedPickingList(String codMdep, List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete, RunnableArgs<Exception> onFailed) {
@@ -43,10 +51,59 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
service
.getSuggestedPickingList(codMdep, sitArtOrdList)
.enqueue(new Callback<ServiceRESTResponse<List<PickingObjectDTO>>>() {
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<PickingObjectDTO>>> call, Response<ServiceRESTResponse<List<PickingObjectDTO>>> response) {
analyzeAnswer(response, "getSuggestedPickingList", onComplete, onFailed);
analyzeAnswer(response, "getSuggestedPickingList", pickingObjects -> {
List<MtbPartitaMag> batchLotsToSearch = new ArrayList<>();
for (PickingObjectDTO pickingObjectDTO : pickingObjects) {
for (MtbColt mtbColt : pickingObjectDTO.getMtbColts()) {
Stream.of(mtbColt.getMtbColr())
.filter(x -> !UtilityString.isNullOrEmpty(x.getPartitaMag()))
.forEach(x -> {
if (!Stream.of(batchLotsToSearch).anyMatch(batchLotToSearch -> batchLotToSearch.getCodMart().equalsIgnoreCase(x.getCodMart()) && batchLotToSearch.getPartitaMag().equalsIgnoreCase(x.getPartitaMag()))) {
MtbPartitaMag mtbPartitaMag = new MtbPartitaMag()
.setCodMart(x.getCodMart())
.setPartitaMag(x.getPartitaMag());
mtbPartitaMag.setOperation(CommonModelConsts.OPERATION.SELECT_OBJECT);
mtbPartitaMag.setOnlyPkMaster(false);
batchLotsToSearch.add(mtbPartitaMag);
}
});
}
}
Random rand = new Random();
retrievePartiteMag(batchLotsToSearch, partite -> {
for (PickingObjectDTO pickingObjectDTO : pickingObjects) {
for (MtbColt mtbColt : pickingObjectDTO.getMtbColts()) {
for (MtbColr mtbColr : mtbColt.getMtbColr()) {
mtbColr.setId(rand.nextInt());
Optional<MtbPartitaMag> optionalMtbPartitaMag = Stream.of(partite)
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())
&& (!UtilityString.isNullOrEmpty(x.getPartitaMag()) && x.getPartitaMag().equalsIgnoreCase(mtbColr.getPartitaMag())))
.findFirst();
if (optionalMtbPartitaMag.isPresent()) mtbColr.setMtbPartitaMag(optionalMtbPartitaMag.get());
}
}
}
onComplete.run(pickingObjects);
}, onFailed);
}, onFailed);
}
@Override
@@ -58,6 +115,11 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
}
private void retrievePartiteMag(List<MtbPartitaMag> partitaMag, RunnableArgs<List<MtbPartitaMag>> onComplete, RunnableArgs<Exception> onFailed) {
this.mEntityRESTConsumer.processEntityList(partitaMag, true, MtbPartitaMag.class, onComplete, onFailed);
}
public void getOrdiniInevasi(String codMdep, GestioneEnum gestione, RunnableArgs<List<OrdineUscitaInevasoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class);
@@ -67,18 +129,18 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> response) {
analyzeAnswer(response, "getOrdiniInevasi", responseDtoList -> {
if(responseDtoList == null) responseDtoList = new ArrayList<>();
if (responseDtoList == null) responseDtoList = new ArrayList<>();
onComplete.run(responseDtoList);
}, ex -> {
Logger.e(ex, "Errore durante il caricamento degli ordini di lavorazione");
if(onFailed != null) onFailed.run(ex);
if (onFailed != null) onFailed.run(ex);
});
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<OrdineUscitaInevasoDTO>>> call, Throwable t) {
Logger.e(t, "Errore durante il caricamento degli ordini di lavorazione");
if(onFailed != null) onFailed.run(new Exception(t));
if (onFailed != null) onFailed.run(new Exception(t));
}
});
}
@@ -113,7 +175,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
public void getBancaliGiaRegistrati(List<OrdineInevasoDTO> orders, GestioneEnum gestione, int segno, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
String whereCondGestione = "";
if(gestione != null) {
if (gestione != null) {
whereCondGestione = "mtb_colt.gestione = " + UtilityDB.valueToString(gestione.getText()) + " ";
} else {
whereCondGestione = "(mtb_colt.gestione = 'V' OR mtb_colt.gestione = 'L') ";
@@ -142,12 +204,13 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
baseSql += "(" + UtilityQuery.concatFieldListInWhereCond(whereCondMapList) + ")";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {
}.getType();
this.mSystemRESTConsumer.<List<MtbColt>>processSql(baseSql, typeOfObjectsList, value -> {
if(onComplete != null) onComplete.run(value);
}, ex -> {
if(onFailed != null) onFailed.run(ex);
});
if (onComplete != null) onComplete.run(value);
}, ex -> {
if (onFailed != null) onFailed.run(ex);
});
}
}

View File

@@ -59,7 +59,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
});
griglia.setGrigliaAcquistiChild(listaArticoli);
onSuccess.run(griglia);
});
}, false);
}, onFailed);
}

View File

@@ -32,42 +32,14 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
}
public static void getAvailablePrintersStatic(final ISimpleOperationCallback<List<String>> callback) {
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.getAvailablePrinters().enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
analyzeAnswer(response, "GetAvailablePrinters", callback);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) {
}
});
}
public void getAvailablePrinters(String codMdep, final RunnableArgs<List<String>> onComplete, final RunnableArgs<Exception> onFailed) {
getAvailablePrintersStatic(codMdep, onComplete, onFailed);
}
public static void getAvailablePrintersStatic(String codMdep, final RunnableArgs<List<String>> onComplete, RunnableArgs<Exception> onFailed) {
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.getAvailablePrinters(codMdep).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
printerService.getAvailablePrinters(codMdep).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
analyzeAnswer(response, "GetAvailablePrinters", new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(List<String> value) {
onComplete.run(value != null ? Stream.of(value).withoutNulls().toList() : null);
}
@Override
public void onFailed(Exception ex) {
onFailed.run(ex);
}
});
analyzeAnswer(response, "GetAvailablePrinters", printers -> {
onComplete.run(printers != null ? Stream.of(printers).withoutNulls().toList() : null);
}, onFailed);
}
@Override
@@ -81,15 +53,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
public void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs<List<String>> onComplete, RunnableArgs<Exception> onFailed) {
PrinterRESTConsumer.getAvailablePrintersStatic(codMdep, printerType, onComplete, onFailed);
}
public static void getAvailablePrintersStatic(String codMdep, Type printerType, RunnableArgs<List<String>> onComplete, RunnableArgs<Exception> onFailed) {
String printerTypeStr = printerType != null ? printerType.toString() : null;
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
analyzeAnswer(response, "GetAvailablePrinters", printerList -> {
@@ -108,17 +76,13 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
}
public void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
printColloStatic(printerName, testataColloToPrint, quantity, reportName, onComplete, onFailed);
}
public static void printColloStatic(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
if(BuildConfig.DEBUG) {
if (BuildConfig.DEBUG) {
onComplete.run();
return;
}
if(UtilityString.isNullOrEmpty(printerName)) {
if (UtilityString.isNullOrEmpty(printerName)) {
onFailed.run(new Exception("Nessuna stampante configurata: valore null"));
return;
}
@@ -133,7 +97,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
quantity,
reportName)
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "printCollo", data -> {
@@ -143,7 +107,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
@Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
if(t.getMessage().contains("Printer not found")) {
if (t.getMessage().contains("Printer not found")) {
onFailed.run(new NoPrintersFoundException());
} else onFailed.run(new Exception(t));
}
@@ -165,7 +129,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService
.processPrintReport(printerName, quantity, jasperDTO)
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "printReport", data -> {
@@ -175,11 +139,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
@Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
if(t.getMessage().contains("Printer not found")) {
if (t.getMessage().contains("Printer not found")) {
onFailed.run(new NoPrintersFoundException());
} else onFailed.run(new Exception(t));
}
});
});
}
}

View File

@@ -42,27 +42,19 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
nativeSqlDTO.nativeSql = nativeSql;
SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class);
service.processSql(nativeSqlDTO).enqueue(new Callback<ServiceRESTResponse<Object>>() {
service.processSql(nativeSqlDTO).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "ProcessSql", new ISimpleOperationCallback<Object>() {
@Override
public void onSuccess(Object value) {
Gson gson = new Gson();
String json = gson.toJson(value);
analyzeAnswer(response, "ProcessSql", o -> {
Gson gson = new Gson();
String json = gson.toJson(o);
InputStream ims = new ByteArrayInputStream(json.getBytes());
Reader reader = new InputStreamReader(ims);
T gsonObj = gson.fromJson(reader, clazz);
InputStream ims = new ByteArrayInputStream(json.getBytes());
Reader reader = new InputStreamReader(ims);
T gsonObj = gson.fromJson(reader, clazz);
onComplete.run(gsonObj);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
onComplete.run(gsonObj);
}, onFailed);
}
@Override
@@ -73,6 +65,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
});
}
public static <T> void processSqlStatic(String nativeSql, final Type clazz, final ISimpleOperationCallback<T> callback) {
processSqlStatic(nativeSql, clazz, data -> {
@@ -86,19 +79,19 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
}
public static void getAvailableProfiles(final ISimpleOperationCallback<List<String>> callback){
public static void getAvailableProfiles(final RunnableArgs<List<String>> onSuccess, RunnableArgs<Exception> onFailed) {
SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class);
service.getAvailableProfiles(SettingsManager.i().getUser().getUsername(), SettingsManager.i().getUser().getPassword()).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
analyzeAnswer(response, "ProfilesAvailable", callback);
analyzeAnswer(response, "ProfilesAvailable", onSuccess, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, final Throwable t) {
Log.e("ProfilesAvailable", t.toString());
callback.onFailed(new Exception(t));
onFailed.run(new Exception(t));
UtilityLogger.errorMe(new Exception(t));
}
});
@@ -107,23 +100,19 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
}
public static void getAvailableCodMdeps(final ISimpleOperationCallback<List<AvailableCodMdepsDTO>> callback){
public static void getAvailableCodMdeps(final RunnableArgs<List<AvailableCodMdepsDTO>> onSuccess, RunnableArgs<Exception> onFailed) {
SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class);
service.getAvailableCodMdeps().enqueue(new Callback<ServiceRESTResponse<List<AvailableCodMdepsDTO>>>() {
service.getAvailableCodMdeps().enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> call, Response<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> response) {
analyzeAnswer(response, "CodMdepsAvailable", callback);
analyzeAnswer(response, "CodMdepsAvailable", onSuccess, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> call, final Throwable t) {
Log.e("CodMdepsAvailable", t.toString());
callback.onFailed(new Exception(t));
// UtilityLogger.errorMe(new Exception(t));
onFailed.run(new Exception(t));
}
});
}
@@ -139,7 +128,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB()) ? "" : " [" + SettingsManager.i().getUserSession().getProfileDB() + "]";
String dest = "";
if(BuildConfig.DEBUG) {
if (BuildConfig.DEBUG) {
dest = TextUtils.join(";", CommonConst.Mail.forErrorsDebug);
} else {
dest = TextUtils.join(";", CommonConst.Mail.forErrors);
@@ -155,10 +144,10 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
.setHtml(true);
sendMail(mailDTO, () -> {
if(onComplete != null) onComplete.run();
if (onComplete != null) onComplete.run();
}, ex -> {
Log.e(SystemRESTConsumer.class.getName(), "", ex);
if(onFailed != null) onFailed.run(ex);
if (onFailed != null) onFailed.run(ex);
});
}
@@ -169,12 +158,12 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
service.sendMail(mailDTO).enqueue(new Callback<ServiceRESTResponse<String>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<String>> call, Response<ServiceRESTResponse<String>> response) {
if(onComplete != null) onComplete.run();
if (onComplete != null) onComplete.run();
}
@Override
public void onFailure(Call<ServiceRESTResponse<String>> call, Throwable t) {
if(onFailed != null) {
if (onFailed != null) {
onFailed.run(new Exception(t));
}
}
@@ -182,21 +171,21 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
}
public static void getAzienda(RunnableArgs<Azienda> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT TOP 1 * FROM azienda";
Type typeOfObjectsList = new TypeToken<ArrayList<Azienda>>() {}.getType();
Type typeOfObjectsList = new TypeToken<ArrayList<Azienda>>() {
}.getType();
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<List<Azienda>>() {
@Override
public void onSuccess(List<Azienda> value) {
if(onComplete != null) onComplete.run(value.get(0));
if (onComplete != null) onComplete.run(value.get(0));
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
if (onFailed != null) onFailed.run(ex);
}
});

View File

@@ -14,96 +14,78 @@ import retrofit2.Response;
public class _BaseRESTConsumer {
public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, final ISimpleOperationCallback<T> callback) {
public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) {
if (response.isSuccessful()) {
if (response.body() != null) {
if (response.body().getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
callback.onFailed(new Exception(response.body().getErrorMessage()));
onFailed.run(new Exception(response.body().getErrorMessage()));
} else {
T dataObj = response.body().getDto() != null ?
response.body().getDto() :
response.body().getEntity();
callback.onSuccess(dataObj);
onComplete.run(dataObj);
}
} else {
Log.e(logTitle, response.body().getErrorMessage());
// callback.onFailed(new Exception(response.body().getErrorMessage()));
callback.onFailed(CommonRESTException.tryRecognizeException(response.body().getErrorMessage()));
onFailed.run(CommonRESTException.tryRecognizeException(response.body().getErrorMessage()));
}
} else {
Log.e(logTitle, response.message());
callback.onFailed(new Exception(response.message()));
onFailed.run(new Exception(response.message()));
}
} else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message());
callback.onFailed(new Exception("Status " + response.code() + ": " + response.message()));
}
}
public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) {
analyzeAnswer(response, logTitle, new ISimpleOperationCallback<T>() {
@Override
public void onSuccess(T value) {
onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
onFailed.run(ex);
}
});
}
public static <T> void analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle, final ISimpleOperationCallback<List<T>> callback) {
if (response.isSuccessful()) {
if (response.body() != null) {
if (response.body().getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
callback.onFailed(new Exception(response.body().getErrorMessage()));
} else {
List<T> dataObj = response.body().getEntityList();
callback.onSuccess(dataObj);
}
} else {
Log.e(logTitle, response.body().getErrorMessage());
callback.onFailed(new Exception(response.body().getErrorMessage()));
}
if (response.code() == 404) {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")"));
} else {
Log.e(logTitle, response.message());
callback.onFailed(new Exception(response.message()));
Log.e(logTitle, "Status " + response.code() + ": " + response.message());
onFailed.run(new Exception("Status " + response.code() + ": " + response.message()));
}
} else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message());
callback.onFailed(new Exception("Status " + response.code() + ": " + response.message()));
}
}
public static <T> void analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<List<T>> onComplete, RunnableArgs<Exception> onFailed) {
analyzeAnswerList(response, logTitle, new ISimpleOperationCallback<List<T>>() {
@Override
public void onSuccess(List<T> value) {
onComplete.run(value);
}
if (response.isSuccessful()) {
if (response.body() != null) {
if (response.body().getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
onFailed.run(new Exception(response.body().getErrorMessage()));
} else {
@Override
public void onFailed(Exception ex) {
onFailed.run(ex);
List<T> dataObj = response.body().getEntityList();
onComplete.run(dataObj);
}
} else {
Log.e(logTitle, response.body().getErrorMessage());
onFailed.run(new Exception(response.body().getErrorMessage()));
}
} else {
Log.e(logTitle, response.message());
onFailed.run(new Exception(response.message()));
}
});
} else {
if (response.code() == 404) {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")"));
} else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message());
onFailed.run(new Exception("Status " + response.code() + ": " + response.message()));
}
}
}
public static <T> void analyzeListOfAnswers(Response<List<ServiceRESTResponse<T>>> responseList, String logTitle, RunnableArgs<List<T>> onComplete, RunnableArgs<Exception> onFailed) {
if (responseList.isSuccessful()) {
if (responseList.body() != null) {
List<T> analyzedList = new ArrayList<>();
for (ServiceRESTResponse<T> response : responseList.body()){
for (ServiceRESTResponse<T> response : responseList.body()) {
if (response.getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) {
onFailed.run(new Exception(response.getErrorMessage()));
@@ -111,7 +93,7 @@ public class _BaseRESTConsumer {
T dataObj = response.getDto() != null ?
response.getDto() :
response.getEntity();
if (dataObj !=null ) analyzedList.add(dataObj);
if (dataObj != null) analyzedList.add(dataObj);
}
} else {
@@ -126,8 +108,13 @@ public class _BaseRESTConsumer {
onFailed.run(new Exception(responseList.message()));
}
} else {
Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message());
onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message()));
if (responseList.code() == 404) {
Log.e(logTitle, "Errore " + responseList.code() + ": risorsa non trovata");
onFailed.run(new Exception("Errore " + responseList.code() + ": risorsa non trovata (" + logTitle + ")"));
} else {
Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message());
onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message()));
}
}
}
}

View File

@@ -9,6 +9,7 @@ import java.lang.reflect.Type;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
public class DateDeserializer implements JsonDeserializer<Date> {
@@ -16,6 +17,8 @@ public class DateDeserializer implements JsonDeserializer<Date> {
public Date deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
String date = element.getAsString();
if (UtilityString.isNullOrEmpty(date)) return null;
return UtilityDate.recognizeDateWithExceptionHandler(date);
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.integrywmsnative.core.rest.serializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class DateSerializer implements JsonSerializer<Date> {
@Override
public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
String dateString = UtilityDate.formatDate(src, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
return src == null ? null : new JsonPrimitive(dateString);
}
}

View File

@@ -13,7 +13,6 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.StbGestSetup;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
@@ -30,12 +29,12 @@ public class SettingsManager {
private static Context mContext;
public static void init(Context context){
public static void init(Context context) {
mContext = context;
settingsModelIstance = (SettingsModel) Stash.getObject(TAG, SettingsModel.class);
if(settingsModelIstance == null) {
if (settingsModelIstance == null) {
settingsModelIstance = new SettingsModel();
settingsModelIstance.setServer(new SettingsModel.Server());
@@ -49,31 +48,28 @@ public class SettingsManager {
}
public static SettingsModel i(){
public static SettingsModel i() {
return settingsModelIstance;
}
public static DBSettingsModel iDB(){
public static DBSettingsModel iDB() {
return dbSettingsModelIstance;
}
public static boolean isFirstStart(){
public static boolean isFirstStart() {
return firstStart;
}
public static boolean isInstanceAvailable(){
public static boolean isInstanceAvailable() {
return i() != null;
}
public static void update(){
public static void update() {
Stash.put(TAG, settingsModelIstance);
}
public static void loadDBVariables(Runnable onComplete, RunnableArgs<Exception> onFailed){
public static void loadDBVariables(RunnableArgs<String> onProgress, Runnable onComplete, RunnableArgs<Exception> onFailed) {
dbSettingsModelIstance = new DBSettingsModel();
Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_vars");
@@ -86,90 +82,93 @@ public class SettingsManager {
RunnableArgs<Exception> tmpOnFailed = ex -> {
perfTrace.putAttribute("failed", "true");
if(!(ex instanceof SocketTimeoutException)) onFailed.run(ex);
else onFailed.run(new Exception("Errore durante il caricamento dei dati. Riavviare l'applicazione!"));
if (!(ex instanceof SocketTimeoutException)) onFailed.run(ex);
else
onFailed.run(new Exception("Errore durante il caricamento dei dati. Riavviare l'applicazione!"));
};
loadDatiAzienda(() ->
loadAvailableProfiles(() ->
loadAvailableCodMdeps(() ->
loadAvailablePosizioni(() ->
loadGestSetupValues(tmpOnComplete, tmpOnFailed) ,tmpOnFailed), tmpOnFailed), tmpOnFailed), tmpOnFailed);
onProgress.run("dati azienda");
loadDatiAzienda(() -> {
onProgress.run("profili");
loadAvailableProfiles(() -> {
onProgress.run("depositi");
loadAvailableCodMdeps(() -> {
onProgress.run("posizioni");
loadAvailablePosizioni(() -> {
onProgress.run("impostazioni");
loadGestSetupValues(tmpOnComplete, tmpOnFailed);
}, tmpOnFailed);
}, tmpOnFailed);
}, tmpOnFailed);
}, tmpOnFailed);
}
private static void loadDatiAzienda(Runnable onComplete, RunnableArgs<Exception> onFailed) {
SystemRESTConsumer.getAzienda(datiAzienda -> {
SettingsManager.iDB().setDatiAzienda(datiAzienda);
if(onComplete != null) onComplete.run();
if (onComplete != null) onComplete.run();
}, onFailed);
}
private static void loadAvailableProfiles(Runnable onComplete, RunnableArgs<Exception> onFailed){
SystemRESTConsumer.getAvailableProfiles(new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(List<String> availableProfiles) {
dbSettingsModelIstance.setAvailableProfiles(availableProfiles);
private static void loadAvailableProfiles(Runnable onComplete, RunnableArgs<Exception> onFailed) {
SystemRESTConsumer.getAvailableProfiles(availableProfiles -> {
dbSettingsModelIstance.setAvailableProfiles(availableProfiles);
onComplete.run();
onComplete.run();
}
@Override
public void onFailed(Exception ex) {
//BOH
if(onFailed != null) onFailed.run(ex);
}
}, ex -> {
//BOH
if (onFailed != null) onFailed.run(ex);
});
}
private static void loadAvailableCodMdeps(Runnable onComplete, RunnableArgs<Exception> onFailed) {
SystemRESTConsumer.getAvailableCodMdeps(new ISimpleOperationCallback<List<AvailableCodMdepsDTO>>() {
@Override
public void onSuccess(List<AvailableCodMdepsDTO> availableCodMdeps) {
dbSettingsModelIstance.setAvailableCodMdep(availableCodMdeps);
SystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> {
dbSettingsModelIstance.setAvailableCodMdep(availableCodMdeps);
if(availableCodMdeps == null || availableCodMdeps.size() == 0) {
onFailed.run(new Exception(mContext.getText(R.string.no_codmdep_available).toString()));
return;
}
if (availableCodMdeps == null || availableCodMdeps.size() == 0) {
onFailed.run(new Exception(mContext.getText(R.string.no_codmdep_available).toString()));
return;
}
boolean codMdepExistsAnymore = false;
boolean codMdepExistsAnymore = false;
if(settingsModelIstance.getUserSession().getDepo() != null){
for(AvailableCodMdepsDTO availableCodMdepDTO : availableCodMdeps){
//Controllo se il codMdep salvato esiste ancora
if(availableCodMdepDTO.getCodMdep().equalsIgnoreCase(settingsModelIstance.getUserSession().getDepo().getCodMdep())) {
codMdepExistsAnymore = true;
break;
}
if (settingsModelIstance.getUserSession().getDepo() != null) {
for (AvailableCodMdepsDTO availableCodMdepDTO : availableCodMdeps) {
//Controllo se il codMdep salvato esiste ancora
if (availableCodMdepDTO.getCodMdep().equalsIgnoreCase(settingsModelIstance.getUserSession().getDepo().getCodMdep())) {
codMdepExistsAnymore = true;
break;
}
}
if(!codMdepExistsAnymore){
settingsModelIstance.getUserSession().setDepo(availableCodMdeps.get(0));
}
if(onComplete != null) onComplete.run();
}
@Override
public void onFailed(Exception ex) {
//BOH
if(onFailed != null) onFailed.run(ex);
if (!codMdepExistsAnymore) {
settingsModelIstance.getUserSession().setDepo(availableCodMdeps.get(0));
}
if (onComplete != null) onComplete.run();
}, ex -> {
//BOH
if (onFailed != null) onFailed.run(ex);
});
}
private static void loadAvailablePosizioni(Runnable onComplete, RunnableArgs<Exception> onFailed) {
PosizioniRESTConsumer.getAvailablePosizioni(availablePosizioni -> {
dbSettingsModelIstance.setAvailablePosizioni(availablePosizioni);
dbSettingsModelIstance.setAvailablePosizioni(availablePosizioni);
if(onComplete != null) onComplete.run();
}, ex -> {
if(onFailed != null) onFailed.run(ex);
}
if (onComplete != null) onComplete.run();
}, ex -> {
if (onFailed != null) onFailed.run(ex);
}
);
}
@@ -270,16 +269,16 @@ public class SettingsManager {
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
dbSettingsModelIstance.setDefaultCausaleRettificaGiacenze(getValueFromList(list, "SETUP", "DEFAULT_CAUSALE_RETTIFICA_GIACENZE", String.class));
dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(getValueFromList(list, "SETUP","ENABLE_CHECK_PARTITA_MAG_PICKING_V", Boolean.class));
dbSettingsModelIstance.setFlagMultiClienteOrdV(getValueFromList(list, "SETUP","FLAG_MULTI_CLIENTE_ORD_VENDITA", Boolean.class));
dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP","COD_ANAG_DEFAULT", String.class));
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP","DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(getValueFromList(list, "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", Boolean.class));
dbSettingsModelIstance.setFlagMultiClienteOrdV(getValueFromList(list, "SETUP", "FLAG_MULTI_CLIENTE_ORD_VENDITA", Boolean.class));
dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP", "COD_ANAG_DEFAULT", String.class));
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class));
dbSettingsModelIstance.setFlagAllowEmptyClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class));
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list,"SPEDIZIONE", "ENABLE_CHECK_DEPOSITO", Boolean.class));
dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list, "SPEDIZIONE", "ENABLE_CHECK_DEPOSITO", Boolean.class));
dbSettingsModelIstance.setFlagForceAllToColli(getValueFromList(list, "SETUP", "FLAG_FORCE_ALL_TO_COLLI", Boolean.class));
dbSettingsModelIstance.setFlagAskPesoColloSpedizione(getValueFromList(list, "SETUP", "FLAG_ASK_PESO_COLLO", Boolean.class));
dbSettingsModelIstance.setFlagUseNewPickingListSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_NEW_PICKING_LIST", Boolean.class));
@@ -292,27 +291,27 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class);
if(onNumCnfInputChanged != null) {
if (onNumCnfInputChanged != null) {
dbSettingsModelIstance.setOnNumCnfInputChanged(onNumCnfInputChanged);
}
if(onComplete != null) onComplete.run();
if (onComplete != null) onComplete.run();
}, onFailed);
}
public static <T>T getValueFromList(List<StbGestSetup> stbGestSetupList, String section, String keySectionName, Class<T> clazz) {
public static <T> T getValueFromList(List<StbGestSetup> stbGestSetupList, String section, String keySectionName, Class<T> clazz) {
StbGestSetup value = Stream.of(stbGestSetupList)
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
.findFirst().get();
if(clazz == String.class) {
if (clazz == String.class) {
return clazz.cast(value.getValue());
} else if(clazz == Boolean.class) {
} else if (clazz == Boolean.class) {
return clazz.cast("S".equalsIgnoreCase(value.getValue()));
} else if(clazz == Integer.class && value.getValue() != null) {
} else if (clazz == Integer.class && value.getValue() != null) {
return clazz.cast(Integer.parseInt(value.getValue()));
} else return null;

View File

@@ -3,6 +3,8 @@ package it.integry.integrywmsnative.core.utility;
import java.math.BigDecimal;
import java.math.RoundingMode;
import it.integry.integrywmsnative.core.CommonConst;
public class UtilityBigDecimal {
public static boolean greaterThan(BigDecimal input, BigDecimal toCompareWith) {
@@ -76,7 +78,13 @@ public class UtilityBigDecimal {
}
public static BigDecimal multiply(BigDecimal input1, BigDecimal multiplier) {
if (input1 == null || multiplier == null) return null;
return input1.multiply(multiplier);
}
public static BigDecimal round(BigDecimal input) {
if (input == null) return null;
return input.setScale(CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS, RoundingMode.HALF_EVEN);
}
}

View File

@@ -2,10 +2,8 @@ package it.integry.integrywmsnative.core.utility;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import it.integry.integrywmsnative.core.exception.DateNotRecognizedException;
import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException;
@@ -19,9 +17,15 @@ public class UtilityDate {
public static class COMMONS_DATE_FORMATS {
public static final String DMY_SLASH = "dd/MM/yyyy";
public static final String YMD_SLASH = "yyyy/MM/dd";
public static final String DM_SLASH = "dd/MM";
public static final String MD_SLASH = "MM/dd";
public static final String YMD_DASH = "yyyy-MM-dd";
public static final String DMY_TIME_SLASH = DMY_SLASH + " HH:mm:ss";
public static final String YMD_TIME_SLASH = YMD_SLASH + " HH:mm:ss";
public static final String DM_TIME_SLASH = DM_SLASH + " HH:mm";
public static final String MD_TIME_SLASH = MD_SLASH + " HH:mm";
public static final String TIME = "HH:mm";
public static final String TIME_W_SECS = "HH:mm:ss";
public static final String DM_HUMAN = "dd MMM";

View File

@@ -8,6 +8,14 @@ import androidx.fragment.app.DialogFragment;
public class UtilityDialog {
public static void setTo60PercentWidth(Context context, DialogFragment dialog) {
int width = (int)(context.getResources().getDisplayMetrics().widthPixels*0.60);
dialog.getDialog().getWindow().setLayout(width, LinearLayout.LayoutParams.MATCH_PARENT);
}
public static void setTo90PercentWidth(Context context, Dialog dialog) {
int width = (int)(context.getResources().getDisplayMetrics().widthPixels*0.90);

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.utility;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.util.DisplayMetrics;
@@ -22,4 +23,14 @@ public class UtilityDimension {
return Math.round(px);
}
public static double getDisplayInchs(Activity activity) {
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
float yInches= metrics.heightPixels/metrics.ydpi;
float xInches= metrics.widthPixels/metrics.xdpi;
return Math.sqrt(xInches*xInches + yInches*yInches);
}
}

View File

@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.utility;
import android.app.Dialog;
import android.content.Context;
import android.text.SpannableString;
import android.text.Html;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
@@ -17,50 +17,46 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class UtilityExceptions {
public static void defaultException(Context context, Exception ex, Dialog progressDialog){
public static void defaultException(Context context, Exception ex, Dialog progressDialog) {
defaultException(context, ex);
if(progressDialog != null) progressDialog.dismiss();
if (progressDialog != null) progressDialog.dismiss();
}
public static void defaultException(Context context, Exception ex, Dialog progressDialog, boolean sendMail){
defaultException(context, ex, sendMail);
if(progressDialog != null) progressDialog.dismiss();
}
public static void defaultException(Context context, Exception ex){
public static void defaultException(Context context, Exception ex) {
defaultException(context, ex, false);
}
public static void defaultException(Context context, Exception ex, boolean sendEmail){
public static void defaultException(Context context, Exception ex, boolean sendEmail) {
if(ex.getMessage() != null) {
Logger.e(ex, ex.getMessage());
if (ex.getMessage() != null) {
Logger.e(ex, Html.fromHtml(ex.getMessage()).toString());
} else {
Logger.e(ex, "Errore");
}
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
if(errorMessage == null) {
if (errorMessage == null) {
errorMessage = ex.getMessage();
if(ex.getCause() != null) errorMessage += "<br />" + ex.getCause().getMessage();
if (ex.getCause() != null) errorMessage += "<br />" + ex.getCause().getMessage();
}
FragmentManager fm = null;
if(context != null && context instanceof FragmentActivity) {
if (context instanceof FragmentActivity) {
fm = ((FragmentActivity) context).getSupportFragmentManager();
} else if(UtilityContext.getMainActivity() != null) {
} else if (UtilityContext.getMainActivity() != null) {
fm = UtilityContext.getMainActivity().getSupportFragmentManager();
}
if(fm != null) {
DialogSimpleMessageView.makeErrorDialog(new SpannableString(errorMessage), null, null)
if (fm != null) {
DialogSimpleMessageView.makeErrorDialog(Html.fromHtml(errorMessage), null, null)
.show(fm, "tag");
}
if(!BuildConfig.DEBUG) {
// if(sendEmail) UtilityLogger.errorMe(ex);
if (!BuildConfig.DEBUG) {
if (sendEmail) UtilityLogger.errorMe(ex);
FirebaseCrashlytics.getInstance().recordException(ex);
}
}

View File

@@ -1,22 +1,5 @@
package it.integry.integrywmsnative.core.utility;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UtilitySettings {
private static AppDatabase mAppDatabase;
public static void init(AppDatabase appDatabase) {
mAppDatabase = appDatabase;
}
public static void logout(){
SettingsManager.i().setUser(null);
SettingsManager.i().setUserSession(null);
UtilityThread.executeParallel(mAppDatabase::clearAllTables);
SettingsManager.update();
}
}

View File

@@ -2,8 +2,17 @@ package it.integry.integrywmsnative.core.utility;
public class UtilityThread {
public static void executeParallel(Runnable runnable) {
new Thread(runnable).start();
public static void executeParallel(Runnable runnable, boolean waitEnd) {
Thread t = new Thread(runnable);
t.start();
if(waitEnd) {
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.accettazione;
import dagger.Subcomponent;
@Subcomponent
public interface MainAccettazioneComponent {
@Subcomponent.Factory
interface Factory {
MainAccettazioneComponent create();
}
void inject(MainAccettazioneFragment mainAccettazioneFragment);
}

View File

@@ -1,20 +1,17 @@
package it.integry.integrywmsnative.gest.accettazione;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Stream;
@@ -23,44 +20,46 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.rest.CommonRESTException;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBinding;
import it.integry.integrywmsnative.gest.accettazione.core.AccettazioneHelper;
import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapter;
import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneAdapter;
import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneClienteListModel;
import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneListModel;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment {
public class MainAccettazioneFragment extends BaseFragment implements ISearcableFragment, ITitledFragment, IScrollableFragment, MainAccettazioneViewModel.Listener {
public BindableBoolean fabVisible = new BindableBoolean(false);
@Inject
MainAccettazioneViewModel mViewModel;
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
private ElevatedToolbar mToolbar;
private FragmentMainAccettazioneBinding mBinding;
private AccettazioneHelper mHelper;
private MainListAccettazioneAdapter mAdapter;
private List<OrdineAccettazioneInevasoDTO> mOriginalOrderList;
private final List<OrdineAccettazioneInevasoDTO> mRenderedOrderList = new ArrayList<>();
private final ObservableArrayList<MainListAccettazioneListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
private AppCompatTextView mAppBarTitle;
public MainAccettazioneFragment() {
// Required empty public constructor
}
@@ -73,8 +72,6 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
}
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
mAppBarTitle = titleText;
@@ -87,21 +84,34 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_accettazione, container, false);
init();
MainApplication.appComponent
.mainAccettazioneComponent()
.create()
.inject(this);
mViewModel.setListener(this);
mBinding.setLifecycleOwner(this);
mBinding.setView(this);
mBinding.accettazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
mBinding.accettazioneMainFab.hide();
mBinding.accettazioneMainFab.setOnClickListener(v -> {
this.onAccettazioneMainFabClick();
});
this.initRecyclerView();
mToolbar.setRecyclerView(mBinding.accettazioneMainList);
return mBinding.getRoot();
}
@Override
public void onStart() {
super.onStart();
this.fabVisible.set(false);
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mViewModel.init(codMdep);
}
@Override
public void onDestroy() {
for (Runnable onPreDestroy : mOnPreDestroyList) {
@@ -111,111 +121,93 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
}
private void init() {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
mHelper = new AccettazioneHelper(getActivity());
mHelper.loadOrdini(ordini -> {
if(ordini != null) {
Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show();
mOriginalOrderList = ordini;
}
mBinding.ordiniAccettazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE);
refreshRenderedOrdini(ordini);
initRecyclerView();
progress.dismiss();
}, ex -> {
UtilityExceptions.defaultException(getActivity(), ex, progress);
});
}
private void initRecyclerView() {
mAdapter = new MainListAccettazioneAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged);
mBinding.accettazioneMainList.setAdapter(mAdapter);
}
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList);
private void refreshRenderedOrdini(List<OrdineAccettazioneInevasoDTO> ordini) {
mRenderedOrderList.clear();
if(ordini != null) mRenderedOrderList.addAll(ordini);
MainListAccettazioneAdapter adapter = new MainListAccettazioneAdapter(getActivity(), mOrdiniInevasiMutableData)
.setOnGroupItemClicked(x -> {
Stream.of(mOrdiniInevasiMutableData)
.filter(y -> !y.getGroupTitle().equalsIgnoreCase(x) && y.getSelectedObservable().get())
.forEach(y -> y.getSelectedObservable().set(false));
boolean allSelected = Stream.of(mOrdiniInevasiMutableData)
.filter(y -> y.getGroupTitle().equalsIgnoreCase(x))
.allMatch(y -> y.getSelectedObservable().get());
Stream.of(mOrdiniInevasiMutableData)
.filter(y -> y.getGroupTitle().equalsIgnoreCase(x))
.forEach(y -> y.getSelectedObservable().set(!allSelected));
})
.setOnItemChecked(x -> {
Stream.of(mOrdiniInevasiMutableData)
.filter(y -> !y.getGroupTitle().equalsIgnoreCase(x.getGroupTitle()) && y.getSelectedObservable().get())
.forEach(y -> y.getSelectedObservable().set(false));
fabVisible.set(Stream.of(mOrdiniInevasiMutableData)
.anyMatch(y -> y.getSelectedObservable().get()));
});
adapter.setEmptyView(this.mBinding.ordiniAccettazioneEmptyView);
this.mBinding.accettazioneMainList.setAdapter(adapter);
this.mBinding.accettazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
if (mToolbar != null)
mToolbar.setRecyclerView(this.mBinding.accettazioneMainList);
}
private void refreshList(List<OrdineAccettazioneInevasoDTO> filteredList) {
private final RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged = dto -> {
List<OrdineAccettazioneInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
List<OrdineAccettazioneInevasoDTO> tmpList = null;
if(dto.isSelected()) {
Stream.of(selectedOrders)
.filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd()))
.forEach(x -> x.setSelected(false));
if (filteredList != null) {
tmpList = filteredList;
} else {
tmpList = mViewModel.getOrderList().getValue();
}
if(selectedOrders != null && selectedOrders.size() > 0) {
mBinding.accettazioneMainFab.show();
}
else {
mBinding.accettazioneMainFab.hide();
}
};
this.mOrdiniInevasiMutableData.clear();
this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(tmpList));
}
private void onAccettazioneMainFabClick() {
private List<MainListAccettazioneListModel> convertDataModelToListModel(List<OrdineAccettazioneInevasoDTO> dataList) {
List<OrdineAccettazioneInevasoDTO> selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
return Stream.of(dataList)
.distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
.sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : ""))
.map(x -> {
MainListAccettazioneListModel listModel = new MainListAccettazioneListModel();
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
listModel.setOriginalModel(x);
OrdiniAccettazioneRESTConsumer.retrievePickingListNewStatic(selectedOrders, sitArtOrds -> {
progress.dismiss();
long artsCounter = Stream.of(sitArtOrds)
.filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO))
.map(SitArtOrdDTO::getCodMart)
.distinct()
.count();
long ordsCounter = Stream.of(sitArtOrds)
.distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione())
.count();
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter)
+ "<br /><br />" +
"<b>" + artsCounter + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)),
null,
() -> {
String cacheSitArtItemID = DataCache.addItem(sitArtOrds);
String cacheOrdersItemID = DataCache.addItem(selectedOrders);
Intent myIntent = new Intent(getActivity(), AccettazionePickingActivity.class);
myIntent.putExtra("keyOrders", cacheOrdersItemID);
myIntent.putExtra("keySitArts", cacheSitArtItemID);
getActivity().startActivity(myIntent);
}).show(getActivity().getSupportFragmentManager(), "tag");
}, ex -> {
progress.dismiss();
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage();
DialogSimpleMessageView
.makeErrorDialog(new SpannableString(errorMessage), null, null)
.show(getActivity().getSupportFragmentManager(), "tag");
});
listModel.setGroupTitle(x.getRagSocOrd());
listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero().toString(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
List<MainListAccettazioneClienteListModel> clienti = Stream.of(dataList)
.filter(y -> y.getBarcode().equals(x.getBarcode()))
.map(y -> new MainListAccettazioneClienteListModel()
.setPrimaryText(y.getRifOrd())
.setRightText(UtilityDate.formatDate(y.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH)))
.toList();
listModel.setClientiListModel(clienti);
return listModel;
})
.toList();
}
public void dispatchOrders() {
List<OrdineAccettazioneInevasoDTO> selectedOrders = Stream.of(this.mOrdiniInevasiMutableData)
.filter(x -> x.getSelectedObservable().get())
.map(MainListAccettazioneListModel::getOriginalModel)
.toList();
this.mViewModel.loadPicking(selectedOrders);
}
@@ -236,11 +228,22 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
@Override
public boolean onQueryTextChange(String newText) {
final List<OrdineAccettazioneInevasoDTO> filtermodelist = mHelper.getFilteredOrdersByFornitore(mOriginalOrderList, newText);
mAdapter.updateItems(filtermodelist);
return true;
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
if(originalList == null || originalList.isEmpty()) return false;
for(int i = 0; i < originalList.size(); i++){
if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){
filteredOrders.add(originalList.get(i));
}
}
refreshList(filteredOrders);
return true;
}
@Override
public void setScrollToolbar(ElevatedToolbar toolbar) {
mToolbar = toolbar;
@@ -251,4 +254,35 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
public void addOnPreDestroy(Runnable onPreDestroy) {
this.mOnPreDestroyList.add(onPreDestroy);
}
@Override
public void onOrdersDispatched(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts) {
long artsCounter = Stream.of(sitArts)
.filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO))
.map(SitArtOrdDTO::getCodMart)
.distinct()
.count();
long ordsCounter = Stream.of(sitArts)
.distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione())
.count();
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter)
+ "<br /><br />" +
"<b>" + artsCounter + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)),
null,
() -> {
String cacheSitArtItemID = DataCache.addItem(sitArts);
String cacheOrdersItemID = DataCache.addItem(orders);
Intent myIntent = new Intent(getActivity(), AccettazionePickingActivity.class);
myIntent.putExtra("keyOrders", cacheOrdersItemID);
myIntent.putExtra("keySitArts", cacheSitArtItemID);
getActivity().startActivity(myIntent);
}).show(getActivity().getSupportFragmentManager(), "tag");
}
}

View File

@@ -0,0 +1,20 @@
package it.integry.integrywmsnative.gest.accettazione;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer;
@Module(subcomponents = {MainAccettazioneComponent.class})
public class MainAccettazioneModule {
@Provides
OrdiniAccettazioneRESTConsumer providesOrdiniAccettazioneRESTConsumer() {
return new OrdiniAccettazioneRESTConsumer();
}
@Provides
MainAccettazioneViewModel providesMainAccettazioneViewModel(OrdiniAccettazioneRESTConsumer ordiniAccettazioneRESTConsumer) {
return new MainAccettazioneViewModel(ordiniAccettazioneRESTConsumer);
}
}

View File

@@ -0,0 +1,94 @@
package it.integry.integrywmsnative.gest.accettazione;
import androidx.lifecycle.MutableLiveData;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer;
public class MainAccettazioneViewModel {
private final OrdiniAccettazioneRESTConsumer mOrdiniAccettazioneRESTConsumer;
private final MutableLiveData<List<OrdineAccettazioneInevasoDTO>> mOrderList = new MutableLiveData<>();
private Listener mListener;
private String codMdep;
@Inject
public MainAccettazioneViewModel(OrdiniAccettazioneRESTConsumer ordiniAccettazioneRESTConsumer) {
this.mOrdiniAccettazioneRESTConsumer = ordiniAccettazioneRESTConsumer;
}
public void init(String currentCodMdep) {
this.codMdep = currentCodMdep;
this.sendOnLoadingStarted();
new Thread(() -> {
mOrdiniAccettazioneRESTConsumer.getOrdiniInevasi(codMdep, orderList -> {
this.mOrderList.setValue(orderList);
this.sendOnLoadingEnded();
}, this::sendError);
}).start();
}
public void loadPicking(List<OrdineAccettazioneInevasoDTO> selectedOrders) {
this.sendOnLoadingStarted();
new Thread(() -> {
this.mOrdiniAccettazioneRESTConsumer.retrievePickingListNew(selectedOrders, sitArtOrds -> {
this.sendOnOrdersDispatched(selectedOrders, sitArtOrds);
this.sendOnLoadingEnded();
}, this::sendError);
}).start();
}
public MutableLiveData<List<OrdineAccettazioneInevasoDTO>> getOrderList() {
return mOrderList;
}
public MainAccettazioneViewModel setListener(Listener listener) {
this.mListener = listener;
return this;
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
private void sendOnOrdersDispatched(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts) {
if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts);
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
void onOrdersDispatched(List<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts);
}
}

View File

@@ -1,87 +0,0 @@
package it.integry.integrywmsnative.gest.accettazione.core;
import android.content.Context;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.EsitoType;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumerService;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* Created by GiuseppeS on 06/03/2018.
*/
public class AccettazioneHelper {
private Context mContext;
public AccettazioneHelper(Context context){
mContext = context;
}
public void loadOrdini(RunnableArgs<List<OrdineAccettazioneInevasoDTO>> onComplete, RunnableArgs<Exception> onFailed){
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class);
service.listOrdiniInevasi(codMdep, "A").enqueue(new Callback<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> response) {
if(response.isSuccessful()) {
if(response.body() != null) {
if(response.body().getEsito() == EsitoType.OK) {
onComplete.run(response.body().getDto());
} else {
onFailed.run(new Exception(response.body().getErrorMessage()));
}
} else {
onFailed.run(new Exception(response.message()));
}
} else {
onFailed.run(new Exception("Status " + response.code() + ": " + response.message()));
}
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public List<OrdineAccettazioneInevasoDTO> getSelectedOrders(List<OrdineAccettazioneInevasoDTO> ordiniList){
return Stream.of(ordiniList)
.filter(OrdineAccettazioneInevasoDTO::isSelected)
.toList();
}
public List<OrdineAccettazioneInevasoDTO> getFilteredOrdersByFornitore(List<OrdineAccettazioneInevasoDTO> groupedOrdiniInevasi, String textFilter){
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
for(int i = 0; i < groupedOrdiniInevasi.size(); i++){
if(groupedOrdiniInevasi.get(i).getRagSocOrd().toLowerCase().contains(textFilter.toLowerCase())){
filteredOrders.add(groupedOrdiniInevasi.get(i));
}
}
return filteredOrders;
}
}

View File

@@ -1,192 +0,0 @@
package it.integry.integrywmsnative.gest.accettazione.core;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.Observable;
import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupClientiBinding;
import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupModelBinding;
import it.integry.integrywmsnative.databinding.AccettazioneMainListModelBinding;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
public class MainListAccettazioneAdapter extends SectionedRecyclerViewAdapter<MainListAccettazioneAdapter.SubheaderHolder, MainListAccettazioneAdapter.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<OrdineAccettazioneInevasoDTO> mOriginalDataset;
private List<OrdineAccettazioneInevasoDTO> mDataset;
private RunnableArgs<OrdineAccettazioneInevasoDTO> mOnSingleSelectionChanged;
static class SubheaderHolder extends RecyclerView.ViewHolder {
AccettazioneMainListModelBinding binding;
SubheaderHolder(AccettazioneMainListModelBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
AccettazioneMainListGroupModelBinding binding;
SingleItemViewHolder(AccettazioneMainListGroupModelBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public MainListAccettazioneAdapter(Context context, List<OrdineAccettazioneInevasoDTO> myDataset, RunnableArgs<OrdineAccettazioneInevasoDTO> onSingleSelectionChanged) {
mContext = context;
mOriginalDataset = myDataset;
mDataset = orderItems(myDataset);
mOnSingleSelectionChanged = onSingleSelectionChanged;
}
public void updateItems(List<OrdineAccettazioneInevasoDTO> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<OrdineAccettazioneInevasoDTO> orderItems(List<OrdineAccettazioneInevasoDTO> dataset) {
return Stream.of(dataset)
.distinctBy(OrdineAccettazioneInevasoDTO::getBarcode)
.sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : ""))
.toList();
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
AccettazioneMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_model, parent, false);
return new SubheaderHolder(binding);
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
AccettazioneMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_model, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
subheaderHolder.binding.accettazioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd());
subheaderHolder.binding.getRoot().setOnClickListener(v -> {
boolean anySelected = Stream.of(mDataset)
.filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
.anyMatch(OrdineAccettazioneInevasoDTO::isSelected);
Stream.of(mDataset)
.filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
.forEach(x -> x.setSelected(!anySelected));
});
}
@Override
public void onBindItemViewHolder(SingleItemViewHolder h, int itemPosition) {
final OrdineAccettazioneInevasoDTO ordine = mDataset.get(itemPosition);
final SingleItemViewHolder holder = h;
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setTag(ordine.getNumero());
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
ordine.selected.resetOnPropertyChangedCallback();
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getNumero()), UtilityDate.formatDate(ordine.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.accettazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString));
holder.binding.accettazioneMainListGroupItemContainerClientiOrd.removeAllViews();
List<OrdineAccettazioneInevasoDTO> clienti = Stream.of(mOriginalDataset)
.filter(x -> x.getBarcode().equals(ordine.getBarcode()))
.toList();
for (OrdineAccettazioneInevasoDTO cliente : clienti) {
AccettazioneMainListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_clienti, holder.binding.accettazioneMainListGroupItemContainerClientiOrd, false);
binding.accettazioneMainListGroupClientiComm.setText(cliente.getRifOrd());
if (!UtilityString.isNullOrEmpty(cliente.getDataConsS())) {
binding.accettazioneMainListGroupClientiDatacons.setText(UtilityDate.formatDate(cliente.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH));
} else {
binding.accettazioneMainListGroupClientiDatacons.setText("");
}
holder.binding.accettazioneMainListGroupItemContainerClientiOrd.addView(binding.getRoot());
}
holder.binding.setCheckboxValue(ordine.selected);
holder.binding.getRoot().setOnClickListener(v -> {
ordine.setSelected(!ordine.isSelected());
});
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected());
//Bindable to View
ordine.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
if(holder.binding.accettazioneMainListGroupItemContainerCheckBox.getTag().equals(ordine.getNumero())) {
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get());
}
}
});
//View to Bindable
holder.binding.accettazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
ordine.setSelected(isChecked);
mOnSingleSelectionChanged.run(ordine);
});
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd());
}
@Override
public int getItemSize() {
return mDataset.size();
}
@Override
public String getSectionTitle(int position) {
return null;
}
}

View File

@@ -1,481 +0,0 @@
package it.integry.integrywmsnative.gest.accettazione.dto;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.utility.UtilityDate;
/**
* Created by GiuseppeS on 06/03/2018.
*/
public class OrdineAccettazioneDTO implements Parcelable {
private String ragSoc;
private int numero;
private String data;
private String gestione;
private String codMdep;
private String codAnag;
private String codVdes;
private String termCons;
private ArrayList<Riga> ordini;
private String codAlis;
private String rifOrd;
public static class Riga implements Parcelable {
private Float qtaOrd; //QTA ORDINATA (tutta la qta ordiata)
public Float qtaRiservate; //QTA COLLI (tutta la qta già accantonata nei colli
private Float qtaEvasa; //QTA EVASA ORDINE (qta con documento)
//public Float qtaDaEvadere; //qta_ord - qta_evasa - qta_colli
public int rigaOrd;
public String codJcom;
public String ragSocCom;
public String descrizioneCommessa;
public MtbAart mtbAart;
private PickingObjectDTO[] colliAssociati;
private Boolean hidden = null;
private Boolean tempHidden = null;
private String partitaMag;
private String codArtFor;
public String descrizioneEstesa;
public String codAlis;
public int numOrd;
public String dataOrd;
public String gestioneOrd;
public String dataCons;
public BigDecimal getQtaDaEvadere() {
return this.getQtaOrd().subtract(this.getQtaEvasa()).subtract(this.getQtaRiservate());
}
public BigDecimal getQtaOrd() {
return qtaOrd != null ? new BigDecimal(qtaOrd) : BigDecimal.ZERO;
}
public BigDecimal getQtaRiservate() {
return qtaRiservate != null ? new BigDecimal(qtaRiservate) : BigDecimal.ZERO;
}
public BigDecimal getQtaEvasa() {
return qtaEvasa != null ? new BigDecimal(qtaEvasa) : BigDecimal.ZERO;
}
public int getRigaOrd() {
return rigaOrd;
}
public String getCodJcom() {
return codJcom;
}
public String getRagSocCom() {
return ragSocCom;
}
public String getDescrizioneCommessa() {
return descrizioneCommessa;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public PickingObjectDTO[] getColliAssociati() {
return colliAssociati;
}
public Boolean isHidden() {
return hidden;
}
public Boolean isTempHidden() {
return tempHidden;
}
public String getPartitaMag() {
return partitaMag;
}
public String getCodArtFor() {
return codArtFor;
}
public String getDescrizioneEstesa() {
return descrizioneEstesa;
}
public String getCodAlis() {
return codAlis;
}
public int getNumOrd() {
return numOrd;
}
public String getGestioneOrd() {
return gestioneOrd;
}
public GestioneEnum getGestioneOrdEnum() {
return GestioneEnum.fromString(gestioneOrd);
}
public String getDataCons() {
return dataCons;
}
public String getDataOrdS() {
return this.dataOrd;
}
public Date getDataOrdD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
}
public Riga setQtaOrd(Float qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
public Riga setQtaRiservate(BigDecimal qtaRiservate) {
this.qtaRiservate = qtaRiservate.floatValue();
return this;
}
public Riga setQtaEvasa(Float qtaEvasa) {
this.qtaEvasa = qtaEvasa;
return this;
}
public Riga setRigaOrd(int rigaOrd) {
this.rigaOrd = rigaOrd;
return this;
}
public Riga setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public Riga setRagSocCom(String ragSocCom) {
this.ragSocCom = ragSocCom;
return this;
}
public Riga setDescrizioneCommessa(String descrizioneCommessa) {
this.descrizioneCommessa = descrizioneCommessa;
return this;
}
public Riga setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public Riga setHidden(boolean hidden) {
this.hidden = hidden;
return this;
}
public Riga setTempHidden(boolean hidden) {
this.tempHidden = hidden;
return this;
}
public Riga setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public Riga setCodArtFor(String codArtFor) {
this.codArtFor = codArtFor;
return this;
}
public Riga setDescrizioneEstesa(String descrizioneEstesa) {
this.descrizioneEstesa = descrizioneEstesa;
return this;
}
public Riga setCodAlis(String codAlis) {
this.codAlis = codAlis;
return this;
}
public Riga setNumOrd(int numOrd) {
this.numOrd = numOrd;
return this;
}
public Riga setDataOrd(String dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public Riga setGestioneOrd(String gestioneOrd) {
this.gestioneOrd = gestioneOrd;
return this;
}
public Riga setDataCons(String dataCons) {
this.dataCons = dataCons;
return this;
}
public Riga(){}
protected Riga(Parcel in) {
qtaOrd = in.readByte() == 0x00 ? null : in.readFloat();
qtaRiservate = in.readByte() == 0x00 ? null : in.readFloat();
rigaOrd = in.readInt();
codJcom = in.readString();
ragSocCom = in.readString();
descrizioneCommessa = in.readString();
mtbAart = (MtbAart) in.readValue(MtbAart.class.getClassLoader());
hidden = in.readByte() == 0x00 ? null : in.readByte() != 0x00;
partitaMag = in.readString();
codArtFor = in.readString();
descrizioneEstesa = in.readString();
codAlis = in.readString();
numOrd = in.readInt();
dataOrd = in.readString();
gestioneOrd = in.readString();
dataCons = in.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if (qtaOrd == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeFloat(qtaOrd);
}
if (qtaRiservate == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeFloat(qtaRiservate);
}
dest.writeInt(rigaOrd);
dest.writeString(codJcom);
dest.writeString(ragSocCom);
dest.writeString(descrizioneCommessa);
dest.writeValue(mtbAart);
if (hidden == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeByte((byte) (hidden ? 0x01 : 0x00));
}
dest.writeString(partitaMag);
dest.writeString(codArtFor);
dest.writeString(descrizioneEstesa);
dest.writeString(codAlis);
dest.writeInt(numOrd);
dest.writeString(dataOrd);
dest.writeString(gestioneOrd);
dest.writeString(dataCons);
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<Riga> CREATOR = new Parcelable.Creator<Riga>() {
@Override
public Riga createFromParcel(Parcel in) {
return new Riga(in);
}
@Override
public Riga[] newArray(int size) {
return new Riga[size];
}
};
}
public static class PickingObjectDTO extends MtbColt{
public boolean hidden = false;
}
public OrdineAccettazioneDTO() {}
protected OrdineAccettazioneDTO(Parcel in) {
ragSoc = in.readString();
numero = in.readInt();
data = in.readString();
gestione = in.readString();
codMdep = in.readString();
codAnag = in.readString();
codVdes = in.readString();
termCons = in.readString();
codAlis = in.readString();
rifOrd = in.readString();
if (in.readByte() == 0x01) {
ordini = new ArrayList<Riga>();
in.readList(ordini, Riga.class.getClassLoader());
} else {
ordini = null;
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(ragSoc);
dest.writeInt(numero);
dest.writeString(data);
dest.writeString(gestione);
dest.writeString(codMdep);
dest.writeString(codAnag);
dest.writeString(codVdes);
dest.writeString(termCons);
dest.writeString(codAlis);
dest.writeString(rifOrd);
if (ordini == null) {
dest.writeByte((byte) (0x00));
} else {
dest.writeByte((byte) (0x01));
dest.writeList(ordini);
}
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<OrdineAccettazioneDTO> CREATOR = new Parcelable.Creator<OrdineAccettazioneDTO>() {
@Override
public OrdineAccettazioneDTO createFromParcel(Parcel in) {
return new OrdineAccettazioneDTO(in);
}
@Override
public OrdineAccettazioneDTO[] newArray(int size) {
return new OrdineAccettazioneDTO[size];
}
};
public String getRagSoc() {
return ragSoc;
}
public OrdineAccettazioneDTO setRagSoc(String ragSoc) {
this.ragSoc = ragSoc;
return this;
}
public int getNumero() {
return numero;
}
public OrdineAccettazioneDTO setNumero(int numero) {
this.numero = numero;
return this;
}
public String getData() {
return data;
}
public OrdineAccettazioneDTO setData(String data) {
this.data = data;
return this;
}
public String getGestione() {
return gestione;
}
public OrdineAccettazioneDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public String getCodMdep() {
return codMdep;
}
public OrdineAccettazioneDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getCodAnag() {
return codAnag;
}
public OrdineAccettazioneDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodVdes() {
return codVdes;
}
public OrdineAccettazioneDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public String getTermCons() {
return termCons;
}
public OrdineAccettazioneDTO setTermCons(String termCons) {
this.termCons = termCons;
return this;
}
public ArrayList<Riga> getOrdini() {
return ordini;
}
public OrdineAccettazioneDTO setOrdini(ArrayList<Riga> ordini) {
this.ordini = ordini;
return this;
}
public String getCodAlis() {
return codAlis;
}
public OrdineAccettazioneDTO setCodAlis(String codAlis) {
this.codAlis = codAlis;
return this;
}
public String getRifOrd() {
return rifOrd;
}
public OrdineAccettazioneDTO setRifOrd(String rifOrd) {
this.rifOrd = rifOrd;
return this;
}
}

View File

@@ -22,11 +22,23 @@ import retrofit2.Response;
public class OrdiniAccettazioneRESTConsumer extends _BaseRESTConsumer {
public void retrievePickingListNew(List<OrdineAccettazioneInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
retrievePickingListNewStatic(orders, onComplete, onFailed);
public void getOrdiniInevasi(String codMdep, RunnableArgs<List<OrdineAccettazioneInevasoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class);
service.listOrdiniInevasi(codMdep, "A").enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> response) {
analyzeAnswer(response, "getOrdiniInevasi", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public static void retrievePickingListNewStatic(List<OrdineAccettazioneInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
public void retrievePickingListNew(List<OrdineAccettazioneInevasoDTO> orders, RunnableArgs<List<SitArtOrdDTO>> onComplete, RunnableArgs<Exception> onFailed) {
List<GetPickingListAccettazioneDTO> getPickingListDTOs = Stream.of(orders)
.map(x -> new GetPickingListAccettazioneDTO()
.setData(x.getData())
@@ -47,7 +59,6 @@ public class OrdiniAccettazioneRESTConsumer extends _BaseRESTConsumer {
onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -0,0 +1,149 @@
package it.integry.integrywmsnative.gest.accettazione.ui;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.RecyclerView;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupClientiBinding;
import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupModelBinding;
import it.integry.integrywmsnative.databinding.AccettazioneMainListModelBinding;
public class MainListAccettazioneAdapter extends ExtendedSectionedRecyclerView<MainListAccettazioneListModel, MainListAccettazioneAdapter.SubheaderHolder, MainListAccettazioneAdapter.SingleItemViewHolder> {
private Context mContext;
private RunnableArgs<String> mOnGroupItemClicked;
private RunnableArgs<MainListAccettazioneListModel> mOnItemChecked;
static class SubheaderHolder extends RecyclerView.ViewHolder {
AccettazioneMainListModelBinding binding;
SubheaderHolder(AccettazioneMainListModelBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
AccettazioneMainListGroupModelBinding binding;
SingleItemViewHolder(AccettazioneMainListGroupModelBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public MainListAccettazioneAdapter(Context context, ObservableArrayList<MainListAccettazioneListModel> myDataset) {
super(myDataset);
mContext = context;
}
public MainListAccettazioneAdapter setOnGroupItemClicked(RunnableArgs<String> onGroupItemClicked) {
this.mOnGroupItemClicked = onGroupItemClicked;
return this;
}
public MainListAccettazioneAdapter setOnItemChecked(RunnableArgs<MainListAccettazioneListModel> onItemChecked) {
this.mOnItemChecked = onItemChecked;
return this;
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
AccettazioneMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_model, parent, false);
return new SubheaderHolder(binding);
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
AccettazioneMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_model, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
subheaderHolder.binding.accettazioneMainListGroupHeader.setText(mDataset.get(nextItemPosition).getGroupTitle());
subheaderHolder.binding.getRoot().setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
if(mOnGroupItemClicked != null) mOnGroupItemClicked.run(mDataset.get(nextItemPosition).getGroupTitle());
}
});
}
@Override
public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) {
final MainListAccettazioneListModel ordine = mDataset.get(itemPosition);
ordine.getSelectedObservable().resetOnPropertyChangedCallback();
holder.binding.accettazioneMainListGroupItemContainerClientiOrd.removeAllViews();
holder.binding.accettazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(ordine.getDescription()));
for (MainListAccettazioneClienteListModel cliente : ordine.getClientiListModel()) {
AccettazioneMainListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_clienti, holder.binding.accettazioneMainListGroupItemContainerClientiOrd, false);
binding.accettazioneMainListGroupClientiComm.setText(cliente.getPrimaryText());
if (!UtilityString.isNullOrEmpty(cliente.getRightText())) {
binding.accettazioneMainListGroupClientiDatacons.setText(cliente.getRightText());
} else {
binding.accettazioneMainListGroupClientiDatacons.setText("");
}
holder.binding.accettazioneMainListGroupItemContainerClientiOrd.addView(binding.getRoot());
}
holder.binding.setSelected(ordine.getSelectedObservable());
holder.binding.executePendingBindings();
holder.binding.accettazioneMainListGroupItemContainerCheckBox.jumpDrawablesToCurrentState();
ordine.getSelectedObservable().addOnPropertyChangedCallback(() -> {
if(this.mOnItemChecked != null) this.mOnItemChecked.run(ordine);
});
holder.binding.getRoot().setOnClickListener(v -> {
ordine.getSelectedObservable().set(!ordine.getSelectedObservable().get());
});
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
if (getItemSize() == 1) return true;
else if (getItemSize() > 1) {
MainListAccettazioneListModel compare1 = this.mDataset.get(position);
MainListAccettazioneListModel compare2 = this.mDataset.get(position + 1);
if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
return false;
}
}
return true;
}
@Override
public int getItemSize() {
return mDataset.size();
}
}

View File

@@ -0,0 +1,26 @@
package it.integry.integrywmsnative.gest.accettazione.ui;
public class MainListAccettazioneClienteListModel {
private String primaryText;
private String rightText;
public String getPrimaryText() {
return primaryText;
}
public MainListAccettazioneClienteListModel setPrimaryText(String primaryText) {
this.primaryText = primaryText;
return this;
}
public String getRightText() {
return rightText;
}
public MainListAccettazioneClienteListModel setRightText(String rightText) {
this.rightText = rightText;
return this;
}
}

View File

@@ -0,0 +1,70 @@
package it.integry.integrywmsnative.gest.accettazione.ui;
import java.util.List;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
public class MainListAccettazioneListModel {
private String groupTitle;
private String description;
private boolean hidden;
private BindableBoolean selected = new BindableBoolean();
private OrdineAccettazioneInevasoDTO originalModel;
private List<MainListAccettazioneClienteListModel> clientiListModel;
public String getGroupTitle() {
return groupTitle;
}
public MainListAccettazioneListModel setGroupTitle(String groupTitle) {
this.groupTitle = groupTitle;
return this;
}
public String getDescription() {
return description;
}
public MainListAccettazioneListModel setDescription(String description) {
this.description = description;
return this;
}
public boolean isHidden() {
return hidden;
}
public MainListAccettazioneListModel setHidden(boolean hidden) {
this.hidden = hidden;
return this;
}
public BindableBoolean getSelectedObservable() {
return selected;
}
public OrdineAccettazioneInevasoDTO getOriginalModel() {
return originalModel;
}
public MainListAccettazioneListModel setOriginalModel(OrdineAccettazioneInevasoDTO originalModel) {
this.originalModel = originalModel;
return this;
}
public List<MainListAccettazioneClienteListModel> getClientiListModel() {
return clientiListModel;
}
public MainListAccettazioneListModel setClientiListModel(List<MainListAccettazioneClienteListModel> clientiListModel) {
this.clientiListModel = clientiListModel;
return this;
}
}

View File

@@ -50,8 +50,8 @@ import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneListAdapter;
import it.integry.integrywmsnative.gest.accettazione_picking.core.AccettazioneListModel;
import it.integry.integrywmsnative.gest.accettazione_picking.ui.AccettazioneListAdapter;
import it.integry.integrywmsnative.gest.accettazione_picking.ui.AccettazioneListModel;
import it.integry.integrywmsnative.gest.accettazione_picking.dto.AccettazioneOrdineInevasoOrderBy;
import it.integry.integrywmsnative.gest.accettazione_picking.dto.PickingObjectDTO;
import it.integry.integrywmsnative.gest.accettazione_picking.rest.RecoverMtbColt;
@@ -117,8 +117,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
mBindings.bottomSheetLuContent.setListener(this);
mBottomSheetFragmentLUContentViewModel.setListener(this);
setSupportActionBar(this.mBindings.toolbar);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
mShowSecondaryUntMis = sharedPreferences.getBoolean("picking_ingresso_enable_sec_unt_mis", true);

View File

@@ -144,7 +144,7 @@ public class AccettazionePickingViewModel {
.map(SitArtOrdDTO::getCodMart)
.toList();
this.mArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> {
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList)
.map(sitArtOrdDTO -> {
MtbAart mtbAart = null;

View File

@@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.accettazione_picking.core;
package it.integry.integrywmsnative.gest.accettazione_picking.ui;
import android.content.Context;
import android.graphics.Color;

View File

@@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.accettazione_picking.core;
package it.integry.integrywmsnative.gest.accettazione_picking.ui;
import org.jetbrains.annotations.NotNull;

View File

@@ -1,25 +1,53 @@
package it.integry.integrywmsnative.gest.contenuto_bancale;
import androidx.databinding.DataBindingUtil;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.SpannableString;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.LinearLayoutManager;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.databinding.ActivityContenutoBancaleBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel.ContenutoBancaleViewModel;
import it.integry.integrywmsnative.gest.contenuto_bancale.ui.ContenutoBancaleListAdapter;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class ContenutoBancaleActivity extends BaseActivity {
public class ContenutoBancaleActivity extends BaseActivity implements ContenutoBancaleViewModel.Listener {
public ActivityContenutoBancaleBinding bindings;
private ContenutoBancaleViewModel mViewModel;
@Inject
ContenutoBancaleViewModel mViewModel;
@Inject
DepositoRESTConsumer mDepositoRESTConsumer;
@Inject
PrinterRESTConsumer mPrinterRESTConsumer;
public final ObservableField<MtbColt> mtbColt = new ObservableField<>();
public final ObservableField<String> descrizioneDepo = new ObservableField<>();
public ObservableField<Boolean> fabVisible = new ObservableField<>(true);
public ObservableField<Boolean> recoverFabMenuVisible = new ObservableField<>(false);
private String mReportName;
private PrinterRESTConsumer.Type mPrinterType;
private static class Key {
private static final String MtbColtKey = "mtbColtKey";
@@ -50,24 +78,106 @@ public class ContenutoBancaleActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
mtbColt.set(DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey)));
mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType));
bindings = DataBindingUtil.setContentView(this, R.layout.activity_contenuto_bancale);
boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
MtbColt mtbColt = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey));
String reportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
MainApplication.appComponent
.contenutoBancaleComponent()
.create()
.inject(this);
PrinterRESTConsumer.Type mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType));
mViewModel = new ContenutoBancaleViewModel(this, mtbColt, canRecoverUL, mPrinterType, reportName);
bindings.setView(this);
bindings.setViewModel(this.mViewModel);
bindings.elevatedToolbar.setNestedScrollView(bindings.scrollView);
setSupportActionBar(this.bindings.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mViewModel.setListener(this);
mViewModel.init(mtbColt.get(), mPrinterType, mReportName);
recoverFabMenuVisible.set(canRecoverUL);
initRecyclerView();
initColloInfo();
}
private void initRecyclerView() {
this.bindings.contenutoBancaleMainList.setNestedScrollingEnabled(false);
this.bindings.contenutoBancaleMainList.setHasFixedSize(true);
this.bindings.contenutoBancaleMainList.setLayoutManager(new LinearLayoutManager(this));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
this.bindings.contenutoBancaleMainList.addItemDecoration(itemDecorator);
ContenutoBancaleListAdapter adapter = new ContenutoBancaleListAdapter(mtbColt.get().getMtbColr());
this.bindings.contenutoBancaleMainList.setAdapter(adapter);
}
private void initColloInfo() {
mDepositoRESTConsumer.getDepoByCodMdep(mtbColt.get().getCodMdep(), depo -> {
descrizioneDepo.set("(" + depo.getDescrizione() + ")");
}, this::onError);
}
public void recoverUL() {
Intent data = new Intent();
String key = DataCache.addItem(mtbColt.get());
data.putExtra("key", key);
this.setResult(RESULT_OK, data);
this.finish();
}
public void printUL() {
this.bindings.contenutoBancaleFab.close(true);
this.onLoadingStarted();
this.mPrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> {
if (value.size() > 0) {
try {
String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum());
reportName = mReportName != null ? mReportName : reportName;
this.mPrinterRESTConsumer.printCollo(value.get(0),
mtbColt.get(),
1,
reportName,
() -> {
this.onLoadingEnded();
Resources res = this.getResources();
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageView
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
.show(getSupportFragmentManager(), "tag");
}, this::onError);
} catch (Exception ex) {
this.onError(ex);
}
} else {
this.onLoadingEnded();
String errorMessage = "Nessuna stampante configurata";
this.onError(new Exception(errorMessage));
}
}, this::onError);
}
@Override
public boolean onSupportNavigateUp() {

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.contenuto_bancale;
import dagger.Subcomponent;
@Subcomponent
public interface ContenutoBancaleComponent {
@Subcomponent.Factory
interface Factory {
ContenutoBancaleComponent create();
}
void inject(ContenutoBancaleActivity contenutoBancaleActivity);
}

View File

@@ -0,0 +1,7 @@
package it.integry.integrywmsnative.gest.contenuto_bancale;
import dagger.Module;
@Module(subcomponents = ContenutoBancaleComponent.class)
public class ContenutoBancaleModule {
}

View File

@@ -0,0 +1,39 @@
package it.integry.integrywmsnative.gest.contenuto_bancale;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
public class ContenutoBancaleViewModel {
private final DepositoRESTConsumer mDepositoRESTConsumer;
private Listener mListener;
@Inject
public ContenutoBancaleViewModel(DepositoRESTConsumer depositoRESTConsumer) {
this.mDepositoRESTConsumer = depositoRESTConsumer;
}
public void init(MtbColt mtbColt, PrinterRESTConsumer.Type printerType, String defaultReportName) {
}
public ContenutoBancaleViewModel setListener(Listener listener) {
this.mListener = listener;
return this;
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
}
}

View File

@@ -1,15 +1,15 @@
package it.integry.integrywmsnative.gest.contenuto_bancale.core;
package it.integry.integrywmsnative.gest.contenuto_bancale.ui;
import android.content.Context;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.RecyclerView;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
@@ -17,13 +17,13 @@ import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.ListaContenutoBancaleListModelBinding;
public class ContenutoBancaleListAdapter extends RecyclerView.Adapter<ContenutoBancaleListAdapter.ViewHolder> {
public class ContenutoBancaleListAdapter extends ExtendedRecyclerView<MtbColr, ContenutoBancaleListAdapter.ViewHolder> {
private RunnableArgs<MtbColr> mOnItemClickListener;
protected static Context mContext;
protected ObservableArrayList<MtbColr> mDataset;
private IRecyclerItemClicked<MtbColr> mOnItemClickListener;
public ContenutoBancaleListAdapter(ObservableArrayList<MtbColr> myDataset) {
super(myDataset);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
protected ListaContenutoBancaleListModelBinding mViewDataBinding;
@@ -37,12 +37,11 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter<ContenutoB
public void bind(MtbColr mtbColr) {
mViewDataBinding.setMtbColr(mtbColr);
//Setting qty with unt_mis
if(!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())){
if (!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) {
String text = UtilityNumber.decimalToString(mtbColr.getQtaCol());
if(mtbColr.getMtbAart() != null) {
if (mtbColr.getMtbAart() != null) {
text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? "\n" + mtbColr.getMtbAart().getUntMis() : "";
}
@@ -56,14 +55,6 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter<ContenutoB
}
public ContenutoBancaleListAdapter(Context context, ObservableArrayList<MtbColr> myDataset, IRecyclerItemClicked<MtbColr> onItemClickListener) {
mContext = context;
mDataset = myDataset;
mOnItemClickListener = onItemClickListener;
myDataset.addOnListChangedCallback(onListChangedCallback);
}
@Override
public ContenutoBancaleListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
@@ -78,10 +69,10 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter<ContenutoB
holder.bind(mtbColr);
//Setting qty with unt_mis
if(!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())){
if (!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())) {
String text = UtilityNumber.decimalToString(mtbColr.getQtaCol());
if(mtbColr.getMtbAart() != null) {
if (mtbColr.getMtbAart() != null) {
text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? "\n" + mtbColr.getMtbAart().getUntMis() : "";
}
@@ -91,50 +82,15 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter<ContenutoB
}
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(mtbColr, position);
if (mOnItemClickListener != null) {
mOnItemClickListener.run(mtbColr);
}
});
}
@Override
public void onViewRecycled(ContenutoBancaleListAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
public ContenutoBancaleListAdapter setOnItemClickListener(RunnableArgs<MtbColr> onItemClickListener) {
this.mOnItemClickListener = onItemClickListener;
return this;
}
@Override
public int getItemCount() {
return mDataset.size();
}
private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback<ObservableList<MtbColr>>(){
@Override
public void onChanged(ObservableList<MtbColr> sender) {
notifyDataSetChanged();
}
@Override
public void onItemRangeChanged(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
}
@Override
public void onItemRangeInserted(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
}
@Override
public void onItemRangeMoved(ObservableList<MtbColr> sender, int fromPosition, int toPosition, int itemCount) {
notifyDataSetChanged();
}
@Override
public void onItemRangeRemoved(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
}
};
}

View File

@@ -1,143 +0,0 @@
package it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel;
import android.app.Dialog;
import android.content.Intent;
import android.content.res.Resources;
import android.text.SpannableString;
import androidx.core.content.ContextCompat;
import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.LinearLayoutManager;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
import it.integry.integrywmsnative.gest.contenuto_bancale.core.ContenutoBancaleListAdapter;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import static android.app.Activity.RESULT_OK;
public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr> {
private ContenutoBancaleActivity mContext;
public ObservableField<MtbColt> mtbColt;
public BindableString descrizioneDepo = new BindableString();
public ObservableField<Boolean> isFabVisible = new ObservableField<>();
public ObservableField<Boolean> isRecoverFabMenuVisible = new ObservableField<>();
private ContenutoBancaleListAdapter mAdapter;
private PrinterRESTConsumer.Type mPrinterType;
private String mReportName;
public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName) {
mContext = context;
this.mtbColt = new ObservableField<>(mtbColt);
this.isFabVisible.set(true);
this.isRecoverFabMenuVisible.set(canRecoverUL);
this.mPrinterType = printerType;
this.mReportName = defaultReportName;
mContext.bindings.setViewModel(this);
initRecyclerView();
initColloInfo();
}
private void initRecyclerView() {
mContext.bindings.contenutoBancaleMainList.setNestedScrollingEnabled(false);
mContext.bindings.contenutoBancaleMainList.setHasFixedSize(true);
mContext.bindings.contenutoBancaleMainList.setLayoutManager(new LinearLayoutManager(mContext));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mContext.bindings.contenutoBancaleMainList.addItemDecoration(itemDecorator);
mAdapter = new ContenutoBancaleListAdapter(mContext, mtbColt.get().getMtbColr(), this);
mContext.bindings.contenutoBancaleMainList.setAdapter(mAdapter);
}
private void initColloInfo() {
DepositoRESTConsumer.getDepoByCodMdep(mtbColt.get().getCodMdep(), depo -> {
descrizioneDepo.set("(" + depo.getDescrizione() + ")");
});
}
@Override
public void onItemClick(MtbColr item, int position) {
}
public void recoverUL() {
Intent data = new Intent();
String key = DataCache.addItem(mtbColt.get());
data.putExtra("key", key);
mContext.setResult(RESULT_OK, data);
mContext.finish();
}
public void printUL() {
mContext.bindings.contenutoBancaleFab.close(true);
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), mPrinterType, value -> {
if (value.size() > 0) {
try {
String reportName = ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum());
reportName = mReportName != null ? mReportName : reportName;
PrinterRESTConsumer.printColloStatic(value.get(0),
mtbColt.get(),
1,
reportName,
() -> {
progress.dismiss();
Resources res = mContext.getResources();
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageView
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
.show(mContext.getSupportFragmentManager(), "tag");
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
} catch (Exception ex) {
UtilityExceptions.defaultException(mContext, ex, progress);
}
} else {
progress.dismiss();
String errorMessage = "Nessuna stampante configurata";
DialogSimpleMessageView
.makeWarningDialog(new SpannableString(errorMessage), null, null)
.show(mContext.getSupportFragmentManager(), "tag");;
}
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progress);
});
}
}

View File

@@ -4,10 +4,16 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
@@ -16,9 +22,10 @@ import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel;
import it.integry.integrywmsnative.gest.lista_bancali.ui.ListaColliMainListAdapter;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class ListaBancaliActivity extends BaseActivity {
public class ListaBancaliActivity extends BaseActivity implements ListaBancaliViewModel.Listener{
private static class Key {
private static final String MtbColtsKey = "mtbColtsKey";
@@ -28,9 +35,12 @@ public class ListaBancaliActivity extends BaseActivity {
private static final String FlagOnlyResiduo = "flagOnlyResiduo";
}
public ActivityListaBancaliBinding bindings;
public ActivityListaBancaliBinding mBindings;
private ListaBancaliViewModel mViewModel;
@Inject
ListaBancaliViewModel mViewModel;
private final ObservableArrayList<MtbColt> mtbColts = new ObservableArrayList<>();
private RunnableArgsWithReturn<MtbColt, Boolean> mCanRecoverUl;
private PrinterRESTConsumer.Type mPrinterType;
@@ -78,7 +88,12 @@ public class ListaBancaliActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bindings = DataBindingUtil.setContentView(this, R.layout.activity_lista_bancali);
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_lista_bancali);
MainApplication.appComponent
.listaBancaliComponent()
.create()
.inject(this);
mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
@@ -86,16 +101,36 @@ public class ListaBancaliActivity extends BaseActivity {
mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
mFlagOnlyResiduo = DataCache.retrieveItem(getIntent().getStringExtra(Key.FlagOnlyResiduo));
List<MtbColt> mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey));
mViewModel = new ListaBancaliViewModel(this, mtbColts, mFlagOnlyResiduo);
mtbColts.addAll(DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey)));
this.initRecyclerView();
setSupportActionBar(this.bindings.toolbar);
setSupportActionBar(this.mBindings.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
public void initRecyclerView() {
mBindings.listaColliMainList.setHasFixedSize(true);
mBindings.listaColliMainList.setLayoutManager(new LinearLayoutManager(this));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
mBindings.listaColliMainList.addItemDecoration(itemDecorator);
ListaColliMainListAdapter adapter = new ListaColliMainListAdapter(mtbColts)
.setOnItemClickListener(mtbColtSelected -> {
this.mViewModel.dispatchMtbColt(mtbColtSelected, mFlagOnlyResiduo, this::startContenutoBancaleActivity);
});
adapter.setEmptyView(mBindings.listaBancaliEmptyView);
mBindings.listaColliMainList.setAdapter(adapter);
mBindings.elevatedToolbar.setRecyclerView(mBindings.listaColliMainList);
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.lista_bancali;
import dagger.Subcomponent;
@Subcomponent
public interface ListaBancaliComponent {
@Subcomponent.Factory
interface Factory {
ListaBancaliComponent create();
}
void inject(ListaBancaliActivity listaBancaliActivity);
}

View File

@@ -0,0 +1,16 @@
package it.integry.integrywmsnative.gest.lista_bancali;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
@Module(subcomponents = ListaBancaliComponent.class)
public class ListaBancaliModule {
@Provides
ListaBancaliViewModel providesListaBancaliViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
return new ListaBancaliViewModel(colliMagazzinoRESTConsumer);
}
}

View File

@@ -0,0 +1,67 @@
package it.integry.integrywmsnative.gest.lista_bancali;
import androidx.databinding.ObservableArrayList;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
public class ListaBancaliViewModel {
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private Listener mListener;
@Inject
public ListaBancaliViewModel(ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
}
public void dispatchMtbColt(MtbColt mtbColtToDispatch, boolean onlyResiduo, RunnableArgs<MtbColt> onComplete) {
this.sendOnLoadingStarted();
new Thread(() -> {
mColliMagazzinoRESTConsumer.getByTestata(mtbColtToDispatch, onlyResiduo, false, mtbColt -> {
this.sendOnLoadingEnded();
ObservableArrayList<MtbColr> mtbColrObservableArrayList = new ObservableArrayList<>();
if(mtbColt != null && mtbColt.getMtbColr() != null) mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
mtbColtToDispatch.setMtbColr(mtbColrObservableArrayList);
onComplete.run(mtbColtToDispatch);
}, this::sendError);
}).start();
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public ListaBancaliViewModel setListener(Listener listener) {
this.mListener = listener;
return this;
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
}
}

View File

@@ -1,126 +0,0 @@
package it.integry.integrywmsnative.gest.lista_bancali.core;
import android.content.Context;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.view.View;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.databinding.ListaBancaliListModelBinding;
public class MainListListaColliAdapter extends RecyclerView.Adapter<MainListListaColliAdapter.ViewHolder> {
protected Context mContext;
protected ObservableArrayList<MtbColt> mDataset;
private View mEmptyView;
private IRecyclerItemClicked<MtbColt> mOnItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder {
protected ListaBancaliListModelBinding mViewDataBinding;
public ViewHolder(ListaBancaliListModelBinding v) {
super(v.getRoot());
mViewDataBinding = v;
}
public void bind(MtbColt mtbColt) {
mViewDataBinding.setMtbColt(mtbColt);
mViewDataBinding.executePendingBindings();
}
}
public MainListListaColliAdapter(Context context, ObservableArrayList<MtbColt> myDataset, IRecyclerItemClicked<MtbColt> onItemClickListener, View emptyView) {
mContext = context;
mDataset = myDataset;
mEmptyView = emptyView;
mOnItemClickListener = onItemClickListener;
myDataset.addOnListChangedCallback(onListChangedCallback);
checkIfEmpty();
}
@Override
public MainListListaColliAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
ListaBancaliListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_bancali_list_model, parent, false);
return new ViewHolder(viewDataBinding);
}
@Override
public void onBindViewHolder(MainListListaColliAdapter.ViewHolder holder, int position) {
MtbColt item = mDataset.get(position);
holder.bind(item);
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(item, position);
}
});
}
@Override
public void onViewRecycled(MainListListaColliAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
}
@Override
public int getItemCount() {
return mDataset.size();
}
void checkIfEmpty() {
if (mEmptyView != null) {
final boolean emptyViewVisible = getItemCount() == 0;
mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
}
}
private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback<ObservableList<MtbColt>>() {
@Override
public void onChanged(ObservableList<MtbColt> sender) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeChanged(ObservableList<MtbColt> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeInserted(ObservableList<MtbColt> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeMoved(ObservableList<MtbColt> sender, int fromPosition, int toPosition, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeRemoved(ObservableList<MtbColt> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
};
}

View File

@@ -0,0 +1,76 @@
package it.integry.integrywmsnative.gest.lista_bancali.ui;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.RecyclerView;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.databinding.ListaBancaliListModelBinding;
public class ListaColliMainListAdapter extends ExtendedRecyclerView<MtbColt, ListaColliMainListAdapter.ViewHolder> {
private RunnableArgs<MtbColt> mOnItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder {
protected ListaBancaliListModelBinding mViewDataBinding;
public ViewHolder(ListaBancaliListModelBinding v) {
super(v.getRoot());
mViewDataBinding = v;
}
public void bind(MtbColt mtbColt) {
mViewDataBinding.setMtbColt(mtbColt);
mViewDataBinding.executePendingBindings();
}
}
public ListaColliMainListAdapter(ObservableArrayList<MtbColt> myDataset) {
super(myDataset);
}
@Override
public ListaColliMainListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
ListaBancaliListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_bancali_list_model, parent, false);
return new ViewHolder(viewDataBinding);
}
@Override
public void onBindViewHolder(ListaColliMainListAdapter.ViewHolder holder, int position) {
MtbColt item = mDataset.get(position);
holder.bind(item);
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
if(mOnItemClickListener != null) {
mOnItemClickListener.run(item);
}
});
}
@Override
public void onViewRecycled(ListaColliMainListAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
}
public ListaColliMainListAdapter setOnItemClickListener(RunnableArgs<MtbColt> onItemClickListener) {
this.mOnItemClickListener = onItemClickListener;
return this;
}
}

View File

@@ -1,82 +0,0 @@
package it.integry.integrywmsnative.gest.lista_bancali.viewmodel;
import android.app.Dialog;
import androidx.core.content.ContextCompat;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
import it.integry.integrywmsnative.gest.lista_bancali.core.MainListListaColliAdapter;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
private ListaBancaliActivity mContext;
private ObservableArrayList<MtbColt> mMtbColts;
private MainListListaColliAdapter mAdapter;
private boolean mLoadOnlyResiduo;
public ListaBancaliViewModel(ListaBancaliActivity context, List<MtbColt> mtbColts, boolean loadOnlyResiduo){
mContext = context;
mMtbColts = new ObservableArrayList<>();
mMtbColts.addAll(mtbColts);
this.mLoadOnlyResiduo = loadOnlyResiduo;
initRecyclerView();
}
public void initRecyclerView() {
mContext.bindings.listaColliMainList.setHasFixedSize(true);
mContext.bindings.listaColliMainList.setLayoutManager(new LinearLayoutManager(mContext));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mContext.bindings.listaColliMainList.addItemDecoration(itemDecorator);
mAdapter = new MainListListaColliAdapter(mContext, mMtbColts, this, mContext.bindings.listaBancaliEmptyView);
mContext.bindings.listaColliMainList.setAdapter(mAdapter);
mContext.bindings.elevatedToolbar.setRecyclerView(mContext.bindings.listaColliMainList);
}
@Override
public void onItemClick(MtbColt item, int position) {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
try {
ColliMagazzinoRESTConsumer.getByTestataStatic(item, mLoadOnlyResiduo, false, mtbColt -> {
ObservableArrayList<MtbColr> mtbColrObservableArrayList = new ObservableArrayList<>();
if(mtbColt != null && mtbColt.getMtbColr() != null) mtbColrObservableArrayList.addAll(mtbColt.getMtbColr());
item.setMtbColr(mtbColrObservableArrayList);
progress.dismiss();
mContext.startContenutoBancaleActivity(item);
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
} catch (Exception e) {
e.printStackTrace();
UtilityExceptions.defaultException(mContext, e, progress);
}
}
}

View File

@@ -1,12 +1,10 @@
package it.integry.integrywmsnative.gest.login;
import androidx.databinding.DataBindingUtil;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.utility.UtilityWindow;
import it.integry.integrywmsnative.databinding.ActivityLoginBinding;
@@ -14,7 +12,6 @@ import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel;
public class LoginActivity extends BaseActivity {
private MainContext mainContext = new MainContext(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -22,7 +19,7 @@ public class LoginActivity extends BaseActivity {
UtilityWindow.maximizeToFullScreen(this);
ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login);
LoginViewModel loginViewModel = new LoginViewModel(this, mainContext);
LoginViewModel loginViewModel = new LoginViewModel(this);
binding.setLoginViewModel(loginViewModel);
}

View File

@@ -12,14 +12,12 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import it.integry.integrywmsnative.MainActivity;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.SplashActivity;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityServer;
@@ -47,15 +45,12 @@ public class LoginViewModel {
public BindableString codAziendaError = new BindableString();
private LoginActivity mActivity;
private MainContext mMainContext;
private Dialog mProgress;
public LoginViewModel(LoginActivity activity, MainContext mainContext) {
public LoginViewModel(LoginActivity activity) {
this.mActivity = activity;
this.mMainContext = mainContext;
loginButtonEnabled.set(true);
@@ -66,7 +61,6 @@ public class LoginViewModel {
}
public boolean validate() {
if (username.isEmpty() || username.get().length() < 3) {
usernameError.set(mActivity.getText(R.string.username_error_not_valid).toString());
@@ -82,9 +76,8 @@ public class LoginViewModel {
}
public void login(boolean areValidData){
if(areValidData){
public void login(boolean areValidData) {
if (areValidData) {
loginButtonEnabled.set(false);
mProgress = UtilityProgress.createDefaultProgressDialog(mActivity);
@@ -112,7 +105,7 @@ public class LoginViewModel {
UtilityServer.isEmsApiAvailable(host, port, value1 -> {
if(value1){ //Is online
if (value1) { //Is online
loginHelper.doLogin(host, port, new ISimpleOperationCallback<LoginDTO>() {
@Override
public void onSuccess(final LoginDTO loginDTO) {
@@ -164,32 +157,26 @@ public class LoginViewModel {
SettingsManager.i().getUser().setUsername(username.get());
SettingsManager.i().getUser().setPassword(password.get());
SystemRESTConsumer.getAvailableCodMdeps(new ISimpleOperationCallback<List<AvailableCodMdepsDTO>>() {
@Override
public void onSuccess(List<AvailableCodMdepsDTO> availableCodMdeps) {
SettingsManager.iDB().setAvailableCodMdep(availableCodMdeps);
SystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> {
SettingsManager.iDB().setAvailableCodMdep(availableCodMdeps);
if(availableCodMdeps == null || availableCodMdeps.size() == 0) {
onLoginFailed(Html.fromHtml(String.format(mActivity.getText(R.string.no_codmdep_available).toString())));
return;
}
SettingsManager.i().getUserSession().setDepo(availableCodMdeps.get(0));
if(onComplete != null) onComplete.run();
if (availableCodMdeps == null || availableCodMdeps.size() == 0) {
onLoginFailed(Html.fromHtml(String.format(mActivity.getText(R.string.no_codmdep_available).toString())));
return;
}
@Override
public void onFailed(Exception ex) {
//BOH
onLoginFailed(new SpannableString(ex.getMessage()));
}
SettingsManager.i().getUserSession().setDepo(availableCodMdeps.get(0));
if (onComplete != null) onComplete.run();
}, ex -> {
//BOH
onLoginFailed(new SpannableString(ex.getMessage()));
});
}
private void onLoginFailed(final Spanned message){
private void onLoginFailed(final Spanned message) {
mProgress.dismiss();
loginButtonEnabled.set(true);
mActivity.runOnUiThread(() -> DialogSimpleMessageView.makeErrorDialog(
@@ -200,7 +187,7 @@ public class LoginViewModel {
}
private void onLoginSuccess(final String title, final Spanned message, final String host, final int port, final List<String> availableProfiles){
private void onLoginSuccess(final String title, final Spanned message, final String host, final int port, final List<String> availableProfiles) {
mProgress.dismiss();
mActivity.runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog(
title,
@@ -210,8 +197,8 @@ public class LoginViewModel {
.show(mActivity.getSupportFragmentManager(), "tag"));
}
private void showProfileDBSelectionDialog(final String host, final int port, final List<String> availableProfiles){
if(availableProfiles != null && availableProfiles.size() == 1 ) {
private void showProfileDBSelectionDialog(final String host, final int port, final List<String> availableProfiles) {
if (availableProfiles != null && availableProfiles.size() == 1) {
SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(0));
loadDepo(host, port, this::onLoginCompleted);
@@ -238,19 +225,16 @@ public class LoginViewModel {
public void onLoginCompleted() {
loginButtonEnabled.set(true);
SettingsManager.update();
Dialog loadingProgress = UtilityProgress.createDefaultProgressDialog(mActivity);
mMainContext.init(() -> {
loadingProgress.dismiss();
mActivity.finish();
Intent myIntent = new Intent(mActivity, MainActivity.class);
mActivity.startActivity(myIntent);
});
startSplashActivity();
}
private void startSplashActivity() {
mActivity.finish();
Intent myIntent = new Intent(mActivity, SplashActivity.class);
mActivity.startActivity(myIntent);
}
}

View File

@@ -1,4 +1,4 @@
package it.integry.integrywmsnative;
package it.integry.integrywmsnative.gest.main;
import android.content.Intent;
import android.os.Bundle;
@@ -25,13 +25,15 @@ import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
@@ -41,13 +43,12 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.update.UpdatesManager;
import it.integry.integrywmsnative.core.utility.UtilityContext;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.databinding.ActivityMainBinding;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.main.MainFragment;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
public class MainActivity extends BaseActivity
@@ -59,10 +60,13 @@ public class MainActivity extends BaseActivity
private boolean mIsOnline = false;
@Inject
AppDatabase mAppDatabase;
ColliDataRecoverService mColliDataRecoverService;
@Inject
ColliDataRecoverService mColliDataRecoverService;
MenuService menuService;
@Inject
MainContext mainContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -73,8 +77,6 @@ public class MainActivity extends BaseActivity
.create()
.inject(this);
mColliDataRecoverService.init(this);
mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_main, null, false);
setContentView(mBinding.getRoot());
@@ -95,13 +97,13 @@ public class MainActivity extends BaseActivity
mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
initGestMenu();
openMain();
if (savedInstanceState == null) openMain();
init();
}
private void startLoginActivity(){
private void startLoginActivity() {
this.finish();
Intent myIntent = new Intent(this, LoginActivity.class);
startActivity(myIntent);
@@ -168,7 +170,7 @@ public class MainActivity extends BaseActivity
BaseMenuConfiguration.MenuItem menuItem = getMenuItem(id);
if(menuItem != null) {
if (menuItem != null) {
fragment = menuItem.getFragmentFactory().run();
this.adaptViewToFragment(fragment);
} else {
@@ -184,9 +186,10 @@ public class MainActivity extends BaseActivity
case R.id.nav_logout:
ServerStatusChecker.dispose();
UtilitySettings.logout();
this.mainContext.logout(() -> {
startLoginActivity();
});
startLoginActivity();
break;
}
}
@@ -202,24 +205,30 @@ public class MainActivity extends BaseActivity
private void initGestMenu() {
Menu menu = mBinding.navView.getMenu();
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
if(customConfiguration == null) return;
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();
menu.add(R.id.nav_home, R.id.nav_home, 0, R.string.home)
.setIcon(R.drawable.ic_black_home);
for(MenuConfiguration.MenuGroup menuGroup : menuGroups) {
MenuConfiguration baseMenuConfiguration = new MenuConfiguration();
List<MenuConfiguration.MenuGroup> menuGroups = baseMenuConfiguration.getGroups();
SubMenu subMenu = menu.addSubMenu(menuGroup.getGroupText());
for (MenuConfiguration.MenuGroup menuGroup : menuGroups) {
try {
for(MenuConfiguration.MenuItem menuItem : menuGroup.getItems()) {
subMenu
.add(menuGroup.getGroupId(), menuItem.getID(), 0, menuItem.getTitleText())
.setIcon(menuItem.getDrawerIcon());
if (menuService.isGroupEnabled(menuGroup)) {
SubMenu subMenu = menu.addSubMenu(menuGroup.getGroupText());
for (MenuConfiguration.MenuItem menuItem : menuGroup.getItems()) {
if(menuService.isItemEnabled(menuItem)) {
subMenu
.add(menuGroup.getGroupId(), menuItem.getID(), 0, menuItem.getTitleText())
.setIcon(menuItem.getDrawerIcon());
}
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
}
@@ -238,15 +247,15 @@ public class MainActivity extends BaseActivity
BaseMenuConfiguration.MenuItem menuItemToReturn = null;
for(MenuConfiguration.MenuGroup menuGroup : menuGroups) {
for(MenuConfiguration.MenuItem menuItem : menuGroup.getItems()) {
if(menuId == menuItem.getID()) {
for (MenuConfiguration.MenuGroup menuGroup : menuGroups) {
for (MenuConfiguration.MenuItem menuItem : menuGroup.getItems()) {
if (menuId == menuItem.getID()) {
menuItemToReturn = menuItem;
break;
}
}
if(menuItemToReturn != null) break;
if (menuItemToReturn != null) break;
}
@@ -266,13 +275,13 @@ public class MainActivity extends BaseActivity
public void pop() {
int count = getSupportFragmentManager().getBackStackEntryCount();
for(int i = 0; i < count; i++) {
for (int i = 0; i < count; i++) {
getSupportFragmentManager().popBackStack();
}
}
private void adaptViewToFragment(Fragment fragment){
if(fragment instanceof ISearcableFragment) {
private void adaptViewToFragment(Fragment fragment) {
if (fragment instanceof ISearcableFragment) {
mBinding.appBarMain.mainSearch.setOnQueryTextListener((SearchView.OnQueryTextListener) fragment);
mBinding.appBarMain.mainSearch.setVisibility(View.VISIBLE);
mBinding.appBarMain.mainSearch.setOnSearchClickListener(v -> {
@@ -298,7 +307,7 @@ public class MainActivity extends BaseActivity
}
if(fragment instanceof ITitledFragment && !(fragment instanceof MainFragment)) {
if (fragment instanceof ITitledFragment && !(fragment instanceof MainFragment)) {
mBinding.appBarMain.toolbarTitleCenteredLayout.setVisibility(View.GONE);
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.VISIBLE);
((ITitledFragment) fragment).onCreateActionBar(mBinding.appBarMain.toolbarTitleLeft, this);
@@ -311,19 +320,19 @@ public class MainActivity extends BaseActivity
mBinding.appBarMain.toolbarTitleLeft.setVisibility(View.GONE);
}
if(fragment instanceof IScrollableFragment) {
if (fragment instanceof IScrollableFragment) {
((IScrollableFragment) fragment).setScrollToolbar(mBinding.appBarMain.elevatedToolbar);
((IScrollableFragment) fragment).addOnPreDestroy(() -> {
mBinding.appBarMain.elevatedToolbar.resetAll();
});
}
if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isSelectAllButtonEnabled()) {
if (fragment instanceof ISelectAllFragment && ((ISelectAllFragment) fragment).isSelectAllButtonEnabled()) {
mBinding.appBarMain.mainSelectAll.setVisibility(View.VISIBLE);
mBinding.appBarMain.mainSelectAll.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
((ISelectAllFragment)fragment).onSelectAll();
((ISelectAllFragment) fragment).onSelectAll();
}
});
((ISelectAllFragment) fragment).addOnPreDestroy(() -> {
@@ -332,16 +341,16 @@ public class MainActivity extends BaseActivity
});
}
if(fragment instanceof IFilterableFragment) {
if (fragment instanceof IFilterableFragment) {
mBinding.appBarMain.mainFilter.setVisibility(View.VISIBLE);
mBinding.appBarMain.mainFilter.setOnClickListener(new OnSingleClickListener() {
@Override
public void onSingleClick(View v) {
((IFilterableFragment)fragment).onFilterClick();
((IFilterableFragment) fragment).onFilterClick();
}
});
((IFilterableFragment)fragment).addOnPreDestroy(() -> {
((IFilterableFragment) fragment).addOnPreDestroy(() -> {
mBinding.appBarMain.mainFilter.setVisibility(View.GONE);
mBinding.appBarMain.mainFilter.setOnClickListener(null);
});
@@ -351,14 +360,14 @@ public class MainActivity extends BaseActivity
}
}
private void changeContentFragment(Fragment fragment, boolean addToBackStack){
private void changeContentFragment(Fragment fragment, boolean addToBackStack) {
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager
.beginTransaction()
.replace(R.id.frame_container, fragment);
if(addToBackStack) ft.addToBackStack(fragment.getTag());
if (addToBackStack) ft.addToBackStack(fragment.getTag());
ft.commit();
//fragmentManager.executePendingTransactions();
@@ -367,11 +376,7 @@ public class MainActivity extends BaseActivity
}
private void init(){
private void init() {
// ServerStatusChecker.getInstance().addCallback(value -> {
// if(value && (!mIsOnline || firstCheckExecution)){

View File

@@ -1,4 +1,4 @@
package it.integry.integrywmsnative;
package it.integry.integrywmsnative.gest.main;
import dagger.Subcomponent;

Some files were not shown because too many files have changed in this diff Show More