Compare commits

...

86 Commits

Author SHA1 Message Date
bac849324f Finish v1.32.09(349) 2023-03-14 16:00:24 +01:00
d823856ac5 -> v1.32.09 (349) 2023-03-14 16:00:16 +01:00
a49ee430e2 aggiunto controllo in spedizione in caso di uscita senza collo riferimento 2023-03-14 15:57:18 +01:00
af5d19eb55 Finish v1.32.08(348) 2023-03-14 11:33:23 +01:00
8fe0a1fd07 Finish v1.32.08(348) 2023-03-14 11:33:23 +01:00
b0a7a93f85 -> v1.32.08 (348) 2023-03-14 11:33:04 +01:00
10f888b5d5 [ESSEGRANDE] Miglioramenti alla sync degli inventari 2023-03-14 11:32:11 +01:00
95807fbfbc Finish v1.32.07(347) 2023-03-13 19:25:07 +01:00
4317e083a6 Finish v1.32.07(347) 2023-03-13 19:25:07 +01:00
0c54a32e39 -> v1.32.07 (347) 2023-03-13 19:25:00 +01:00
62dc62aa99 Fix sull'eliminazione di un documento interno 2023-03-13 19:23:52 +01:00
2182a970ac Finish v1.32.06(346) 2023-03-13 18:19:30 +01:00
9b823fdca8 Finish v1.32.06(346) 2023-03-13 18:19:30 +01:00
904c825472 -> v1.32.06 (346) 2023-03-13 18:19:24 +01:00
a15d225998 Rinominati servizi giacenza 2023-03-13 18:18:50 +01:00
e3b8373bb9 Finish v1.32.05(345) 2023-03-13 16:32:01 +01:00
0cdbbc096c Finish v1.32.05(345) 2023-03-13 16:32:00 +01:00
895c21cee4 -> v1.32.05 (345) 2023-03-13 16:31:55 +01:00
d541761ac6 Sistemata creazione documento solo per colli rettificati V- 2023-03-13 16:31:22 +01:00
72773deaf1 Implementato nuovo servizio di modifica righe UDS (rimossa processEntity) 2023-03-10 12:34:43 +01:00
165568b7e3 Finish v1.32.04(344) 2023-03-08 17:20:07 +01:00
3396e295fa Finish v1.32.04(344) 2023-03-08 17:20:06 +01:00
0f3f593abd -> v1.32.04 (344) 2023-03-08 17:19:59 +01:00
df48ea3b32 Fix su stbGestSetup nulle 2023-03-08 17:19:27 +01:00
5e52d83c40 Finish v1.32.03(343) 2023-03-07 18:49:58 +01:00
0a71f54814 Finish v1.32.03(343) 2023-03-07 18:49:57 +01:00
c18828cdda -> v1.32.03 (343) 2023-03-07 18:49:52 +01:00
92073fa8bb Aggiunta gestione del protocollo in AppUpdater 2023-03-07 18:49:21 +01:00
4131dd7e97 Finish v1.32.02(342) 2023-03-07 18:16:23 +01:00
3c4fdea0ec Finish v1.32.02(342) 2023-03-07 18:16:22 +01:00
71c73e8cde -> v1.32.02 (342) 2023-03-07 18:16:16 +01:00
1a66d4f541 Fix per retrieve ordini lavorazione/produzione 2023-03-07 18:15:01 +01:00
d9c33dc5f5 Vario per Essegrande 2023-03-07 17:57:42 +01:00
1edcba63aa Finish v1.32.01(341) 2023-03-03 14:01:23 +01:00
2566311f96 Finish v1.32.01(341) 2023-03-03 14:01:23 +01:00
c01cbc1bac -> v1.32.01 (341) 2023-03-03 14:01:00 +01:00
9c95b107d5 Sostituita vecchia getElencoArticoli dei documenti con nuovo servizio 2023-03-03 13:59:31 +01:00
c2e1c048be Finish v1.32.00(340) 2023-03-02 11:51:51 +01:00
c3bfe70093 Finish v1.32.00(340) 2023-03-02 11:51:50 +01:00
a6cb8c9c9c -> v1.32.00 (340) 2023-03-02 11:51:43 +01:00
5908e076a4 Gestita parzialmente rotazione schermo 2023-03-02 11:50:09 +01:00
4445e9aff2 Rimossa domanda di cambio posizione per le rettifiche di spedizione. Cambiata response di save doc in rettifica di spedizione. 2023-03-02 11:10:03 +01:00
9cd0855dcf Refactoring dialog di filtro dei documenti interni 2023-03-01 19:59:27 +01:00
d807ab1f31 Completata chiamata di saveDoc in fase di Rettifica spedizione 2023-02-24 19:32:36 +01:00
69b88b1f6d Sistemata UI del log esportato via Mail 2023-02-24 19:05:39 +01:00
35f1495ebc Sostituite icone da PNG a SVG. Implementata voce di Rettifica spedizione che carica colli V. 2023-02-24 16:46:36 +01:00
7fdc964687 Finish v1.31.05(339) 2023-02-24 16:03:10 +01:00
8322303351 Finish v1.31.05(339) 2023-02-24 16:03:10 +01:00
a7f5f5f505 -> v1.31.05 (339) 2023-02-24 16:03:03 +01:00
9b1a00d09c Fix su creazione nuova UDS nel caso in cui non è presente la data cons 2023-02-24 16:02:19 +01:00
72ebf8f135 Finish v1.31.04(338) 2023-02-23 14:05:29 +01:00
be58e333b6 Finish v1.31.04(338) 2023-02-23 14:05:28 +01:00
42620bd324 -> v1.31.04 (338) 2023-02-23 14:05:18 +01:00
d4deade046 Ripristinata rimozione dalla sessione dei colli il collo correttamente chiuso 2023-02-23 14:04:44 +01:00
846393304a Finish v1.31.03(337) 2023-02-20 17:28:58 +01:00
c3ceae8027 Finish v1.31.03(337) 2023-02-20 17:28:58 +01:00
7b4d7db265 -> v1.31.03 (337) 2023-02-20 17:28:51 +01:00
1c6cf9a02b Fix su protocol null per le chiamate rest nel caso in cui l'app abbia già una sessione utente avviata 2023-02-20 17:28:04 +01:00
fd2d4fb47b Finish v1.31.02(336) 2023-02-20 17:12:40 +01:00
094f9b68f6 Finish v1.31.02(336) 2023-02-20 17:12:39 +01:00
be418d3d26 -> v1.31.02 (336) 2023-02-20 17:12:35 +01:00
25813a6362 Sistemata gestione delle eccezioni non gestite e creato sistema di esportazione Log 2023-02-20 17:10:50 +01:00
51c5d3a0c7 Merge remote-tracking branch 'origin/develop' into develop 2023-02-20 11:35:22 +01:00
e964220655 Implementata retrieve inventari 2023-02-20 11:35:17 +01:00
e493f1796b Implementata retrieve inventari 2023-02-20 11:34:51 +01:00
4882645311 Little refactoring per Essegrande 2023-02-15 20:10:47 +01:00
468f1e5b58 Finish v1.31.1(335) 2023-02-14 12:20:17 +01:00
79add4f60a Finish v1.31.1(335) 2023-02-14 12:20:17 +01:00
975763f400 -> v1.31.1 (335) 2023-02-14 12:20:11 +01:00
5eac3f14cc BugFix Picking da ordine: errore in caso di lista commesse vuota 2023-02-14 12:19:16 +01:00
bed5b36ade Finish v1.31.0(334) 2023-02-14 11:42:10 +01:00
7678ce1a50 Finish v1.31.0(334) 2023-02-14 11:42:10 +01:00
b3faf38455 -> v1.31.0 (334) 2023-02-14 11:42:05 +01:00
283cb59d42 rimosse configurazioni di esecuzione non utilizzate e corretta gestione setup 2023-02-14 11:41:05 +01:00
1867ac8742 Rimossa parte delle dynamic feature 2023-02-14 11:13:10 +01:00
d210e3b3e0 Rimossa parte delle dynamic feature 2023-02-14 11:00:33 +01:00
8bb2f48090 Finish v1.30.15(333) 2023-02-13 17:48:27 +01:00
15b4d728e6 Finish v1.30.15(333) 2023-02-13 17:48:27 +01:00
3018123110 -> v1.30.15 (333) 2023-02-13 17:48:01 +01:00
b02eaf02a8 aggiornamento progetto a AGP 8.1 2023-02-13 17:46:57 +01:00
ad9795a3a3 test compilazione jenkins con desugaring 2023-02-13 14:25:56 +01:00
170411383f Finish v1.30.14(332) 2023-02-13 13:09:26 +01:00
9e87130d6c Finish v1.30.14(332) 2023-02-13 13:09:26 +01:00
0f6a9cdae2 -> v1.30.14 (332) 2023-02-13 13:09:20 +01:00
79ec6430f6 implementata libreria compatibilità LocalDate 2023-02-13 13:08:09 +01:00
8aad7337bf Finish v1.30.13(331) 2023-02-13 11:59:27 +01:00
214 changed files with 3934 additions and 3423 deletions

6
.idea/kotlinc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.8.0" />
</component>
</project>

View File

@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_base" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false"> <configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="WMS.app" /> <module name="WMS.app.main" />
<option name="DEPLOY" value="true" /> <option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" /> <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" /> <option name="DEPLOY_AS_INSTANT" value="false" />
@@ -8,13 +8,12 @@
<option name="PM_INSTALL_OPTIONS" value="" /> <option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" /> <option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" /> <option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic_vgalimenti" /> <option name="CLEAR_APP_STORAGE" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base,WMS.dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" /> <option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" /> <option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" /> <option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" /> <option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" /> <option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" /> <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" /> <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
@@ -46,7 +45,7 @@
<option name="ADVANCED_PROFILING_ENABLED" value="false" /> <option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" /> <option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" /> <option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Callstack Sample" /> <option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" /> <option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" /> <option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers> </Profilers>

View File

@@ -1,61 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_vglimenti" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS.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="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base" />
<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="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
<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="Callstack Sample" />
<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

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 331 def appVersionCode = 349
def appVersionName = '1.30.13' def appVersionName = '1.32.09'
signingConfigs { signingConfigs {
release { release {
@@ -62,11 +62,12 @@ android {
} }
android.buildFeatures.dataBinding true android.buildFeatures.dataBinding true
android.buildFeatures.buildConfig true
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_11 sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11
//coreLibraryDesugaringEnabled true coreLibraryDesugaringEnabled true
} }
productFlavors { productFlavors {
@@ -85,9 +86,6 @@ android {
options.compilerArgs << "-Xmaxerrs" << "10000" options.compilerArgs << "-Xmaxerrs" << "10000"
} }
} }
dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti"]
lint { lint {
abortOnError false abortOnError false
} }
@@ -97,6 +95,7 @@ android {
} }
dependencies { dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2'
implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.android.support', module: 'support-annotations'
@@ -115,7 +114,7 @@ dependencies {
implementation 'com.google.android.gms:play-services-basement:18.1.0' implementation 'com.google.android.gms:play-services-basement:18.1.0'
implementation 'androidx.appcompat:appcompat:1.6.0' implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.8.0' implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
@@ -188,7 +187,6 @@ dependencies {
// RxJava is also required. // RxJava is also required.
implementation 'io.reactivex.rxjava2:rxjava:2.1.12' implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
} }
repositories { repositories {

View File

@@ -2,7 +2,7 @@
"formatVersion": 1, "formatVersion": 1,
"database": { "database": {
"version": 13, "version": 13,
"identityHash": "bc3841159bac7a7731fe39a5fa4f0f4e", "identityHash": "bef89b513f0a4d5ecd9c2111e2e614a4",
"entities": [ "entities": [
{ {
"tableName": "articoli_griglia", "tableName": "articoli_griglia",
@@ -112,10 +112,10 @@
} }
], ],
"primaryKey": { "primaryKey": {
"autoGenerate": true,
"columnNames": [ "columnNames": [
"articolo_griglia_id" "articolo_griglia_id"
], ]
"autoGenerate": true
}, },
"indices": [ "indices": [
{ {
@@ -172,10 +172,10 @@
} }
], ],
"primaryKey": { "primaryKey": {
"autoGenerate": true,
"columnNames": [ "columnNames": [
"griglia_id" "griglia_id"
], ]
"autoGenerate": true
}, },
"indices": [ "indices": [
{ {
@@ -262,10 +262,10 @@
} }
], ],
"primaryKey": { "primaryKey": {
"autoGenerate": true,
"columnNames": [ "columnNames": [
"ordine_id" "ordine_id"
], ]
"autoGenerate": true
}, },
"indices": [], "indices": [],
"foreignKeys": [] "foreignKeys": []
@@ -366,10 +366,10 @@
} }
], ],
"primaryKey": { "primaryKey": {
"autoGenerate": true,
"columnNames": [ "columnNames": [
"articolo_ordine_id" "articolo_ordine_id"
], ]
"autoGenerate": true
}, },
"indices": [ "indices": [
{ {
@@ -580,10 +580,10 @@
} }
], ],
"primaryKey": { "primaryKey": {
"autoGenerate": true,
"columnNames": [ "columnNames": [
"id" "id"
], ]
"autoGenerate": true
}, },
"indices": [ "indices": [
{ {
@@ -829,10 +829,10 @@
} }
], ],
"primaryKey": { "primaryKey": {
"autoGenerate": true,
"columnNames": [ "columnNames": [
"id" "id"
], ]
"autoGenerate": true
}, },
"indices": [ "indices": [
{ {
@@ -874,7 +874,7 @@
}, },
{ {
"tableName": "inventari", "tableName": "inventari",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `id_inventario` INTEGER, `cod_mdep` TEXT NOT NULL, `data_inventario` INTEGER, `data_reg` INTEGER, `data_ver` INTEGER, `filtro` TEXT, `flag_stato` TEXT, `flag_operazione` TEXT, `cod_anag` TEXT, `cod_dtip` TEXT, `inserito_da` TEXT, `registrato_da` TEXT, `verificato_da` TEXT, `data_ora_inizio` INTEGER, `data_ora_fine` INTEGER, `causale` TEXT, `zona` TEXT, `remote_sync_date` INTEGER)", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `id_inventario` INTEGER, `cod_mdep` TEXT NOT NULL, `data_inventario` INTEGER, `data_reg` INTEGER, `data_ver` INTEGER, `filtro` TEXT, `flag_stato` TEXT, `flag_operazione` TEXT, `cod_anag` TEXT, `cod_dtip` TEXT, `inserito_da` TEXT, `registrato_da` TEXT, `verificato_da` TEXT, `data_ora_inizio` INTEGER, `data_ora_fine` INTEGER, `causale` TEXT, `zona` TEXT, `new` INTEGER, `remote_sync_date` INTEGER)",
"fields": [ "fields": [
{ {
"fieldPath": "id", "fieldPath": "id",
@@ -984,6 +984,12 @@
"affinity": "TEXT", "affinity": "TEXT",
"notNull": false "notNull": false
}, },
{
"fieldPath": "isNew",
"columnName": "new",
"affinity": "INTEGER",
"notNull": false
},
{ {
"fieldPath": "remoteSyncDate", "fieldPath": "remoteSyncDate",
"columnName": "remote_sync_date", "columnName": "remote_sync_date",
@@ -992,10 +998,10 @@
} }
], ],
"primaryKey": { "primaryKey": {
"autoGenerate": true,
"columnNames": [ "columnNames": [
"_id" "_id"
], ]
"autoGenerate": true
}, },
"indices": [ "indices": [
{ {
@@ -1107,10 +1113,10 @@
} }
], ],
"primaryKey": { "primaryKey": {
"autoGenerate": true,
"columnNames": [ "columnNames": [
"_id" "_id"
], ]
"autoGenerate": true
}, },
"indices": [ "indices": [
{ {
@@ -1150,7 +1156,7 @@
"views": [], "views": [],
"setupQueries": [ "setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'bc3841159bac7a7731fe39a5fa4f0f4e')" "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'bef89b513f0a4d5ecd9c2111e2e614a4')"
] ]
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32"
tools:ignore="ScopedStorage" />
<application <application
android:name=".MainApplication" android:name=".MainApplication"
android:allowBackup="true" android:allowBackup="true"
@@ -23,28 +33,28 @@
android:requestLegacyExternalStorage="true"> android:requestLegacyExternalStorage="true">
<activity <activity
android:name=".gest.spedizione.SpedizioneActivity" android:name=".gest.spedizione.SpedizioneActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" /> android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity <activity
android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" /> android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity <activity
android:name=".gest.prod_dettaglio_linea.ProdDettaglioLineaActivity" android:name=".gest.prod_dettaglio_linea.ProdDettaglioLineaActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" /> android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity <activity
android:name=".gest.contab_doc_interni.edit_form.DocInterniEditFormActivity" android:name=".gest.contab_doc_interni.edit_form.DocInterniEditFormActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" /> android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity <activity
android:name=".gest.picking_resi.PickingResiActivity" android:name=".gest.picking_resi.PickingResiActivity"
android:screenOrientation="portrait" android:theme="@style/Light"
android:theme="@style/Light" /> android:configChanges="orientation|screenSize|keyboardHidden" />
<activity <activity
android:name=".gest.main.MainActivity" android:name=".gest.main.MainActivity"
android:theme="@style/Light" android:theme="@style/Light"
@@ -56,30 +66,31 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".gest.accettazione_picking.AccettazionePickingActivity"
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity <activity
android:name=".gest.login.LoginActivity" android:name=".gest.login.LoginActivity"
android:theme="@style/Light" /> android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.accettazione_picking.AccettazionePickingActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity <activity
android:name=".gest.lista_bancali.ListaBancaliActivity" android:name=".gest.lista_bancali.ListaBancaliActivity"
android:label="@string/activity_lista_bancali_title" android:label="@string/activity_lista_bancali_title"
android:screenOrientation="portrait" android:theme="@style/Light"
android:theme="@style/Light" /> android:configChanges="orientation|screenSize|keyboardHidden" />
<activity <activity
android:name=".gest.contenuto_bancale.ContenutoBancaleActivity" android:name=".gest.contenuto_bancale.ContenutoBancaleActivity"
android:label="@string/activity_contenuto_bancale_title" android:label="@string/activity_contenuto_bancale_title"
android:screenOrientation="portrait" android:theme="@style/Light"
android:theme="@style/Light" /> android:configChanges="orientation|screenSize|keyboardHidden" />
<activity <activity
android:name=".gest.inventario.picking.PickingInventarioActivity" android:name=".gest.inventario.picking.PickingInventarioActivity"
android:label="@string/activity_picking_inventario_title" android:label="@string/activity_picking_inventario_title"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing" android:windowSoftInputMode="adjustNothing"
android:theme="@style/Light"/> android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden"/>
<meta-data <meta-data
android:name="firebase_crashlytics_collection_enabled" android:name="firebase_crashlytics_collection_enabled"

View File

@@ -3,11 +3,13 @@ package it.integry.integrywmsnative;
import android.app.Application; import android.app.Application;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.util.Log;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.integrywmsnative.core.context.AppContext; import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.data_store.db.RoomModule; import it.integry.integrywmsnative.core.data_store.db.RoomModule;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
public class MainApplication extends Application { public class MainApplication extends Application {
@@ -19,6 +21,8 @@ public class MainApplication extends Application {
public static MainApplicationModule appModule; public static MainApplicationModule appModule;
public static RoomModule roomModule; public static RoomModule roomModule;
private Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler;
@Inject @Inject
AppContext appContext; AppContext appContext;
@@ -40,6 +44,9 @@ public class MainApplication extends Application {
appComponent.inject(this); appComponent.inject(this);
res = getResources(); res = getResources();
defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(_unCaughtExceptionHandler);
} }
// Called by the system when the device configuration changes while your component is running. // Called by the system when the device configuration changes while your component is running.
@@ -61,4 +68,22 @@ public class MainApplication extends Application {
System.exit(0); System.exit(0);
} }
// handler listener
private Thread.UncaughtExceptionHandler _unCaughtExceptionHandler =
new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
try {
UtilityLogger.error(new Exception(ex));
} catch (Exception e) {
Log.e("Uncaught error", "Exception Logger failed!", e);
//MainApplication.exit();
}
// re-throw critical exception further to the os (important)
defaultUncaughtExceptionHandler.uncaughtException(thread, ex);
}
};
} }

View File

@@ -74,6 +74,8 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigl
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
import it.integry.integrywmsnative.gest.settings.MainSettingsComponent;
import it.integry.integrywmsnative.gest.settings.MainSettingsModule;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListComponent; import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListComponent;
@@ -169,6 +171,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
BottomSheetInventarioRowActionsModule.class, BottomSheetInventarioRowActionsModule.class,
BottomSheetMtbColrEditModalModule.class, BottomSheetMtbColrEditModalModule.class,
DialogChooseArtsFromMtbAartListModule.class, DialogChooseArtsFromMtbAartListModule.class,
MainSettingsModule.class,
}) })
public interface MainApplicationComponent { public interface MainApplicationComponent {
@@ -251,7 +254,7 @@ public interface MainApplicationComponent {
DocInterniComponent.Factory docInterniComponent(); DocInterniComponent.Factory docInterniComponent();
DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent(); DialogSelectDocInfoComponent.Factory dialogSelectDocInfoNewViewComponent();
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent(); DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent();
@@ -285,6 +288,8 @@ public interface MainApplicationComponent {
DialogChooseArtsFromMtbAartListComponent.Factory dialogDialogDialogChooseArtsFromMtbAartListViewComponent(); DialogChooseArtsFromMtbAartListComponent.Factory dialogDialogDialogChooseArtsFromMtbAartListViewComponent();
MainSettingsComponent.Factory mainSettingsFragmentComponent();
void inject(MainApplication mainApplication); void inject(MainApplication mainApplication);
void inject(AppContext mainApplication); void inject(AppContext mainApplication);

View File

@@ -27,7 +27,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DocumentiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
@@ -253,8 +253,8 @@ public class MainApplicationModule {
@Provides @Provides
@Singleton @Singleton
DocumentiRESTConsumer provideDocumentiRESTConsumer() { DocumentRESTConsumer provideDocumentiRESTConsumer() {
return new DocumentiRESTConsumer(); return new DocumentRESTConsumer();
} }
@Provides @Provides

View File

@@ -5,8 +5,9 @@ public class CommonConst {
public static class Login { public static class Login {
public static class Azienda { public static class Azienda {
public static String protocol = "https";
public static String host = "www2.studioml.it"; public static String host = "www2.studioml.it";
public static int port = 80; public static int port = 443;
} }
} }

View File

@@ -14,7 +14,6 @@ import java.util.List;
import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
import it.integry.barcode_base_android_library.model.BarcodeSetting; import it.integry.barcode_base_android_library.model.BarcodeSetting;
import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader; import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment; import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader; import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader;
import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader; import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader;
@@ -136,12 +135,12 @@ public class BarcodeManager {
public static void disable() { public static void disable() {
mEnabled = false; mEnabled = false;
UtilityLogger.trace("Barcode reader disabled"); // UtilityLogger.info("Barcode reader disabled");
} }
public static void enable() { public static void enable() {
mEnabled = true; mEnabled = true;
UtilityLogger.trace("Barcode reader enabled"); // UtilityLogger.info("Barcode reader enabled");
} }
public static boolean isEnabled() { public static boolean isEnabled() {

View File

@@ -1,29 +0,0 @@
package it.integry.integrywmsnative.core.class_router;
import java.util.HashMap;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
public class BaseCustomConfiguration implements ICustomConfiguration {
public static class Keys {
public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1;
public static int CUSTOM_DYNAMIC_VERSION_PATH = 2;
public static int FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC = 3;
}
protected HashMap<Integer, Object> configurations = new HashMap<>() {{
put(Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE, true);
put(Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC, false);
}};
@Override
public <T> T getConfig(int key) {
return UtilityHashMap.getValue(configurations, key);
}
}

View File

@@ -1,84 +0,0 @@
package it.integry.integrywmsnative.core.class_router;
import android.content.Context;
import android.util.Pair;
import java.util.ArrayList;
import java.util.List;
public class ClassRouter {
public enum PATH {
FILTRO_ORDINI_VENDITA,
ORDINI_VENDITA,
CUSTOM_CONFIGURATION,
BARCODE_CUSTOMIZATION
}
private static Context context;
private static List<Pair<PATH, Object>> mRouteClasses = new ArrayList<>();
public static void init() {
// ClassRouter.context = context;
}
private static boolean checkIClassExists(PATH path) {
boolean methodAlreadyDeclared = false;
for(int i = 0; i < mRouteClasses.size() && !methodAlreadyDeclared; i++) {
if(mRouteClasses.get(i).first == path) methodAlreadyDeclared = true;
}
return methodAlreadyDeclared;
}
private static int getClassIndex(PATH path) {
for(int i = 0; i < mRouteClasses.size(); i++) {
if(mRouteClasses.get(i).first == path) return i;
}
return -1;
}
public static void registerPath(PATH path, Class clazz) {
if(checkIClassExists(path)) {
//throw new MethodPathAlreadyDeclaredException(path);
}
try {
mRouteClasses.add(new Pair<>(path, clazz.newInstance()));
} catch (IllegalAccessException | InstantiationException e) {
e.printStackTrace();
}
}
public static void deregisterPath(PATH path) {
if(checkIClassExists(path)) {
mRouteClasses.remove(getClassIndex(path));
}
}
public static <T> T getInstance(PATH path) {
try {
if (!checkIClassExists(path)) {
// throw new MethodPathNotRegisteredException(path);
}
Object instance = mRouteClasses.get(getClassIndex(path)).second;
return (T)instance;
} catch (Exception ex) {
// UtilityExceptions.defaultException(null, ex, true);
}
return null;
}
}

View File

@@ -57,9 +57,17 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setCodMenu("MG046") .setCodMenu("MG046")
.setTitleText(R.string.vendita_title_fragment) .setTitleText(R.string.vendita_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_spedizione) .setTitleIcon(R.drawable.ic_dashboard_spedizione)
.setDrawerIcon(R.drawable.ic_black_upload) .setDrawerIcon(R.drawable.ic_upload)
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null)))
.addItem(new MenuItem()
.setID(R.id.nav_rettifica_spedizione)
.setCodMenu("MG064")
.setTitleText(R.string.rettifica_spedizione_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_rettifica_spedizione)
.setDrawerIcon(R.drawable.ic_rettifica_spedizione_drawer)
.setFragmentFactory(() -> RettificaGiacenzeFragment.newInstance(GestioneEnum.VENDITA)))
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(R.id.nav_free_picking) .setID(R.id.nav_free_picking)
.setCodMenu("MG047") .setCodMenu("MG047")

View File

@@ -1,11 +0,0 @@
package it.integry.integrywmsnative.core.class_router.exceptions;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
public class MethodPathNotRegisteredException extends Exception {
public MethodPathNotRegisteredException(ClassRouter.PATH path) {
super(String.format("Path %s is not registered", path.toString()));
}
}

View File

@@ -1,7 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface IBarcodeCustomization {
boolean shouldForceToEan13(String barcode);
}

View File

@@ -1,7 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface ICustomConfiguration {
<T>T getConfig(int key);
}

View File

@@ -1,11 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface IFiltroOrdiniVendita {
boolean shoudShowCodMdepFilter();
boolean shoudShowIdViaggioFilter();
boolean shoudShowAgenteFilter();
}

View File

@@ -1,11 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
import java.util.List;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
public interface OrdiniVenditaInterface {
boolean isTrasfOrder(List<OrdineUscitaInevasoDTO> testateOrdini);
}

View File

@@ -34,6 +34,8 @@ public class AppContext {
@Inject @Inject
SettingsManager mSettingsManager; SettingsManager mSettingsManager;
private File logsFolder;
public AppContext(Context context) { public AppContext(Context context) {
this.mApplicationContext = context; this.mApplicationContext = context;
@@ -53,6 +55,10 @@ public class AppContext {
this.initLogger(); this.initLogger();
} }
public File getLogFilePath() {
return logsFolder;
}
private void initSettings() { private void initSettings() {
Stash.init(mApplicationContext); Stash.init(mApplicationContext);
@@ -82,10 +88,9 @@ public class AppContext {
private void initLogger() { private void initLogger() {
Logger.addLogAdapter(new AndroidLogAdapter()); Logger.addLogAdapter(new AndroidLogAdapter());
File logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath()); logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath());
int maxBytesSize = 5 * 1024 * 1024; int maxBytesSize = 5 * 1024 * 1024;
Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize)); Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize));
} }
} }

View File

@@ -6,13 +6,11 @@ import android.text.SpannableString;
import android.text.Spanned; import android.text.Spanned;
import android.text.SpannedString; import android.text.SpannedString;
import java.lang.reflect.Method;
import java.net.ConnectException; import java.net.ConnectException;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.menu.MenuService; import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
@@ -44,8 +42,7 @@ public class MainContext {
this.initDBData(() -> { this.initDBData(() -> {
this.initMenu(() -> { this.initMenu(() -> {
this.initReflections();
if (mListener != null) mListener.onContextInitialized(); if (mListener != null) mListener.onContextInitialized();
}); });
}); });
@@ -103,30 +100,6 @@ public class MainContext {
}); });
} }
private void initReflections() {
ClassRouter.init();
try {
String initMethod = "init";
Class dynamicContextClass = Class.forName("it.integry.wms.dynamic_customization.DynamicContext");
Method[] methods = dynamicContextClass.getMethods();
for (Method m : methods) {
if (initMethod.equals(m.getName())) {
// for static methods we can use null as instance of class
final Object newInstance = dynamicContextClass.newInstance();
m.invoke(newInstance, applicationContext);
break;
}
}
} catch (Exception e) {
// UtilityExceptions.defaultException(mContext, e, true);
}
}
public MainContext setListener(Listener listener) { public MainContext setListener(Listener listener) {
this.mListener = listener; this.mListener = listener;

View File

@@ -40,7 +40,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
InventarioRoomDTO.class, InventarioRoomDTO.class,
InventarioRowRoomDTO.class InventarioRowRoomDTO.class
}, },
version = 13, version = 14,
exportSchema = true) exportSchema = true)
@TypeConverters({ @TypeConverters({
DateConverter.class, DateConverter.class,
@@ -66,7 +66,8 @@ public abstract class AppDatabase extends RoomDatabase {
AppDatabase.class, "integry_wms") AppDatabase.class, "integry_wms")
.addMigrations(MIGRATION_10_11) .addMigrations(MIGRATION_10_11)
.addMigrations(MIGRATION_11_12) .addMigrations(MIGRATION_11_12)
.addMigrations(MIGRATION_12_13); .addMigrations(MIGRATION_12_13)
.addMigrations(MIGRATION_13_14);
sInstance = builder.build(); sInstance = builder.build();
} }
@@ -126,4 +127,12 @@ public abstract class AppDatabase extends RoomDatabase {
database.execSQL("CREATE INDEX IF NOT EXISTS index_inventario_rows__parent_id ON inventario_rows (parent_id)"); database.execSQL("CREATE INDEX IF NOT EXISTS index_inventario_rows__parent_id ON inventario_rows (parent_id)");
} }
}; };
static final Migration MIGRATION_13_14 = new Migration(13, 14) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE inventari"
+ " ADD COLUMN new INTEGER");
}
};
} }

View File

@@ -184,7 +184,7 @@ public class RoomModule {
InventarioLocalDataSource inventarioLocalDataSource, InventarioLocalDataSource inventarioLocalDataSource,
InventarioRESTConsumer inventarioRESTConsumer, InventarioRESTConsumer inventarioRESTConsumer,
InventarioMapper inventarioMapper) { InventarioMapper inventarioMapper) {
return new InventarioRepository(inventarioLocalDataSource, inventarioRESTConsumer, inventarioMapper, handler); return new InventarioRepository(inventarioLocalDataSource, inventarioRESTConsumer, inventarioMapper, handler, executorService);
} }
@Singleton @Singleton

View File

@@ -35,6 +35,7 @@ public class InventarioRoomDTO extends BaseSyncDTO implements EntityModelInterfa
public static final String DATA_ORA_FINE = "data_ora_fine"; public static final String DATA_ORA_FINE = "data_ora_fine";
public static final String CAUSALE = "causale"; public static final String CAUSALE = "causale";
public static final String ZONA = "zona"; public static final String ZONA = "zona";
public static final String IS_NEW = "new";
} }
/** The unique ID of the cheese. */ /** The unique ID of the cheese. */
@@ -95,6 +96,9 @@ public class InventarioRoomDTO extends BaseSyncDTO implements EntityModelInterfa
@ColumnInfo(name = Columns.ZONA) @ColumnInfo(name = Columns.ZONA)
private String zona; private String zona;
@ColumnInfo(name = Columns.IS_NEW)
private Boolean isNew = Boolean.TRUE;
@Ignore @Ignore
private List<InventarioRowRoomDTO> inventarioRowList; private List<InventarioRowRoomDTO> inventarioRowList;
@@ -235,6 +239,14 @@ public class InventarioRoomDTO extends BaseSyncDTO implements EntityModelInterfa
this.zona = zona; this.zona = zona;
} }
public Boolean isNew() {
return isNew;
}
public void setNew(Boolean aNew) {
isNew = aNew;
}
public List<InventarioRowRoomDTO> getInventarioRowList() { public List<InventarioRowRoomDTO> getInventarioRowList() {
return inventarioRowList; return inventarioRowList;
} }

View File

@@ -1,12 +1,16 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new; package it.integry.integrywmsnative.core.data_store.db.respository_new;
import android.os.Handler; import android.os.Handler;
import android.util.Log;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
@@ -17,9 +21,12 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.mapper.InventarioMapper; import it.integry.integrywmsnative.core.mapper.InventarioMapper;
import it.integry.integrywmsnative.core.model.MtbInvent; import it.integry.integrywmsnative.core.model.MtbInvent;
import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityLiveData;
public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioRoomDTO, InventarioMapper, InventarioLocalDataSource, InventarioRESTConsumer> { public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioRoomDTO, InventarioMapper, InventarioLocalDataSource, InventarioRESTConsumer> {
private final ExecutorService executorService;
private final Handler handler; private final Handler handler;
private final MutableLiveData<List<InventarioRoomDTO>> internalLiveData = new MutableLiveData<>(); private final MutableLiveData<List<InventarioRoomDTO>> internalLiveData = new MutableLiveData<>();
@@ -28,22 +35,50 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioR
public InventarioRepository(InventarioLocalDataSource localDataSource, public InventarioRepository(InventarioLocalDataSource localDataSource,
InventarioRESTConsumer remoteDataSource, InventarioRESTConsumer remoteDataSource,
InventarioMapper dataMapper, InventarioMapper dataMapper,
Handler handler) { Handler handler,
ExecutorService executorService) {
super(dataMapper, localDataSource, remoteDataSource); super(dataMapper, localDataSource, remoteDataSource);
this.handler = handler; this.handler = handler;
this.executorService = executorService;
} }
public LiveData<List<InventarioRoomDTO>> retrieve() { public LiveData<List<InventarioRoomDTO>> retrieve(Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeSynchronousRetrieveAllLive(false) localDataSource.makeSynchronousRetrieveAllLive(false)
.observeOn(Schedulers.io()) .observeOn(Schedulers.io())
.subscribe(internalLiveData::postValue); .subscribe(internalLiveData::postValue);
// refresh(onComplete, onError);
UtilityLiveData.observeOnce(internalLiveData, inventories -> {
refresh(onComplete, onError);
});
return internalLiveData; return internalLiveData;
} }
public void refresh(Runnable onComplete, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
var startRetrieve = new Date();
var remoteData = remoteDataSource.makeSynchronousRetrieveRequest();
Log.d("Timing [INVENTORIES RETRIEVE]", ((new Date().getTime() - startRetrieve.getTime()) / 1000) + " secs");
if (remoteData == null) remoteData = new ArrayList<>();
resolveFetch(remoteData, internalLiveData.getValue(),
(remoteItem, localItem) -> Objects.equals(remoteItem.getIdInventario(), localItem.getIdInventario()),
(remoteItem, localItem) -> {
remoteItem.setRemoteSyncDate(localItem.getRemoteSyncDate());
remoteItem.setNew(false);
}, onComplete, onError);
} catch (Exception e) {
onError.run(e);
}
});
}
public void insert(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) { public void insert(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeInsertRequest(inventarioDTO, localResult -> { localDataSource.makeInsertRequest(inventarioDTO, localResult -> {
if (onComplete != null) handler.post(onComplete); if (onComplete != null) handler.post(onComplete);
@@ -60,7 +95,7 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioR
}, onError); }, onError);
} }
public void delete(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError){ public void delete(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeDeleteRequest(inventarioDTO, onComplete, onError); localDataSource.makeDeleteRequest(inventarioDTO, onComplete, onError);
} }

View File

@@ -24,6 +24,7 @@ import androidx.databinding.BindingAdapter;
import androidx.databinding.BindingConversion; import androidx.databinding.BindingConversion;
import androidx.databinding.Observable; import androidx.databinding.Observable;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
import com.google.android.material.datepicker.MaterialDatePicker; import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.android.material.textfield.TextInputEditText; import com.google.android.material.textfield.TextInputEditText;

View File

@@ -1,74 +0,0 @@
package it.integry.integrywmsnative.core.exception;
import android.app.Activity;
import android.os.Environment;
import android.os.Looper;
import android.util.Log;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.view.dialogs.exception.DialogException;
public class ExceptionsHandler implements Thread.UncaughtExceptionHandler {
private final static String TAG = ExceptionsHandler.class.getSimpleName();
private final Activity context;
public static void init(Activity context) {
new ExceptionsHandler(context);
}
private ExceptionsHandler(Activity context) {
this.context = context;
//if (!BuildConfig.DEBUG) {
Thread.setDefaultUncaughtExceptionHandler(this);
//}
}
@Override
public void uncaughtException(final Thread thread, final Throwable ex) {
try {
UtilityLogger.error(new Exception(ex));
} catch (Exception e) {
Log.e(TAG, "Exception Logger failed!", e);
MainApplication.exit();
}
appendToFile(new Exception(ex));
new Thread() {
@Override
public void run() {
Looper.prepare();
DialogException.make(context, context::finish).show();
Looper.loop();
}
}.start();
}
public void appendToFile(Exception e) {
try {
File yourFile = new File(Environment.getExternalStorageDirectory(), "log.txt");
FileWriter fstream = new FileWriter(yourFile.getPath(), true);
BufferedWriter out = new BufferedWriter(fstream);
PrintWriter pWriter = new PrintWriter(out, true);
e.printStackTrace(pWriter);
}
catch (Exception ie) {
throw new RuntimeException("Could not write Exception to file", ie);
}
}
}

View File

@@ -19,9 +19,7 @@ public class MenuRESTConsumer extends _BaseRESTConsumer {
menuRESTConsumerService.retrieveMenuConfig(rootCodOpz).enqueue(new Callback<>() { menuRESTConsumerService.retrieveMenuConfig(rootCodOpz).enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<StbMenu>> call, Response<ServiceRESTResponse<StbMenu>> response) { public void onResponse(Call<ServiceRESTResponse<StbMenu>> call, Response<ServiceRESTResponse<StbMenu>> response) {
analyzeAnswer(response, "retrieveMenu", (m) -> { analyzeAnswer(response, "retrieveMenu", onComplete, onFailed);
onComplete.run(response.body().getEntity());
}, onFailed);
} }
@Override @Override

View File

@@ -1,15 +1,19 @@
package it.integry.integrywmsnative.core.rest; package it.integry.integrywmsnative.core.rest;
import android.os.Build;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateDeserializer; import it.integry.integrywmsnative.core.rest.deserializer.LocalDateDeserializer;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateTimeDeserializer; import it.integry.integrywmsnative.core.rest.deserializer.LocalDateTimeDeserializer;
import it.integry.integrywmsnative.core.rest.serializer.LocalDateSerializer; import it.integry.integrywmsnative.core.rest.serializer.LocalDateSerializer;
@@ -28,25 +32,25 @@ public class RESTBuilder {
private static final boolean ADD_LOGGER_INTERCEPTOR = false; private static final boolean ADD_LOGGER_INTERCEPTOR = false;
public static <T> T getService(final Class<T> service) { public static <T> T getService(final Class<T> service) {
return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true); return getService(service, SettingsManager.i().getServer().getProtocol(), SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true);
} }
public static <T> T getService(final Class<T> service, int timeout) { public static <T> T getService(final Class<T> service, int timeout) {
return getService(service, SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true, true, timeout); return getService(service, SettingsManager.i().getServer().getProtocol(), SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), true, true, timeout);
} }
public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors) { public static <T> T getService(final Class<T> service, String protocol, String host, int port, boolean addInterceptors) {
return getService(service, host, port, addInterceptors, true, 60); return getService(service, protocol, host, port, addInterceptors, true, 60);
} }
public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors, boolean addEmsApi) { public static <T> T getService(final Class<T> service, String protocol, String host, int port, boolean addInterceptors, boolean addEmsApi) {
return getService(service, host, port, addInterceptors, addEmsApi, 60); return getService(service, protocol, host, port, addInterceptors, addEmsApi, 60);
} }
public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors, boolean addEmsApi, int timeout) { public static <T> T getService(final Class<T> service, String protocol, String host, int port, boolean addInterceptors, boolean addEmsApi, int timeout) {
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder(); OkHttpClient.Builder clientBuilder = getDefaultHttpClient();
clientBuilder.connectTimeout(timeout, TimeUnit.SECONDS); clientBuilder.connectTimeout(timeout, TimeUnit.SECONDS);
clientBuilder.readTimeout(timeout, TimeUnit.SECONDS); clientBuilder.readTimeout(timeout, TimeUnit.SECONDS);
@@ -59,14 +63,17 @@ public class RESTBuilder {
OkHttpClient client = clientBuilder.build(); OkHttpClient client = clientBuilder.build();
String endpoint = "http://" + host + ":" + port + "/" + (addEmsApi ? "ems-api/" : ""); String endpoint = protocol + "://" + host + ":" + port + "/" + (addEmsApi ? "ems-api/" : "");
GsonBuilder builder = new GsonBuilder().setDateFormat("dd/MM/yyyy HH:mm:ss").excludeFieldsWithModifiers(Modifier.TRANSIENT); Gson gson = new GsonBuilder()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { .setDateFormat("dd/MM/yyyy HH:mm:ss")
builder.registerTypeAdapter(LocalDate.class, new LocalDateDeserializer()).registerTypeAdapter(LocalDate.class, new LocalDateSerializer()).registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer()).registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()); .excludeFieldsWithModifiers(Modifier.TRANSIENT)
} .registerTypeAdapter(LocalDate.class, new LocalDateDeserializer())
Gson gson = builder.create(); .registerTypeAdapter(LocalDate.class, new LocalDateSerializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer())
.create();
Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(gson)).baseUrl(endpoint).client(client).build(); Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(gson)).baseUrl(endpoint).client(client).build();
@@ -81,4 +88,39 @@ public class RESTBuilder {
public static int getDefaultPort() { public static int getDefaultPort() {
return SettingsManager.i().getServer().getPort(); return SettingsManager.i().getServer().getPort();
} }
public static OkHttpClient.Builder getDefaultHttpClient() {
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
}
};
SSLContext sslContext = null;
try {
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
} catch (KeyManagementException | NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
OkHttpClient.Builder client = new OkHttpClient.Builder()
.sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0])
.hostnameVerifier((hostname, session) -> true);
return client;
}
} }

View File

@@ -3,8 +3,6 @@ package it.integry.integrywmsnative.core.rest.consumers;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.IBarcodeCustomization;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean128Model;
@@ -18,15 +16,6 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer {
public void decodeEan128(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);
if (barcodeCustomization != null && barcodeCustomization.shouldForceToEan13(barcodeObj.getStringValue())) {
Ean128Model ean128Model = new Ean128Model();
ean128Model.Gtin = barcodeObj.getStringValue();
onComplete.run(ean128Model);
return;
}
String ean128 = barcodeObj.getStringValue().replaceAll("" + ((char) 29), "|"); String ean128 = barcodeObj.getStringValue().replaceAll("" + ((char) 29), "|");
BarcodeRESTConsumerService barcodeRESTConsumerService = RESTBuilder.getService(BarcodeRESTConsumerService.class); BarcodeRESTConsumerService barcodeRESTConsumerService = RESTBuilder.getService(BarcodeRESTConsumerService.class);

View File

@@ -15,6 +15,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
@@ -137,6 +139,23 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C
}); });
} }
public void editUDSRow(EditUDSRowRequestDTO editUDSRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);
colliLavorazioneRESTConsumerService.editUDSRow(editUDSRowRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<EditUDSRowResponseDTO>> call, Response<ServiceRESTResponse<EditUDSRowResponseDTO>> response) {
analyzeAnswer(response, "lavorazione/editUDSRow", data -> onComplete.run(data.getSavedMtbColr()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<EditUDSRowResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@Override @Override
public void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class); ColliLavorazioneRESTConsumerService colliLavorazioneRESTConsumerService = RESTBuilder.getService(ColliLavorazioneRESTConsumerService.class);

View File

@@ -8,6 +8,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
@@ -35,6 +37,9 @@ public interface ColliLavorazioneRESTConsumerService {
@POST("wms/lavorazione/insertUDSRow") @POST("wms/lavorazione/insertUDSRow")
Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> insertUDSRow(@Body InsertUDSRowRequestDTO insertUDSRowRequestDTO); Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> insertUDSRow(@Body InsertUDSRowRequestDTO insertUDSRowRequestDTO);
@POST("wms/lavorazione/editUDSRow")
Call<ServiceRESTResponse<EditUDSRowResponseDTO>> editUDSRow(@Body EditUDSRowRequestDTO editUDSRowRequestDTO);
@POST("wms/lavorazione/deleteUDSRow") @POST("wms/lavorazione/deleteUDSRow")
Call<ServiceRESTResponse<Void>> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO); Call<ServiceRESTResponse<Void>> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO);

View File

@@ -1,12 +1,9 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.JsonObject;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO;
@@ -19,9 +16,6 @@ import retrofit2.http.Query;
public interface ColliMagazzinoRESTConsumerService { public interface ColliMagazzinoRESTConsumerService {
@POST("wms/distribuzioneRigheCollo")
Call<ServiceRESTResponse<JsonObject>> distribuisciCollo(@Body DistribuzioneColloDTO distribuzioneCollo);
@POST("getColloByBarcode") @POST("getColloByBarcode")
Call<ServiceRESTResponse<MtbColt>> getColloByBarcode(@Query("codBarreCollo") String sscc, @Query("onlyResiduo") boolean onlyResiduo, @Query("throwExcIfNull") boolean throwExcIfNull); Call<ServiceRESTResponse<MtbColt>> getColloByBarcode(@Query("codBarreCollo") String sscc, @Query("onlyResiduo") boolean onlyResiduo, @Query("throwExcIfNull") boolean throwExcIfNull);

View File

@@ -15,6 +15,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
@@ -133,6 +135,23 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co
}); });
} }
public void editUDSRow(EditUDSRowRequestDTO editUDSRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);
colliSpedizioneRESTConsumerService.editUDSRow(editUDSRowRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<EditUDSRowResponseDTO>> call, Response<ServiceRESTResponse<EditUDSRowResponseDTO>> response) {
analyzeAnswer(response, "spedizione/editUDSRow", data -> onComplete.run(data.getSavedMtbColr()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<EditUDSRowResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRowRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class);

View File

@@ -8,6 +8,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
@@ -35,6 +37,9 @@ public interface ColliSpedizioneRESTConsumerService {
@POST("wms/spedizione/insertUDSRow") @POST("wms/spedizione/insertUDSRow")
Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> insertUDSRow(@Body InsertUDSRowRequestDTO insertUDSRowRequestDTO); Call<ServiceRESTResponse<InsertUDSRowResponseDTO>> insertUDSRow(@Body InsertUDSRowRequestDTO insertUDSRowRequestDTO);
@POST("wms/spedizione/editUDSRow")
Call<ServiceRESTResponse<EditUDSRowResponseDTO>> editUDSRow(@Body EditUDSRowRequestDTO editUDSRowRequestDTO);
@POST("wms/spedizione/deleteUDSRow") @POST("wms/spedizione/deleteUDSRow")
Call<ServiceRESTResponse<Void>> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO); Call<ServiceRESTResponse<Void>> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO);

View File

@@ -1,5 +1,7 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import androidx.annotation.NonNull;
import java.util.List; import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -9,12 +11,13 @@ import it.integry.integrywmsnative.core.model.DtbDoct;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.LoadColliDTO; import it.integry.integrywmsnative.core.rest.model.LoadColliDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.documento.RetrieveDocumentoArtsResponseDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@Singleton @Singleton
public class DocumentiRESTConsumer extends _BaseRESTConsumer { public class DocumentRESTConsumer extends _BaseRESTConsumer {
public void createDocsFromColli(List<LoadColliDTO> listColli, RunnableArgs<List<DtbDoct>> onComplete, RunnableArgs<Exception> onFailed) { public void createDocsFromColli(List<LoadColliDTO> listColli, RunnableArgs<List<DtbDoct>> onComplete, RunnableArgs<Exception> onFailed) {
@@ -48,4 +51,21 @@ public class DocumentiRESTConsumer extends _BaseRESTConsumer {
} }
public void loadDocumentoAvailableArts(String codDtip, String codMgrp, RunnableArgs<RetrieveDocumentoArtsResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
inventarioRESTConsumerService.retrieveArts(codDtip, codMgrp)
.enqueue(new Callback<>() {
@Override
public void onResponse(@NonNull Call<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> call, @NonNull Response<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> response) {
analyzeAnswer(response, "loadDocumentoArts", onComplete, onFailed);
}
@Override
public void onFailure(@NonNull Call<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> call, @NonNull Throwable t) {
onFailed.run(new Exception(t));
}
});
}
} }

View File

@@ -5,9 +5,12 @@ import java.util.List;
import it.integry.integrywmsnative.core.model.DtbDoct; import it.integry.integrywmsnative.core.model.DtbDoct;
import it.integry.integrywmsnative.core.rest.model.LoadColliDTO; import it.integry.integrywmsnative.core.rest.model.LoadColliDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.documento.RetrieveDocumentoArtsResponseDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query;
public interface DocumentiRESTConsumerService { public interface DocumentiRESTConsumerService {
@@ -17,4 +20,12 @@ public interface DocumentiRESTConsumerService {
@POST("createDocFromColli") @POST("createDocFromColli")
Call<ServiceRESTResponse<DtbDoct>> createDocFromColli(@Body LoadColliDTO listColli); Call<ServiceRESTResponse<DtbDoct>> createDocFromColli(@Body LoadColliDTO listColli);
@GET("wms/documento/arts")
Call<ServiceRESTResponse<RetrieveDocumentoArtsResponseDTO>> retrieveArts(
@Query("codDtip") String codDtip,
@Query("codMgrp") String codMgrp);
} }

View File

@@ -20,12 +20,10 @@ import retrofit2.Response;
public class GestSetupRESTConsumer extends _BaseRESTConsumer { public class GestSetupRESTConsumer extends _BaseRESTConsumer {
public void getValue(String gestName, String sectionName, String keySection, RunnableArgs<GestSetupDTO> onComplete, RunnableArgs<Exception> onFailed) { public void getValue(String gestName, String sectionName, String keySection, RunnableArgs<GestSetupDTO> onComplete, RunnableArgs<Exception> onFailed) {
getValueStatic(gestName, sectionName, keySection, onComplete, onFailed);
}
public static void getValueStatic(String gestName, String sectionName, String keySection, RunnableArgs<GestSetupDTO> onComplete, RunnableArgs<Exception> onFailed) {
GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class); GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class);
service.getGestSetupValue(gestName, sectionName, keySection).enqueue(new Callback<ServiceRESTResponse<GestSetupDTO>>() {
service.getGestSetupValue(gestName, sectionName, keySection)
.enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<GestSetupDTO>> call, Response<ServiceRESTResponse<GestSetupDTO>> response) { public void onResponse(Call<ServiceRESTResponse<GestSetupDTO>> call, Response<ServiceRESTResponse<GestSetupDTO>> response) {
analyzeAnswer(response, "GestSetup", onComplete, onFailed); analyzeAnswer(response, "GestSetup", onComplete, onFailed);
@@ -40,8 +38,8 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public static void getBooleanValue(String gestName, String sectionName, String keySection, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) { public void getBooleanValue(String gestName, String sectionName, String keySection, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) {
getValueStatic(gestName, sectionName, keySection, value -> { getValue(gestName, sectionName, keySection, value -> {
if (value != null) { if (value != null) {
onComplete.run("S".equalsIgnoreCase(value.value)); onComplete.run("S".equalsIgnoreCase(value.value));
} else onComplete.run(false); } else onComplete.run(false);
@@ -50,7 +48,7 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public static void getValueStatic(String gestName, String sectionName, String keySection, String codMdep, RunnableArgs<GestSetupDTO> onComplete, RunnableArgs<Exception> onFailed) { public void getValue(String gestName, String sectionName, String keySection, String codMdep, RunnableArgs<GestSetupDTO> onComplete, RunnableArgs<Exception> onFailed) {
GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class); GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class);
service.getGestSetupValue(gestName, sectionName, keySection, codMdep).enqueue(new Callback<ServiceRESTResponse<GestSetupDTO>>() { service.getGestSetupValue(gestName, sectionName, keySection, codMdep).enqueue(new Callback<ServiceRESTResponse<GestSetupDTO>>() {
@Override @Override
@@ -67,8 +65,8 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public static void getBooleanValue(String gestName, String sectionName, String keySection, String codMdep, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) { public void getBooleanValue(String gestName, String sectionName, String keySection, String codMdep, RunnableArgs<Boolean> onComplete, RunnableArgs<Exception> onFailed) {
getValueStatic(gestName, sectionName, keySection, codMdep, value -> { getValue(gestName, sectionName, keySection, codMdep, value -> {
if (value != null) { if (value != null) {
onComplete.run("S".equalsIgnoreCase(value.value)); onComplete.run("S".equalsIgnoreCase(value.value));
} else onComplete.run(false); } else onComplete.run(false);

View File

@@ -10,8 +10,17 @@ import retrofit2.http.Query;
public interface GiacenzaRESTConsumerService { public interface GiacenzaRESTConsumerService {
@GET("wms/giacenza/availableItems") @GET("wms/giacenza/availableItemsByPosizione")
Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItems( Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItems(
@Query("posizione") String posizione); @Query("posizione") String posizione);
@GET("wms/giacenza/availableItemsByArticolo")
Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItemsByArt(
@Query("codMart") String codMart);
@GET("wms/giacenza/availableItemsByArticolo")
Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItemsByArt(
@Query("codMart") String codMart,
@Query("partitaMag") String partitaMag);
} }

View File

@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.rest.consumers;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -42,7 +44,7 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer {
.enqueue(new Callback<>() { .enqueue(new Callback<>() {
@Override @Override
public void onResponse(@NonNull Call<ServiceRESTResponse<RetrieveInventarioArtsResponseDTO>> call, @NonNull Response<ServiceRESTResponse<RetrieveInventarioArtsResponseDTO>> response) { public void onResponse(@NonNull Call<ServiceRESTResponse<RetrieveInventarioArtsResponseDTO>> call, @NonNull Response<ServiceRESTResponse<RetrieveInventarioArtsResponseDTO>> response) {
analyzeAnswer(response, "loadInventario", onComplete, onFailed); analyzeAnswer(response, "loadInventarioArts", onComplete, onFailed);
} }
@Override @Override
@@ -52,6 +54,17 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public List<MtbInvent> makeSynchronousRetrieveRequest() throws Exception {
var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 120);
var response = inventarioRESTConsumerService.retrieve()
.execute();
var data = analyzeAnswer(response, "retrieveInventario");
if (data == null) return null;
return data.getInventories();
}
public void makeInsertRequest(MtbInvent inventarioToInsert, final Runnable onComplete, final RunnableArgs<Exception> onFailed) { public void makeInsertRequest(MtbInvent inventarioToInsert, final Runnable onComplete, final RunnableArgs<Exception> onFailed) {
var request = new InsertInventarioRequestDTO() var request = new InsertInventarioRequestDTO()
@@ -59,18 +72,18 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer {
var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 120); var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 120);
inventarioRESTConsumerService inventarioRESTConsumerService
.insert(inventarioToInsert.getIdInventario(), request) .insert(inventarioToInsert.getIdInventario(), request)
.enqueue(new Callback<>() { .enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) { public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "insertInventario", ignored -> onComplete.run(), onFailed); analyzeAnswer(response, "insertInventario", ignored -> onComplete.run(), onFailed);
} }
@Override @Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });
} }

View File

@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.inventario.InsertInventarioRequestDTO; import it.integry.integrywmsnative.core.rest.model.inventario.InsertInventarioRequestDTO;
import it.integry.integrywmsnative.core.rest.model.inventario.RetrieveInventariResponseDTO;
import it.integry.integrywmsnative.core.rest.model.inventario.RetrieveInventarioArtsResponseDTO; import it.integry.integrywmsnative.core.rest.model.inventario.RetrieveInventarioArtsResponseDTO;
import it.integry.integrywmsnative.core.rest.model.inventario.RetrieveInventarioResponseDTO; import it.integry.integrywmsnative.core.rest.model.inventario.RetrieveInventarioResponseDTO;
import retrofit2.Call; import retrofit2.Call;
@@ -12,6 +13,9 @@ import retrofit2.http.Path;
public interface InventarioRESTConsumerService { public interface InventarioRESTConsumerService {
@GET("wms/inventario/")
Call<ServiceRESTResponse<RetrieveInventariResponseDTO>> retrieve();
@GET("wms/inventario/{inventoryId}") @GET("wms/inventario/{inventoryId}")
Call<ServiceRESTResponse<RetrieveInventarioResponseDTO>> retrieve( Call<ServiceRESTResponse<RetrieveInventarioResponseDTO>> retrieve(
@Path("inventoryId") long inventoryId); @Path("inventoryId") long inventoryId);

View File

@@ -1,6 +1,5 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@@ -72,17 +71,17 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void saveTerminalinoWMS(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed) { public void saveTerminalinoWMS(SaveDTO saveDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
service.saveTerminalinoWMS(saveDTO) service.saveTerminalinoWMS(saveDTO)
.enqueue(new Callback<>() { .enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<JsonObject>> call, Response<ServiceRESTResponse<JsonObject>> response) { public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "saveTerminalinoWMS", onComplete, onFailed); analyzeAnswer(response, "saveTerminalinoWMS", data -> onComplete.run(), onFailed);
} }
@Override @Override
public void onFailure(Call<ServiceRESTResponse<JsonObject>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });

View File

@@ -1,7 +1,5 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.JsonObject;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.model.DtbOrdt;
@@ -14,7 +12,7 @@ import retrofit2.http.POST;
public interface MagazzinoRESTConsumerService { public interface MagazzinoRESTConsumerService {
@POST("SM2SaveTerminalinoWMS") @POST("SM2SaveTerminalinoWMS")
Call<ServiceRESTResponse<JsonObject>> saveTerminalinoWMS(@Body SaveDTO saveDTO); Call<ServiceRESTResponse<Void>> saveTerminalinoWMS(@Body SaveDTO saveDTO);
@POST("SM2SaveTerminalino") @POST("SM2SaveTerminalino")
Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO); Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO);

View File

@@ -101,12 +101,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
} }
public static void sendErrorLogMail(String message) { public void sendErrorLogMail(String message, Runnable onComplete, RunnableArgs<Exception> onFailed) {
sendErrorLogMail(message, null, null);
}
public static void sendErrorLogMail(String message, Runnable onComplete, RunnableArgs<Exception> onFailed) {
String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB()) ? "" : " [" + SettingsManager.i().getUserSession().getProfileDB() + "]"; String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB()) ? "" : " [" + SettingsManager.i().getUserSession().getProfileDB() + "]";
@@ -135,10 +130,10 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
} }
public static void sendMail(MailRequestDTO mailDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void sendMail(MailRequestDTO mailDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class);
service.sendMail(mailDTO).enqueue(new Callback<ServiceRESTResponse<String>>() { service.sendMail(mailDTO).enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<String>> call, Response<ServiceRESTResponse<String>> response) { public void onResponse(Call<ServiceRESTResponse<String>> call, Response<ServiceRESTResponse<String>> response) {
if (onComplete != null) onComplete.run(); if (onComplete != null) onComplete.run();

View File

@@ -15,41 +15,48 @@ import retrofit2.Response;
public abstract class _BaseRESTConsumer { public abstract class _BaseRESTConsumer {
public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) { public static <T> T analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle) throws Exception {
if (response.isSuccessful()) { if (response.isSuccessful()) {
if (response.body() != null) { if (response.body() != null) {
if (response.body().getEsito() == EsitoType.OK) { if (response.body().getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) { if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
onFailed.run(new Exception(response.body().getErrorMessage())); throw new Exception(response.body().getErrorMessage());
} else { } else {
T dataObj = response.body().getDto() != null ? T dataObj = response.body().getDto() != null ?
response.body().getDto() : response.body().getDto() :
response.body().getEntity(); response.body().getEntity();
onComplete.run(dataObj); return dataObj;
} }
} else { } else {
String errorMessage = UtilityString.isNull(response.body().getErrorMessage(), "Empty message"); String errorMessage = UtilityString.isNull(response.body().getErrorMessage(), "Empty message");
Log.e(logTitle, errorMessage); Log.e(logTitle, errorMessage);
onFailed.run(CommonRESTException.tryRecognizeException(errorMessage)); throw CommonRESTException.tryRecognizeException(errorMessage);
} }
} else { } else {
Log.e(logTitle, response.message()); Log.e(logTitle, response.message());
onFailed.run(new Exception(response.message())); throw new Exception(response.message());
} }
} else { } else {
if (response.code() == 404) { if (response.code() == 404) {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url().toString() + ")"); Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url() + ")");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")")); throw new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")");
} else if (response.code() == 550) } else if (response.code() == 550)
onFailed.run(new InvalidLicenseException()); throw new InvalidLicenseException();
else { else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message()); Log.e(logTitle, "Status " + response.code() + ": " + response.message());
onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); throw new Exception("Status " + response.code() + ": " + response.message());
} }
}
}
public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) {
try {
var data = analyzeAnswer(response, logTitle);
onComplete.run(data);
} catch (Exception e) {
onFailed.run(e);
} }
} }
@@ -94,6 +101,7 @@ public abstract class _BaseRESTConsumer {
if (response.getEsito() == EsitoType.OK) { if (response.getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) { if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) {
onFailed.run(new Exception(response.getErrorMessage())); onFailed.run(new Exception(response.getErrorMessage()));
return;
} else { } else {
T dataObj = response.getDto() != null ? T dataObj = response.getDto() != null ?
response.getDto() : response.getDto() :

View File

@@ -9,6 +9,7 @@ import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO;
import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintUDSRequestDTO;
@@ -26,5 +27,7 @@ public interface ColliScaricoRESTConsumerInterface {
void insertUDSRow(InsertUDSRowRequestDTO insertUDSRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed); void insertUDSRow(InsertUDSRowRequestDTO insertUDSRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed);
void editUDSRow(EditUDSRowRequestDTO editUDSRowRequestDTO, RunnableArgs<MtbColr> onComplete, RunnableArgs<Exception> onFailed);
void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed); void deleteUDSRow(DeleteUDSRowRequestDTO deleteUDSRequestDTO, Runnable onComplete, RunnableArgs<Exception> onFailed);
} }

View File

@@ -1,84 +0,0 @@
package it.integry.integrywmsnative.core.rest.model;
public class DistribuzioneColloDTO {
private String gestione;
private String dataCollo;
private Integer numCollo;
private String serCollo;
private String criterioDistribuzione;
public String getGestione() {
return gestione;
}
public DistribuzioneColloDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public String getDataCollo() {
return dataCollo;
}
public DistribuzioneColloDTO setDataCollo(String dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public DistribuzioneColloDTO setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public DistribuzioneColloDTO setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public String getCriterioDistribuzione() {
return criterioDistribuzione;
}
public CriterioDistribuzione getCriterioDistribuzioneEnum() {
return CriterioDistribuzione.fromString(criterioDistribuzione);
}
public DistribuzioneColloDTO setCriterioDistribuzione(String criterioDistribuzione) {
this.criterioDistribuzione = criterioDistribuzione;
return this;
}
public DistribuzioneColloDTO setCriterioDistribuzione(CriterioDistribuzione criterioDistribuzione) {
this.criterioDistribuzione = criterioDistribuzione != null ? criterioDistribuzione.getText() : null;
return this;
}
public enum CriterioDistribuzione {
UPDATE("U"), //UPDATE COLLO GIA' ESISTENTE
SPLIT_ORDINE("O"); //UPDATE COLLO GIA' ESISTENTE
private String text;
CriterioDistribuzione(String text) {
this.text = text;
}
public String getText() {
return this.text;
}
public static CriterioDistribuzione fromString(String text) {
for (CriterioDistribuzione b : CriterioDistribuzione.values()) {
if (b.text.equalsIgnoreCase(text)) return b;
}
return null;
}
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.integrywmsnative.core.rest.model;
public class MailAttachmentDTO {
private String fileName;
private String fileb64Content;
public String getFileName() {
return fileName;
}
public MailAttachmentDTO setFileName(String fileName) {
this.fileName = fileName;
return this;
}
public String getFileb64Content() {
return fileb64Content;
}
public MailAttachmentDTO setFileb64Content(String fileb64Content) {
this.fileb64Content = fileb64Content;
return this;
}
}

View File

@@ -1,5 +1,7 @@
package it.integry.integrywmsnative.core.rest.model; package it.integry.integrywmsnative.core.rest.model;
import java.util.List;
public class MailRequestDTO { public class MailRequestDTO {
private String from; private String from;
@@ -11,6 +13,7 @@ public class MailRequestDTO {
private String ccn; private String ccn;
private String subject; private String subject;
private String msgText; private String msgText;
private List<MailAttachmentDTO> attachments;
private boolean isHtml = false; private boolean isHtml = false;
private boolean isDebug = false; private boolean isDebug = false;
@@ -95,6 +98,15 @@ public class MailRequestDTO {
return this; return this;
} }
public List<MailAttachmentDTO> getAttachments() {
return attachments;
}
public MailRequestDTO setAttachments(List<MailAttachmentDTO> attachments) {
this.attachments = attachments;
return this;
}
public boolean isHtml() { public boolean isHtml() {
return isHtml; return isHtml;
} }

View File

@@ -1,22 +1,29 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto; package it.integry.integrywmsnative.core.rest.model;
import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
public class DocFromPickingDTO { import it.integry.integrywmsnative.core.model.MtbColt;
String codAnag, codVdes, tipoLista, noteDoc;
Date dataDoc; public class SaveDocFromPickingRequestDTO {
Integer numDoc; private String codAnag;
List<DatiCollo> colli; private String codVdes;
List<Pedane> pedane; private String tipoLista;
private String noteDoc;
private Date dataDoc;
private Integer numDoc;
private List<DatiCollo> colli;
private List<Pedane> pedane;
public String getCodAnag() { public String getCodAnag() {
return codAnag; return codAnag;
} }
public DocFromPickingDTO setCodAnag(String codAnag) { public SaveDocFromPickingRequestDTO setCodAnag(String codAnag) {
this.codAnag = codAnag; this.codAnag = codAnag;
return this; return this;
} }
@@ -25,7 +32,7 @@ public class DocFromPickingDTO {
return codVdes; return codVdes;
} }
public DocFromPickingDTO setCodVdes(String codVdes) { public SaveDocFromPickingRequestDTO setCodVdes(String codVdes) {
this.codVdes = codVdes; this.codVdes = codVdes;
return this; return this;
} }
@@ -34,7 +41,7 @@ public class DocFromPickingDTO {
return tipoLista; return tipoLista;
} }
public DocFromPickingDTO setTipoLista(String tipoLista) { public SaveDocFromPickingRequestDTO setTipoLista(String tipoLista) {
this.tipoLista = tipoLista; this.tipoLista = tipoLista;
return this; return this;
} }
@@ -43,7 +50,7 @@ public class DocFromPickingDTO {
return noteDoc; return noteDoc;
} }
public DocFromPickingDTO setNoteDoc(String noteDoc) { public SaveDocFromPickingRequestDTO setNoteDoc(String noteDoc) {
this.noteDoc = noteDoc; this.noteDoc = noteDoc;
return this; return this;
} }
@@ -52,7 +59,7 @@ public class DocFromPickingDTO {
return dataDoc; return dataDoc;
} }
public DocFromPickingDTO setDataDoc(Date dataDoc) { public SaveDocFromPickingRequestDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc; this.dataDoc = dataDoc;
return this; return this;
} }
@@ -61,7 +68,7 @@ public class DocFromPickingDTO {
return numDoc; return numDoc;
} }
public DocFromPickingDTO setNumDoc(Integer numDoc) { public SaveDocFromPickingRequestDTO setNumDoc(Integer numDoc) {
this.numDoc = numDoc; this.numDoc = numDoc;
return this; return this;
} }
@@ -70,11 +77,24 @@ public class DocFromPickingDTO {
return colli; return colli;
} }
public DocFromPickingDTO setColli(List<DatiCollo> colli) { public SaveDocFromPickingRequestDTO setColli(List<DatiCollo> colli) {
this.colli = colli; this.colli = colli;
return this; return this;
} }
public SaveDocFromPickingRequestDTO setColliFromMtbColts(List<MtbColt> colli) {
if(colli == null) return this;
this.colli = Stream.of(colli)
.map(x -> new DatiCollo()
.setDataCollo(x.getDataColloD())
.setSerCollo(x.getSerCollo())
.setNumCollo(x.getNumCollo())
.setGestione(x.getGestione()))
.toList();
return this;
}
public List<Pedane> getPedane() { public List<Pedane> getPedane() {
return pedane; return pedane;
} }

View File

@@ -1,10 +1,7 @@
package it.integry.integrywmsnative.core.rest.model; package it.integry.integrywmsnative.core.rest.model;
import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.utility.UtilityDate;
/** /**
* Created by GiuseppeS on 06/03/2018. * Created by GiuseppeS on 06/03/2018.
*/ */
@@ -12,7 +9,6 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
public class ServiceRESTResponse<T> { public class ServiceRESTResponse<T> {
private int esito; private int esito;
private String execDate;
private String profileDB; private String profileDB;
private String errorMessage; private String errorMessage;
@@ -24,9 +20,6 @@ public class ServiceRESTResponse<T> {
return EsitoType.fromIntValue(esito); return EsitoType.fromIntValue(esito);
} }
public Date getExecDate() {
return UtilityDate.recognizeDateWithExceptionHandler(execDate);
}
public String getProfileDB() { public String getProfileDB() {
return profileDB; return profileDB;

View File

@@ -0,0 +1,119 @@
package it.integry.integrywmsnative.core.rest.model.documento;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class DocumentoArtDTO {
private String codMart;
private String descrizione;
private String untMis;
private BigDecimal qtaCnf;
private ArrayList<String> barcode;
private boolean flagTracciabilita;
private boolean flagQtaCnfFissa;
private BigDecimal giacenza;
private boolean plu;
private BigDecimal przVendIva;
private boolean untMisDigitale;
public String getCodMart() {
return codMart;
}
public DocumentoArtDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getDescrizione() {
return descrizione;
}
public DocumentoArtDTO setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getUntMis() {
return untMis;
}
public DocumentoArtDTO setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public DocumentoArtDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public List<String> getBarcode() {
return barcode;
}
public DocumentoArtDTO setBarcode(ArrayList<String> barcode) {
this.barcode = barcode;
return this;
}
public boolean isFlagTracciabilita() {
return flagTracciabilita;
}
public DocumentoArtDTO setFlagTracciabilita(boolean flagTracciabilita) {
this.flagTracciabilita = flagTracciabilita;
return this;
}
public boolean isFlagQtaCnfFissa() {
return flagQtaCnfFissa;
}
public DocumentoArtDTO setFlagQtaCnfFissa(boolean flagQtaCnfFissa) {
this.flagQtaCnfFissa = flagQtaCnfFissa;
return this;
}
public BigDecimal getGiacenza() {
return giacenza;
}
public DocumentoArtDTO setGiacenza(BigDecimal giacenza) {
this.giacenza = giacenza;
return this;
}
public boolean isPlu() {
return plu;
}
public DocumentoArtDTO setPlu(boolean plu) {
this.plu = plu;
return this;
}
public BigDecimal getPrzVendIva() {
return przVendIva;
}
public DocumentoArtDTO setPrzVendIva(BigDecimal przVendIva) {
this.przVendIva = przVendIva;
return this;
}
public boolean isUntMisDigitale() {
return untMisDigitale;
}
public DocumentoArtDTO setUntMisDigitale(boolean untMisDigitale) {
this.untMisDigitale = untMisDigitale;
return this;
}
}

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.rest.model.documento;
import java.util.List;
public class RetrieveDocumentoArtsResponseDTO {
private List<DocumentoArtDTO> arts;
public List<DocumentoArtDTO> getArts() {
return arts;
}
}

View File

@@ -2,9 +2,11 @@ package it.integry.integrywmsnative.core.rest.model.inventario;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbUntMis;
public class InventarioArtDTO { public class InventarioArtDTO {
@@ -18,6 +20,7 @@ public class InventarioArtDTO {
private BigDecimal giacenza; private BigDecimal giacenza;
private boolean plu; private boolean plu;
private BigDecimal przVendIva; private BigDecimal przVendIva;
private boolean untMisDigitale;
public String getCodMart() { public String getCodMart() {
return codMart; return codMart;
@@ -109,7 +112,21 @@ public class InventarioArtDTO {
return this; return this;
} }
public boolean isUntMisDigitale() {
return untMisDigitale;
}
public InventarioArtDTO setUntMisDigitale(boolean untMisDigitale) {
this.untMisDigitale = untMisDigitale;
return this;
}
public MtbAart toMtbAart() { public MtbAart toMtbAart() {
MtbUntMis mtbUntMis = new MtbUntMis()
.setUntMis(getUntMis())
.setFlagDig(isUntMisDigitale() ? "S" : "N");
List<MtbUntMis> mtbUntMisList = Collections.singletonList(mtbUntMis);
return new MtbAart() return new MtbAart()
.setCodMart(getCodMart()) .setCodMart(getCodMart())
.setDescrizione(getDescrizione()) .setDescrizione(getDescrizione())
@@ -119,6 +136,7 @@ public class InventarioArtDTO {
.setQtaCnf(getQtaCnf()) .setQtaCnf(getQtaCnf())
.setPlu(isPlu() ? "S" : "N") .setPlu(isPlu() ? "S" : "N")
.setFlagTracciabilita(isFlagTracciabilita() ? "S" : "N") .setFlagTracciabilita(isFlagTracciabilita() ? "S" : "N")
.setFlagQtaCnfFissa(isFlagQtaCnfFissa() ? "S" : "N"); .setFlagQtaCnfFissa(isFlagQtaCnfFissa() ? "S" : "N")
.setMtbUntMis(mtbUntMisList);
} }
} }

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.core.rest.model.inventario;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbInvent;
public class RetrieveInventariResponseDTO {
private List<MtbInvent> inventories;
public List<MtbInvent> getInventories() {
return inventories;
}
}

View File

@@ -5,7 +5,6 @@ import it.integry.integrywmsnative.core.model.MtbColt;
public class CloseUDSRequestDTO { public class CloseUDSRequestDTO {
private boolean printSSCC; private boolean printSSCC;
private boolean enableTransferLogic;
private String orderCodMdep; private String orderCodMdep;
private MtbColt mtbColt; private MtbColt mtbColt;
@@ -18,15 +17,6 @@ public class CloseUDSRequestDTO {
return this; return this;
} }
public boolean isEnableTransferLogic() {
return enableTransferLogic;
}
public CloseUDSRequestDTO setEnableTransferLogic(boolean enableTransferLogic) {
this.enableTransferLogic = enableTransferLogic;
return this;
}
public String getOrderCodMdep() { public String getOrderCodMdep() {
return orderCodMdep; return orderCodMdep;
} }

View File

@@ -0,0 +1,50 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.model.MtbColr;
public class EditUDSRowRequestDTO {
private MtbColr sourceMtbColr;
private BigDecimal newQtaTot;
private BigDecimal newQtaCnf;
private BigDecimal newNumCnf;
public MtbColr getSourceMtbColr() {
return sourceMtbColr;
}
public EditUDSRowRequestDTO setSourceMtbColr(MtbColr sourceMtbColr) {
this.sourceMtbColr = sourceMtbColr;
return this;
}
public BigDecimal getNewQtaTot() {
return newQtaTot;
}
public EditUDSRowRequestDTO setNewQtaTot(BigDecimal newQtaTot) {
this.newQtaTot = newQtaTot;
return this;
}
public BigDecimal getNewQtaCnf() {
return newQtaCnf;
}
public EditUDSRowRequestDTO setNewQtaCnf(BigDecimal newQtaCnf) {
this.newQtaCnf = newQtaCnf;
return this;
}
public BigDecimal getNewNumCnf() {
return newNumCnf;
}
public EditUDSRowRequestDTO setNewNumCnf(BigDecimal newNumCnf) {
this.newNumCnf = newNumCnf;
return this;
}
}

View File

@@ -0,0 +1,16 @@
package it.integry.integrywmsnative.core.rest.model.uds;
import it.integry.integrywmsnative.core.model.MtbColr;
public class EditUDSRowResponseDTO {
private MtbColr savedMtbColr;
public MtbColr getSavedMtbColr() {
return savedMtbColr;
}
public EditUDSRowResponseDTO setSavedMtbColr(MtbColr savedMtbColr) {
this.savedMtbColr = savedMtbColr;
return this;
}
}

View File

@@ -32,6 +32,7 @@ public class ServerStatusChecker {
public void run() { public void run() {
if (shouldExecute && !UtilityString.isNullOrEmpty(SettingsManager.i().getServer().getHost())) { if (shouldExecute && !UtilityString.isNullOrEmpty(SettingsManager.i().getServer().getHost())) {
UtilityServer.isEmsApiAvailable( UtilityServer.isEmsApiAvailable(
SettingsManager.i().getServer().getProtocol(),
SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getHost(),
SettingsManager.i().getServer().getPort(), SettingsManager.i().getServer().getPort(),
() -> mInternalCallback.run(true), () -> mInternalCallback.run(true),

View File

@@ -7,7 +7,6 @@ import it.integry.integrywmsnative.core.model.Azienda;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
public class DBSettingsModel { public class DBSettingsModel {
@@ -22,7 +21,6 @@ public class DBSettingsModel {
private boolean flagMultiClienteOrdV; private boolean flagMultiClienteOrdV;
private boolean flagUseCodAnagAziendale; private boolean flagUseCodAnagAziendale;
private String defaultCausaleRettificaGiacenze; private String defaultCausaleRettificaGiacenze;
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
private boolean flagAskClienteInPickingLibero; private boolean flagAskClienteInPickingLibero;
private boolean flagPickLiberoAllowEmptyCliente; private boolean flagPickLiberoAllowEmptyCliente;
@@ -53,6 +51,10 @@ public class DBSettingsModel {
private String codDtipOrdTrasfV; private String codDtipOrdTrasfV;
private boolean notifyLotStatus = false; private boolean notifyLotStatus = false;
private boolean groupShippingByCommodityGroup = true;
private boolean showCodFornSpedizione = true;
private boolean flagCanCreateInventario = true;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
} }
@@ -133,15 +135,6 @@ public class DBSettingsModel {
return this; return this;
} }
public DistribuzioneColloDTO.CriterioDistribuzione getDefaultCriterioDistribuzione() {
return defaultCriterioDistribuzione;
}
public DBSettingsModel setDefaultCriterioDistribuzione(String defaultCriterioDistribuzione) {
this.defaultCriterioDistribuzione = DistribuzioneColloDTO.CriterioDistribuzione.fromString(defaultCriterioDistribuzione);
return this;
}
public boolean isFlagAskClienteInPickingLibero() { public boolean isFlagAskClienteInPickingLibero() {
return flagAskClienteInPickingLibero; return flagAskClienteInPickingLibero;
} }
@@ -386,4 +379,31 @@ public class DBSettingsModel {
this.notifyLotStatus = notifyLotStatus; this.notifyLotStatus = notifyLotStatus;
return this; return this;
} }
public boolean isGroupShippingByCommodityGroup() {
return groupShippingByCommodityGroup;
}
public DBSettingsModel setGroupShippingByCommodityGroup(boolean groupShippingByCommodityGroup) {
this.groupShippingByCommodityGroup = groupShippingByCommodityGroup;
return this;
}
public boolean isShowCodFornSpedizione() {
return showCodFornSpedizione;
}
public DBSettingsModel setShowCodFornSpedizione(boolean showCodFornSpedizione) {
this.showCodFornSpedizione = showCodFornSpedizione;
return this;
}
public boolean isFlagCanCreateInventario() {
return flagCanCreateInventario;
}
public DBSettingsModel setFlagCanCreateInventario(boolean flagCanCreateInventario) {
this.flagCanCreateInventario = flagCanCreateInventario;
return this;
}
} }

View File

@@ -341,13 +341,24 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")
.setKeySection("FLAG_NOTIFICA_STATO_PARTITA")); .setKeySection("FLAG_NOTIFICA_STATO_PARTITA"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_SHOW_COD_FORN"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_GROUP_BY_GRP_MERC"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("INVENTARIO")
.setKeySection("FLAG_CAN_CREATE_INVENTARIO"));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> { mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> {
dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(getValueFromList(list, "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", Boolean.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.setFlagMultiClienteOrdV(getValueFromList(list, "SETUP", "FLAG_MULTI_CLIENTE_ORD_VENDITA", Boolean.class));
dbSettingsModelIstance.setFlagUseCodAnagAziendale(getValueFromList(list, "SETUP", "FLAG_USE_COD_ANAG_AZIENDALE", Boolean.class)); dbSettingsModelIstance.setFlagUseCodAnagAziendale(getValueFromList(list, "SETUP", "FLAG_USE_COD_ANAG_AZIENDALE", Boolean.class));
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class));
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyCliente(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagPickLiberoAllowEmptyCliente(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class)); dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class));
@@ -372,6 +383,9 @@ public class SettingsManager {
dbSettingsModelIstance.setFilterFornitoreProd(getValueFromList(list, "PRODUZIONE", "FILTER_FORNTIORE_PROD", String.class)); dbSettingsModelIstance.setFilterFornitoreProd(getValueFromList(list, "PRODUZIONE", "FILTER_FORNTIORE_PROD", String.class));
dbSettingsModelIstance.setCodDtipOrdTrasfV(getValueFromList(list, "SPEDIZIONE", "COD_DTIP_ORD_TRASF", String.class)); dbSettingsModelIstance.setCodDtipOrdTrasfV(getValueFromList(list, "SPEDIZIONE", "COD_DTIP_ORD_TRASF", String.class));
dbSettingsModelIstance.setNotifyLotStatus(getValueFromList(list, "SPEDIZIONE", "FLAG_NOTIFICA_STATO_PARTITA", Boolean.class)); dbSettingsModelIstance.setNotifyLotStatus(getValueFromList(list, "SPEDIZIONE", "FLAG_NOTIFICA_STATO_PARTITA", Boolean.class));
dbSettingsModelIstance.setShowCodFornSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_SHOW_COD_FORN", Boolean.class, Boolean.TRUE));
dbSettingsModelIstance.setGroupShippingByCommodityGroup(getValueFromList(list, "SPEDIZIONE", "FLAG_GROUP_BY_GRP_MERC", Boolean.class, Boolean.FALSE));
dbSettingsModelIstance.setFlagCanCreateInventario(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_CREATE_INVENTARIO", Boolean.class, Boolean.TRUE));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null) if (notePerdita != null)
@@ -392,19 +406,26 @@ public class SettingsManager {
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) {
return getValueFromList(stbGestSetupList, section, keySectionName, clazz, null);
}
public static <T> T getValueFromList(List<StbGestSetup> stbGestSetupList, String section, String keySectionName, Class<T> clazz, T defaultValue) {
StbGestSetup value = Stream.of(stbGestSetupList) StbGestSetup value = Stream.of(stbGestSetupList)
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName)) .filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
.findFirstOrElse(new StbGestSetup()); .findFirstOrElse(null);
if (clazz == String.class) { if(value != null) {
return clazz.cast(value.getValue()); if (clazz == String.class) {
} else if (clazz == Boolean.class) { return clazz.cast(value.getValue());
return clazz.cast("S".equalsIgnoreCase(value.getValue())); } else if (clazz == Boolean.class) {
} else if (clazz == Integer.class && value.getValue() != null) { return clazz.cast("S".equalsIgnoreCase(value.getValue()));
return clazz.cast(Integer.parseInt(value.getValue())); } else if (clazz == Integer.class && value.getValue() != null) {
} else return null; return clazz.cast(Integer.parseInt(value.getValue()));
}
}
return defaultValue;
} }
} }

View File

@@ -20,6 +20,7 @@ public class SettingsModel {
public static class Server { public static class Server {
private String codAzienda; private String codAzienda;
private String protocol;
private String host; private String host;
private int port; private int port;
@@ -32,6 +33,15 @@ public class SettingsModel {
return this; return this;
} }
public String getProtocol() {
return protocol == null ? "http" : protocol;
}
public Server setProtocol(String protocol) {
this.protocol = protocol;
return this;
}
public String getHost() { public String getHost() {
return host; return host;
} }

View File

@@ -15,9 +15,6 @@ import java.io.File;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.FileDownloader; import it.integry.integrywmsnative.core.utility.FileDownloader;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
@@ -30,19 +27,9 @@ public class UpdatesManager {
public void init(AppCompatActivity activityContext) { public void init(AppCompatActivity activityContext) {
this.mContext = activityContext; this.mContext = activityContext;
String suffix;
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
try {
suffix = customConfiguration.getConfig(BaseCustomConfiguration.Keys.CUSTOM_DYNAMIC_VERSION_PATH);
if (suffix == null) {
suffix = "";
}
} catch (Exception e) {
suffix = "";
}
String currentVersionUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/currentVersion"; String currentVersionUrl = SettingsManager.i().getServer().getProtocol() + "://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/currentVersion";
String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release" + suffix + ".apk"; String currentDownloadUrl = SettingsManager.i().getServer().getProtocol() + "://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release.apk";
AppUpdater appUpdater = new AppUpdater(mContext) AppUpdater appUpdater = new AppUpdater(mContext)

View File

@@ -20,11 +20,7 @@ public class PermissionsHelper {
public static void askPermissions(SplashActivity activity, Runnable onPermissionsConfirmed, RunnableArgs<Boolean> onPermissionsDenied) { public static void askPermissions(SplashActivity activity, Runnable onPermissionsConfirmed, RunnableArgs<Boolean> onPermissionsDenied) {
List<String> permissionsToAsk = new ArrayList<>(); List<String> permissionsToAsk = new ArrayList<>();
permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE);
permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
permissionsToAsk.add(Manifest.permission.CAMERA); permissionsToAsk.add(Manifest.permission.CAMERA);
//permissionsToAsk.add(Manifest.permission.INTERNET);
//permissionsToAsk.add(Manifest.permission.ACCESS_WIFI_STATE);
if(Build.VERSION.SDK_INT >= 23) { if(Build.VERSION.SDK_INT >= 23) {
@@ -34,6 +30,15 @@ public class PermissionsHelper {
permissionsToAsk.add(Manifest.permission.BLUETOOTH_CONNECT); permissionsToAsk.add(Manifest.permission.BLUETOOTH_CONNECT);
} }
if(Build.VERSION.SDK_INT < 33) {
permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE);
permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
} else {
permissionsToAsk.add(Manifest.permission.READ_MEDIA_IMAGES);
permissionsToAsk.add(Manifest.permission.READ_MEDIA_AUDIO);
permissionsToAsk.add(Manifest.permission.READ_MEDIA_VIDEO);
}
String[] permissionArray = new String[permissionsToAsk.size()]; String[] permissionArray = new String[permissionsToAsk.size()];

View File

@@ -43,10 +43,10 @@ public class UtilityDate {
public static final String DMY_HUMAN_LONG = "dd MMMM yyyy"; public static final String DMY_HUMAN_LONG = "dd MMMM yyyy";
} }
public static Date recognizeDateWithExceptionHandler(String dateString) { public static Date recognizeDateWithExceptionHandler(String dateString) {
try{ try {
return UtilityDate.recognizeDate(dateString); return UtilityDate.recognizeDate(dateString);
} catch (ParseException | DateNotRecognizedException | TimeNotRecognizedException pex){ } catch (ParseException | DateNotRecognizedException | TimeNotRecognizedException pex) {
UtilityLogger.error(pex); UtilityLogger.error(pex);
return null; return null;
} }
@@ -64,9 +64,9 @@ public class UtilityDate {
char dateSeparator; char dateSeparator;
String onlyDateSubstring = dateString.substring(0, 10); String onlyDateSubstring = dateString.substring(0, 10);
if(onlyDateSubstring.contains("/")) dateSeparator = '/'; if (onlyDateSubstring.contains("/")) dateSeparator = '/';
else if(onlyDateSubstring.contains("-")) dateSeparator = '-'; else if (onlyDateSubstring.contains("-")) dateSeparator = '-';
else if(onlyDateSubstring.contains(".")) dateSeparator = '.'; else if (onlyDateSubstring.contains(".")) dateSeparator = '.';
else throw new DateNotRecognizedException(dateString); else throw new DateNotRecognizedException(dateString);
String dateFormatString = (dateString.charAt(2) == dateSeparator) String dateFormatString = (dateString.charAt(2) == dateSeparator)
@@ -74,13 +74,13 @@ public class UtilityDate {
: "yyyy" + dateSeparator + "MM" + dateSeparator + "dd"; : "yyyy" + dateSeparator + "MM" + dateSeparator + "dd";
if(dateString.length() > 10){ if (dateString.length() > 10) {
char timeSeparator; char timeSeparator;
String onlyTimeSubstring = dateString.substring(10, 14); String onlyTimeSubstring = dateString.substring(10, 14);
if(onlyTimeSubstring.contains("-")) timeSeparator = '-'; if (onlyTimeSubstring.contains("-")) timeSeparator = '-';
else if(onlyTimeSubstring.contains(":")) timeSeparator = ':'; else if (onlyTimeSubstring.contains(":")) timeSeparator = ':';
else throw new TimeNotRecognizedException(dateString); else throw new TimeNotRecognizedException(dateString);
String timeFormatString = "HH" + timeSeparator + "mm" + timeSeparator + "ss"; String timeFormatString = "HH" + timeSeparator + "mm" + timeSeparator + "ss";
@@ -99,12 +99,11 @@ public class UtilityDate {
public static String formatDate(Date dateToFormat, String format) { public static String formatDate(Date dateToFormat, String format) {
if(dateToFormat != null) { if (dateToFormat != null) {
SimpleDateFormat sdf = new SimpleDateFormat(format); SimpleDateFormat sdf = new SimpleDateFormat(format);
//sdf.setTimeZone(TimeZone.getTimeZone("GMT")); //sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
return sdf.format(dateToFormat); return sdf.format(dateToFormat);
} } else return null;
else return null;
} }
@@ -116,7 +115,7 @@ public class UtilityDate {
public static Date getDateInstance(boolean removeTime) { public static Date getDateInstance(boolean removeTime) {
var calendar = getCalendarInstance(); var calendar = getCalendarInstance();
if(removeTime) { if (removeTime) {
calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.SECOND, 0);
@@ -131,8 +130,6 @@ public class UtilityDate {
} }
public static String formatDate(LocalDate dateToFormat, String format) { public static String formatDate(LocalDate dateToFormat, String format) {
if (dateToFormat != null) { if (dateToFormat != null) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
@@ -185,7 +182,6 @@ public class UtilityDate {
} }
public static LocalDate getNow() { public static LocalDate getNow() {
return Instant.now() return Instant.now()
.atZone(currentZone) .atZone(currentZone)
@@ -197,6 +193,7 @@ public class UtilityDate {
.atZone(currentZone) .atZone(currentZone)
.toLocalDateTime(); .toLocalDateTime();
} }
public static LocalDate timeToLocalDate(long time, @Nullable String timezone) { public static LocalDate timeToLocalDate(long time, @Nullable String timezone) {
return Instant.ofEpochSecond(time) return Instant.ofEpochSecond(time)
.atZone(timezone == null ? currentZone : ZoneId.of(timezone)) .atZone(timezone == null ? currentZone : ZoneId.of(timezone))
@@ -210,7 +207,6 @@ public class UtilityDate {
} }
public static long localDateTimeToTime(LocalDateTime localDateTime, @Nullable String timezone) { public static long localDateTimeToTime(LocalDateTime localDateTime, @Nullable String timezone) {
return localDateTime return localDateTime
.atZone(timezone == null ? currentZone : ZoneId.of(timezone)) .atZone(timezone == null ? currentZone : ZoneId.of(timezone))

View File

@@ -7,10 +7,6 @@ import it.integry.integrywmsnative.BuildConfig;
public class UtilityLogger { public class UtilityLogger {
public static void trace(String message) {
Logger.d(message, getPreviousStackTraceElement());
}
public static void info(String message) { public static void info(String message) {
Logger.i(message); Logger.i(message);
} }

View File

@@ -7,8 +7,8 @@ import java.net.SocketAddress;
import it.integry.integrywmsnative.core.exception.InvalidLicenseException; import it.integry.integrywmsnative.core.exception.InvalidLicenseException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.gest.login.exception.ServerNotReachableException; import it.integry.integrywmsnative.gest.login.exception.ServerNotReachableException;
import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
@@ -38,16 +38,18 @@ public class UtilityServer {
}).start(); }).start();
} }
public static void isEmsApiAvailable(final String serverAddress, final int serverTCPport, final Runnable onComplete, final RunnableArgs<Exception> onFailed) { public static void isEmsApiAvailable(final String protocol, final String serverAddress, final int serverTCPport, final Runnable onComplete, final RunnableArgs<Exception> onFailed) {
new Thread(() -> { new Thread(() -> {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder() Request request = new Request.Builder()
.url(String.format("http://%s:%d/ems-api/system/ok", serverAddress, serverTCPport)) .url(String.format("%s://%s:%d/ems-api/system/ok", protocol, serverAddress, serverTCPport))
.build(); .build();
try { try {
Response response = client.newCall(request).execute(); Response response = RESTBuilder.getDefaultHttpClient().build()
.newCall(request)
.execute();
response.close(); response.close();
if (response.code() == 200) onComplete.run(); if (response.code() == 200) onComplete.run();
@@ -55,7 +57,8 @@ public class UtilityServer {
onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, null)); onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, null));
else if (response.code() == 550) else if (response.code() == 550)
onFailed.run(new InvalidLicenseException()); onFailed.run(new InvalidLicenseException());
else onFailed.run(new Exception("Errore non identificato (STATUS: " + response.code() + ")")); else
onFailed.run(new Exception("Errore non identificato (STATUS: " + response.code() + ")"));
} catch (IOException e) { } catch (IOException e) {
onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, e)); onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, e));
} }

View File

@@ -89,6 +89,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
setRetainInstance(true);
if (savedInstanceState != null && savedInstanceState.containsKey("mToolbar")) if (savedInstanceState != null && savedInstanceState.containsKey("mToolbar"))
mToolbar = DataCache.retrieveItem(savedInstanceState.getString("mToolbar")); mToolbar = DataCache.retrieveItem(savedInstanceState.getString("mToolbar"));

View File

@@ -335,13 +335,11 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection // Handle item selection
switch (item.getItemId()) { if (item.getItemId() == R.id.action_filter) {
case R.id.action_filter: showOrderByDialog();
showOrderByDialog(); return true;
return true;
default:
return super.onOptionsItemSelected(item);
} }
return super.onOptionsItemSelected(item);
} }
private void initVars() { private void initVars() {
@@ -752,11 +750,11 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
public void onLUPrintError(Exception ex, Runnable onComplete) { public void onLUPrintError(Exception ex, Runnable onComplete) {
this.onLoadingEnded(); this.onLoadingEnded();
DialogSimpleMessageView.makeErrorDialog( DialogSimpleMessageView.makeErrorDialog(
new SpannableString(ex.getMessage()), new SpannableString(ex.getMessage()),
null, null,
null, null,
R.string.button_ignore_print, R.string.button_ignore_print,
onComplete) onComplete)
.show(getSupportFragmentManager(), "tag"); .show(getSupportFragmentManager(), "tag");
} }

View File

@@ -20,7 +20,6 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.exception.AlreadyUsedAnonymousLabelException; import it.integry.integrywmsnative.core.exception.AlreadyUsedAnonymousLabelException;
import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneException; import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneException;
import it.integry.integrywmsnative.core.exception.InvalidOrderTypeException;
import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException; import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException; import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
@@ -126,18 +125,13 @@ public class AccettazionePickingViewModel {
.distinctBy(x -> x) .distinctBy(x -> x)
.toList(); .toList();
if (foundGestioni != null) { if (foundGestioni.size() == 1) {
if (isOrdTrasf && (foundGestioni.get(0) == GestioneEnum.PRODUZIONE || foundGestioni.get(0) == GestioneEnum.LAVORAZIONE)) {
if (foundGestioni.size() == 1) { defaultGestioneOfUL = GestioneEnum.ACQUISTO;
if (isOrdTrasf && (foundGestioni.get(0) == GestioneEnum.PRODUZIONE || foundGestioni.get(0) == GestioneEnum.LAVORAZIONE)) { } else
defaultGestioneOfUL = GestioneEnum.ACQUISTO; defaultGestioneOfUL = foundGestioni.get(0) == GestioneEnum.PRODUZIONE ? GestioneEnum.LAVORAZIONE : foundGestioni.get(0);
} else
defaultGestioneOfUL = foundGestioni.get(0) == GestioneEnum.PRODUZIONE ? GestioneEnum.LAVORAZIONE : foundGestioni.get(0);
} else {
this.sendError(new InvalidLUMultiGestioneException());
}
} else { } else {
this.sendError(new InvalidOrderTypeException()); this.sendError(new InvalidLUMultiGestioneException());
} }
} }

View File

@@ -27,12 +27,12 @@ import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper
import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding; import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormActivity; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormActivity;
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter; import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter;
import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel; import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel;
@@ -70,6 +70,7 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
setRetainInstance(true);
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_doc_interni, container, false); mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_doc_interni, container, false);
MainApplication.appComponent MainApplication.appComponent
@@ -114,28 +115,23 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
} }
@Override @Override
public void onDocDetailsChanged(DialogSelectDocInfoViewModel selection) { public void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection) {
if (selection.isInputValid()) { mViewModel.setSelectedDocDetails(selection);
mViewModel.setSelectedDocDetails(selection);
mBinding.mainFab.setVisibility(View.VISIBLE);
} else {
mBinding.mainFab.setVisibility(View.GONE);
}
if (selection.requiresFornitore()) { if (selection.isFornitoreRequired()) {
mBinding.codAnagContainer.setVisibility(View.VISIBLE); mBinding.codAnagContainer.setVisibility(View.VISIBLE);
} else { } else {
mBinding.codAnagContainer.setVisibility(View.GONE); mBinding.codAnagContainer.setVisibility(View.GONE);
} }
if (selection.getSelectedGruppoArt() != null) { if (selection.getGruppoArt() != null) {
mBinding.mtbGrpContainer.setVisibility(View.VISIBLE); mBinding.mtbGrpContainer.setVisibility(View.VISIBLE);
} else { } else {
mBinding.mtbGrpContainer.setVisibility(View.GONE); mBinding.mtbGrpContainer.setVisibility(View.GONE);
} }
if (selection.requiresDocData()) { if (selection.isDocumentRequired()) {
mBinding.docContainer.setVisibility(View.VISIBLE); mBinding.docContainer.setVisibility(View.VISIBLE);
mBinding.document.setText(Html.fromHtml(getString(R.string.doc_testata, String.valueOf(selection.getNumDoc()), UtilityDate.formatDate(selection.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)))); mBinding.document.setText(Html.fromHtml(getString(R.string.doc_testata, String.valueOf(selection.getNumDoc()), UtilityDate.formatDate(selection.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))));
} else { } else {
@@ -156,16 +152,12 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
public void selectDocInfo() { public void selectDocInfo() {
if (this.dialogInitialized) { if (this.dialogInitialized) {
DialogSelectDocInfoView.newInstance( DialogSelectDocInfoView.newInstance(
mDocInterniSetupDTO, mDocInterniSetupDTO,
this.mViewModel.dtbTipi.getValue(), this::onDocDetailsChanged,
this.mViewModel.mtbGrup.getValue(), this::popMe)
this.mViewModel.fornitore.getValue(), .show(requireActivity().getSupportFragmentManager(), "tag");
this.mViewModel.dataDoc.getValue(),
this.mViewModel.numDoc.getValue(),
this.mViewModel.note.getValue(),
this::onDocDetailsChanged
).show(requireActivity().getSupportFragmentManager(), "tag");
} }
} }
@@ -200,7 +192,8 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment,
} }
@Override @Override
public void onDocumentEditRequest(SqlMtbColt document, GrigliaArticoliDTO arts) { public void onDocumentEditRequest(SqlMtbColt document, List<DocumentoArtDTO> arts) {
requireActivity().startActivity(DocInterniEditFormActivity.newInstance(requireActivity(), document, arts, mViewModel.getTipoDoc())); requireActivity()
.startActivity(DocInterniEditFormActivity.newInstance(requireActivity(), document, arts, mViewModel.getTipoDoc()));
} }
} }

View File

@@ -3,14 +3,15 @@ package it.integry.integrywmsnative.gest.contab_doc_interni;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
@Module(subcomponents = DocInterniComponent.class) @Module(subcomponents = DocInterniComponent.class)
public class DocInterniModule { public class DocInterniModule {
@Provides @Provides
DocInterniViewModel docInterniViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColtRepository mtbColtRepository) { DocInterniViewModel docInterniViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColtRepository mtbColtRepository, DocumentRESTConsumer documentRESTConsumer) {
return new DocInterniViewModel(docInterniRESTConsumer,mtbColtRepository); return new DocInterniViewModel(docInterniRESTConsumer,mtbColtRepository, documentRESTConsumer);
} }
} }

View File

@@ -14,29 +14,31 @@ import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper
import it.integry.integrywmsnative.core.di.BindableInteger; import it.integry.integrywmsnative.core.di.BindableInteger;
import it.integry.integrywmsnative.core.exception.NoDocTypeSelectedException; import it.integry.integrywmsnative.core.exception.NoDocTypeSelectedException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
public class DocInterniViewModel { public class DocInterniViewModel {
@Inject private final MtbColtRepository documentRepository;
MtbColtRepository documentRepository; private final DocInterniRESTConsumer docInterniRESTConsumer;
private final DocumentRESTConsumer documentRESTConsumer;
private Listener mListener; private Listener mListener;
private final DocInterniRESTConsumer mDocInterniRESTConsumer;
private boolean productsFetched = true; private boolean productsFetched = true;
private boolean docsFetched = true; private boolean docsFetched = true;
private int nextNumCollo = 0; private int nextNumCollo = 0;
private GrigliaArticoliDTO productsList; private List<DocumentoArtDTO> availableArts;
private final MutableLiveData<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>(); private final MutableLiveData<List<DocInternoWrapper>> mDocsList = new MutableLiveData<>();
public final MutableLiveData<TipiDocDTO> dtbTipi = new MutableLiveData<>(); public final MutableLiveData<TipoDocDTO> dtbTipi = new MutableLiveData<>();
public final MutableLiveData<GruppiArticoloDTO> mtbGrup = new MutableLiveData<>(); public final MutableLiveData<GruppoArticoloDTO> mtbGrup = new MutableLiveData<>();
public final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>(); public final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>();
public final MutableLiveData<Date> dataDoc = new MutableLiveData<>(); public final MutableLiveData<Date> dataDoc = new MutableLiveData<>();
public final MutableLiveData<String> numDoc = new MutableLiveData<>(); public final MutableLiveData<String> numDoc = new MutableLiveData<>();
@@ -44,21 +46,24 @@ public class DocInterniViewModel {
public final BindableInteger artsSize = new BindableInteger(0); public final BindableInteger artsSize = new BindableInteger(0);
@Inject @Inject
public DocInterniViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColtRepository documentRepository) { public DocInterniViewModel(DocInterniRESTConsumer docInterniRESTConsumer,
mDocInterniRESTConsumer = docInterniRESTConsumer; MtbColtRepository documentRepository,
DocumentRESTConsumer documentRESTConsumer) {
this.docInterniRESTConsumer = docInterniRESTConsumer;
this.documentRepository = documentRepository; this.documentRepository = documentRepository;
this.documentRESTConsumer = documentRESTConsumer;
this.mDocsList.setValue(new ArrayList<>()); this.mDocsList.setValue(new ArrayList<>());
} }
public void init() { public void init() {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
// new Thread(() -> {
mDocInterniRESTConsumer.getDocInterniSetup(returnDto -> { docInterniRESTConsumer.getDocInterniSetup(returnDto -> {
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
this.mListener.onDocInterniSetupFetched(returnDto); this.mListener.onDocInterniSetupFetched(returnDto);
}, this::sendError); }, this::sendError);
// }).start();
} }
private void sendOnLoadingStarted() { private void sendOnLoadingStarted() {
@@ -82,29 +87,29 @@ public class DocInterniViewModel {
return mDocsList; return mDocsList;
} }
public void setSelectedDocDetails(DialogSelectDocInfoViewModel selection) { public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection) {
this.fornitore.postValue(selection.getSelectedFornitore()); this.fornitore.postValue(selection.getFornitore());
this.mtbGrup.postValue(selection.getSelectedGruppoArt()); this.dtbTipi.postValue(selection.getTipoDoc());
this.mtbGrup.postValue(selection.getGruppoArt());
this.dataDoc.postValue(selection.getDataDoc()); this.dataDoc.postValue(selection.getDataDoc());
this.numDoc.postValue(selection.getNumDoc()); this.numDoc.postValue(selection.getNumDoc() != null ? selection.getNumDoc().toString() : null);
this.note.postValue(selection.getNote()); this.note.postValue(selection.getNote());
if (selection.getSelectedTipoDoc() != null) {
this.dtbTipi.postValue(selection.getSelectedTipoDoc());
}
} }
public void fetchProducts() { public void fetchProducts() {
this.productsFetched = false; this.productsFetched = false;
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
mDocInterniRESTConsumer.fetchProducts(this.getCodDtip(), this.getCodMgrp(), returnDto -> {
documentRESTConsumer.loadDocumentoAvailableArts(this.getCodDtip(), this.getCodMgrp(), data -> {
this.productsFetched = true; this.productsFetched = true;
this.productsList = returnDto; this.availableArts = data.getArts();
this.artsSize.set(returnDto.getGrigliaAcquistiChild().size()); this.artsSize.set(this.availableArts.size());
if (this.docsFetched) {
if (this.docsFetched)
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
}
}, this::sendError); }, this::sendError);
} }
@@ -140,7 +145,7 @@ public class DocInterniViewModel {
return this.dtbTipi.getValue().getCodDtip(); return this.dtbTipi.getValue().getCodDtip();
} }
public TipiDocDTO getTipoDoc() { public TipoDocDTO getTipoDoc() {
if (this.dtbTipi.getValue() == null) { if (this.dtbTipi.getValue() == null) {
return null; return null;
} }
@@ -155,7 +160,7 @@ public class DocInterniViewModel {
} }
public void editDocument(SqlMtbColt document) { public void editDocument(SqlMtbColt document) {
this.mListener.onDocumentEditRequest(document, productsList); this.mListener.onDocumentEditRequest(document, availableArts);
} }
public void newDocument() { public void newDocument() {
@@ -197,9 +202,9 @@ public class DocInterniViewModel {
void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO); void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO);
void onDocDetailsChanged(DialogSelectDocInfoViewModel selection); void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection);
void onDocumentEditRequest(SqlMtbColt document, GrigliaArticoliDTO arts); void onDocumentEditRequest(SqlMtbColt document, List<DocumentoArtDTO> arts);
} }

View File

@@ -10,7 +10,5 @@ public interface DialogSelectDocInfoComponent {
DialogSelectDocInfoComponent create(); DialogSelectDocInfoComponent create();
} }
void inject(DialogSelectDocInfoView dialogSelectDocInfoView); void inject(DialogSelectDocInfoView dialogSelectDocInfoView);
}
}

View File

@@ -1,17 +1,14 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
@Module(subcomponents = DialogSelectDocInfoComponent.class) @Module(subcomponents = DialogSelectDocInfoComponent.class)
public class DialogSelectDocInfoModule { public class DialogSelectDocInfoModule {
@Singleton
@Provides @Provides
DialogSelectDocInfoViewModel dialogSelectMgrpDtipPairViewModel() { DialogSelectDocInfoViewModel providesDialogDialogSelectDocInfoNewViewViewModel() {
return new DialogSelectDocInfoViewModel(); return new DialogSelectDocInfoViewModel();
} }
} }

View File

@@ -0,0 +1,102 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import java.util.Date;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
public class DialogSelectDocInfoResponseDTO {
private TipoDocDTO tipoDoc;
private GruppoArticoloDTO gruppoArt;
private FornitoreDTO fornitore;
private Date dataDoc;
private Integer numDoc;
private String note;
private boolean fornitoreRequired;
private boolean documentRequired;
private boolean noteRequired;
public TipoDocDTO getTipoDoc() {
return tipoDoc;
}
public DialogSelectDocInfoResponseDTO setTipoDoc(TipoDocDTO tipoDoc) {
this.tipoDoc = tipoDoc;
return this;
}
public GruppoArticoloDTO getGruppoArt() {
return gruppoArt;
}
public DialogSelectDocInfoResponseDTO setGruppoArt(GruppoArticoloDTO gruppoArt) {
this.gruppoArt = gruppoArt;
return this;
}
public FornitoreDTO getFornitore() {
return fornitore;
}
public DialogSelectDocInfoResponseDTO setFornitore(FornitoreDTO fornitore) {
this.fornitore = fornitore;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public DialogSelectDocInfoResponseDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public Integer getNumDoc() {
return numDoc;
}
public DialogSelectDocInfoResponseDTO setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
return this;
}
public String getNote() {
return note;
}
public DialogSelectDocInfoResponseDTO setNote(String note) {
this.note = note;
return this;
}
public boolean isFornitoreRequired() {
return fornitoreRequired;
}
public DialogSelectDocInfoResponseDTO setFornitoreRequired(boolean fornitoreRequired) {
this.fornitoreRequired = fornitoreRequired;
return this;
}
public boolean isDocumentRequired() {
return documentRequired;
}
public DialogSelectDocInfoResponseDTO setDocumentRequired(boolean documentRequired) {
this.documentRequired = documentRequired;
return this;
}
public boolean isNoteRequired() {
return noteRequired;
}
public DialogSelectDocInfoResponseDTO setNoteRequired(boolean noteRequired) {
this.noteRequired = noteRequired;
return this;
}
}

View File

@@ -1,240 +1,242 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil; import androidx.appcompat.app.AlertDialog;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.Date; import java.util.Date;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.databinding.DialogSelectDocInfoBinding; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; import it.integry.integrywmsnative.databinding.DialogSelectDocInfoViewBinding;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_FornitoreAdapter;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_GroupArtAdapter;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_NoteAdapter;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_TipoDocAdapter;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.FornitoreRequiredException;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.NoteRequiredException;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.TipoDocRequiredException;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
public class DialogSelectDocInfoView extends BaseDialogFragment implements DialogSelectDocInfoViewModel.Listener { public class DialogSelectDocInfoView extends BaseDialogFragment {
@Inject @Inject
DialogSelectDocInfoViewModel mViewModel; DialogSelectDocInfoViewModel mViewModel;
private Context mCurrentContext;
private DialogSelectDocInfoViewBinding mBindings;
private Context mContext;
private final DocInterniSetupDTO mDocInputData;
private final RunnableArgs<DialogSelectDocInfoResponseDTO> onConfirm;
private final Runnable onAbort;
public BindableString codDtip = new BindableString(); public ObservableField<TipoDocDTO> selectedTipoDoc = new ObservableField<>();
public BindableString codMgrp = new BindableString(); public ObservableField<GruppoArticoloDTO> selectedGroupArt = new ObservableField<>();
public BindableString codAnag = new BindableString(); public ObservableField<FornitoreDTO> selectedFornitore = new ObservableField<>();
public BindableString numDoc = new BindableString(); public ObservableField<String> selectedNumDoc = new ObservableField<>();
public BindableString note = new BindableString(); public ObservableField<Date> selectedDataDoc = new ObservableField<>();
public ObservableField<Date> dataDoc = new ObservableField<>(); public ObservableField<String> selectedNote = new ObservableField<>();
private ArrayAdapter<String> arrayAdapterCodDtips; public ObservableField<Boolean> isFornitoreRequired = new ObservableField<>();
private ArrayAdapter<String> arrayAdapterCodMgrps; public ObservableField<Boolean> isDocumentRequired = new ObservableField<>();
private ArrayAdapter<String> arrayAdapterCodAnags; public ObservableField<Boolean> isNoteRequired = new ObservableField<>();
private ArrayAdapter<String> arrayAdapterNote;
private DialogSelectDocInfoBinding mBindings;
private final RunnableArgs<DialogSelectDocInfoViewModel> currentOnFilterDone; public static DialogSelectDocInfoView newInstance(DocInterniSetupDTO docInputData,
private final DocInterniSetupDTO docInterniSetupDTO; RunnableArgs<DialogSelectDocInfoResponseDTO> onConfirm,
private final TipiDocDTO selectedDtip; Runnable onAbort) {
private final GruppiArticoloDTO selectedGrp; return new DialogSelectDocInfoView(docInputData, onConfirm, onAbort);
private final FornitoreDTO selectedAnag;
private final Date selectedDataDoc;
private final String selectedNumDoc;
private final String selectedNote;
public static DialogSelectDocInfoView newInstance(
DocInterniSetupDTO docInterniSetupDTO,
TipiDocDTO tipiDocDTO,
GruppiArticoloDTO gruppiArticoloDTO,
FornitoreDTO fornitoreDTO,
Date dataDoc,
String numDoc,
String note,
RunnableArgs<DialogSelectDocInfoViewModel> onDismiss
) {
return new DialogSelectDocInfoView(docInterniSetupDTO, tipiDocDTO, gruppiArticoloDTO, fornitoreDTO, dataDoc, numDoc,note, onDismiss);
} }
private DialogSelectDocInfoView(DocInterniSetupDTO docInputData,
private DialogSelectDocInfoView(DocInterniSetupDTO docInterniSetupDTO, RunnableArgs<DialogSelectDocInfoResponseDTO> onConfirm,
TipiDocDTO tipiDocDTO, Runnable onAbort) {
GruppiArticoloDTO gruppiArticoloDTO,
FornitoreDTO fornitoreDTO,
Date dataDoc,
String numDoc,
String note,
RunnableArgs<DialogSelectDocInfoViewModel> onDismiss) {
super(); super();
currentOnFilterDone = onDismiss;
this.docInterniSetupDTO = docInterniSetupDTO; this.mDocInputData = docInputData;
selectedDtip = tipiDocDTO; this.onConfirm = onConfirm;
selectedGrp = gruppiArticoloDTO; this.onAbort = onAbort;
selectedDataDoc = dataDoc;
selectedNumDoc = numDoc;
selectedNote = note;
selectedAnag = fornitoreDTO;
} }
@NonNull
@Override @Override
public void onDismiss(@NonNull DialogInterface dialog) { public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
super.onDismiss(dialog); this.mContext = requireContext();
if (currentOnFilterDone != null) currentOnFilterDone.run(mViewModel);
}
@Nullable MainApplication.appComponent
@Override .dialogSelectDocInfoNewViewComponent()
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
this.mCurrentContext = this.requireActivity();
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_select_doc_info, container, false);
mBindings.setLifecycleOwner(this);
MainApplication
.appComponent
.dialogSelectMgrpDtipPairComponent()
.create() .create()
.inject(this); .inject(this);
mViewModel.init(docInterniSetupDTO);
mViewModel.setListeners(this); mBindings = DialogSelectDocInfoViewBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this);
mBindings.setView(this); mBindings.setView(this);
mBindings.setViewmodel(mViewModel);
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); mViewModel.setFornitori(mDocInputData.getFornitori());
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
initView();
var cancelable = true;
mBindings.positiveBtn.setOnClickListener(view -> { var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
if (this.isInputValid()) { .setView(mBindings.getRoot())
getDialog().dismiss(); .setCancelable(cancelable)
.setPositiveButton(R.string.confirm, (dialog, which) -> {
//Volutamente vuoto
})
.setNegativeButton(R.string.abort, (dialog, which) -> {
//Volutamente vuoto
})
.create();
alertDialog.setOnShowListener(this);
alertDialog.setCanceledOnTouchOutside(cancelable);
return alertDialog;
}
@Override
public void onShow(DialogInterface dialogInterface) {
super.onShow(dialogInterface);
var alertDialog = ((AlertDialog) dialogInterface);
var positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
positiveButton.setOnClickListener(view -> {
try {
mBindings.inputCodDtip.setErrorEnabled(false);
mBindings.inputCodDtip.setError(null);
mBindings.inputCodAnagForn.setErrorEnabled(false);
mBindings.inputCodAnagForn.setError(null);
mBindings.inputNumDocLayout.setErrorEnabled(false);
mBindings.inputNumDoc.setError(null);
mBindings.inputDataDocLayout.setErrorEnabled(false);
mBindings.inputDataDoc.setError(null);
mBindings.inputNoteLayout.setErrorEnabled(false);
mBindings.inputNoteLayout.setError(null);
mViewModel.validate();
alertDialog.dismiss();
if (this.onConfirm != null)
this.onConfirm.run(new DialogSelectDocInfoResponseDTO()
.setTipoDoc(selectedTipoDoc.get())
.setFornitore(selectedFornitore.get())
.setGruppoArt(selectedGroupArt.get())
.setDataDoc(selectedDataDoc.get())
.setNumDoc(!UtilityString.isNullOrEmpty(selectedNumDoc.get()) ? Integer.parseInt(selectedNumDoc.get()) : null)
.setNote(selectedNote.get()));
} catch (TipoDocRequiredException tipoDocRequiredException) {
mBindings.inputCodDtip.setErrorEnabled(true);
mBindings.inputCodDtip.setError("Campo richiesto");
} catch (FornitoreRequiredException fornitoreRequiredException) {
mBindings.inputCodAnagForn.setErrorEnabled(true);
mBindings.inputCodAnagForn.setError("Campo richiesto");
} catch (DocumentRequiredException documentRequiredException) {
mBindings.inputNumDocLayout.setErrorEnabled(true);
mBindings.inputNumDocLayout.setError("Campo richiesto");
mBindings.inputDataDocLayout.setErrorEnabled(true);
mBindings.inputDataDocLayout.setError("Campo richiesto");
} catch (NoteRequiredException noteRequiredException) {
mBindings.inputNoteLayout.setErrorEnabled(true);
mBindings.inputNoteLayout.setError("Campo richiesto");
} }
}); });
return mBindings.getRoot(); var negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE);
negativeButton.setOnClickListener(view -> {
alertDialog.dismiss();
if (this.onAbort != null) this.onAbort.run();
});
this.initBindings();
this.initAdapters();
} }
private void initView() {
initArrayAdapters();
initBindables();
if (selectedDtip != null) { private void initBindings() {
codDtip.set(selectedDtip.getLabel()); this.isFornitoreRequired.set(mViewModel.isFornitoreRequired().getValue());
} mViewModel.isFornitoreRequired().observe(this, val -> this.isFornitoreRequired.set(val));
if (selectedGrp != null) {
codMgrp.set(selectedGrp.getLabel()); this.isDocumentRequired.set(mViewModel.isDocumentRequired().getValue());
} mViewModel.isDocumentRequired().observe(this, val -> this.isDocumentRequired.set(val));
if (selectedAnag != null) {
codAnag.set(selectedAnag.getLabel()); this.isNoteRequired.set(mViewModel.isNoteRequired().getValue());
} mViewModel.isNoteRequired().observe(this, val -> this.isNoteRequired.set(val));
if (selectedDataDoc != null) {
dataDoc.set(selectedDataDoc);
} UtilityObservable.addPropertyChanged(this.selectedTipoDoc, mViewModel::setTipoDoc);
if (selectedNumDoc != null) { UtilityObservable.addPropertyChanged(this.selectedGroupArt, mViewModel::setGruppoArt);
numDoc.set(selectedNumDoc); UtilityObservable.addPropertyChanged(this.selectedFornitore, mViewModel::setFornitore);
} UtilityObservable.addPropertyChanged(this.selectedDataDoc, mViewModel::setDataDoc);
if (selectedNote != null) { UtilityObservable.addPropertyChanged(this.selectedNumDoc,
note.set(selectedNote); value -> this.mViewModel.setNumDoc(UtilityString.isNullOrEmpty(value) ? null : Integer.parseInt(value)));
} UtilityObservable.addPropertyChanged(this.selectedNote, mViewModel::setNote);
mViewModel.isFornitoreRequired()
.observe(this, val -> {
if (!val) {
this.selectedFornitore.set(null);
mBindings.filledExposedDropdownCodAnagList.setText("");
}
});
mViewModel.isNoteRequired()
.observe(this, val -> {
if (!val) {
this.selectedNote.set(null);
mBindings.filledExposedDropdownNote.setText("");
}
});
} }
private boolean isInputValid() { private void initAdapters() {
if (this.mViewModel.getSelectedTipoDoc() == null) { var arrayAdapterCodDtips = new DialogSelectDocInfo_TipoDocAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getTipiDoc());
mBindings.inputCodDtip.setErrorEnabled(true);
mBindings.inputCodDtip.setError("Seleziona un tipo documento");
return false;
}
if (this.mViewModel.requiresFornitore() && this.mViewModel.getSelectedFornitore() == null) {
mBindings.inputCodAnagForn.setErrorEnabled(true);
mBindings.inputCodAnagForn.setError("Seleziona un fornitore/destinatario");
return false;
}
if (this.mViewModel.requiresDocData() && this.mViewModel.getDataDoc() == null){
mBindings.inputDataDoc.setError("Seleziona la data del documento");
return false;
}
if (this.mViewModel.requiresDocData() && (this.mViewModel.getNumDoc() == null || this.mViewModel.getNumDoc().isEmpty() )){
mBindings.inputNumDoc.setError("Seleziona il numero del documento");
return false;
}
if (this.mViewModel.requiresNote() && (this.mViewModel.getNote() == null || this.mViewModel.getNote().isEmpty() )){
mBindings.inputNoteLayout.setErrorEnabled(true);
mBindings.inputNoteLayout.setError("Specifica delle note per il documento");
return false;
}
return true;
}
private void initArrayAdapters() {
arrayAdapterCodDtips = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item);
arrayAdapterCodDtips.addAll(mViewModel.getAvailableCodDtips());
mBindings.filledExposedDropdownCodDtips.setAdapter(arrayAdapterCodDtips); mBindings.filledExposedDropdownCodDtips.setAdapter(arrayAdapterCodDtips);
mBindings.filledExposedDropdownCodDtips.setOnItemClickListener((adapterView, view, i, l) -> {
this.selectedTipoDoc.set(
((DialogSelectDocInfo_TipoDocAdapter.ListModel) adapterView.getItemAtPosition(i))
.getOriginalModel());
});
arrayAdapterCodMgrps = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); var arrayAdapterCodMgrps = new DialogSelectDocInfo_GroupArtAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getGruppiArt());
arrayAdapterCodMgrps.addAll(mViewModel.getAvailableCodMgrps());
mBindings.filledExposedDropdownCodMgrps.setAdapter(arrayAdapterCodMgrps); mBindings.filledExposedDropdownCodMgrps.setAdapter(arrayAdapterCodMgrps);
mBindings.filledExposedDropdownCodMgrps.setOnItemClickListener((adapterView, view, i, l) -> {
this.selectedGroupArt.set(
((DialogSelectDocInfo_GroupArtAdapter.ListModel) adapterView.getItemAtPosition(i))
.getOriginalModel());
});
arrayAdapterCodAnags = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); var arrayAdapterFornitori = new DialogSelectDocInfo_FornitoreAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getFornitori());
arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori()); mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterFornitori);
mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterCodAnags); mBindings.filledExposedDropdownCodAnagList.setOnItemClickListener((adapterView, view, i, l) -> {
this.selectedFornitore.set(
((DialogSelectDocInfo_FornitoreAdapter.ListModel) adapterView.getItemAtPosition(i))
.getOriginalModel());
});
arrayAdapterNote = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); var arrayAdapterNote = new DialogSelectDocInfo_NoteAdapter(mContext, R.layout.array_adapter_single_item, SettingsManager.iDB().getNotePerditaDocInterni());
arrayAdapterNote.addAll(mViewModel.getAdditionalNotes());
mBindings.filledExposedDropdownNote.setAdapter(arrayAdapterNote); mBindings.filledExposedDropdownNote.setAdapter(arrayAdapterNote);
} }
private void initBindables() { }
BindableString.registerListener(codDtip, codDtip -> {
mViewModel.setCodDtip(codDtip);
mBindings.inputCodAnagForn.setVisibility(mViewModel.requiresFornitore() ? View.VISIBLE : View.GONE);
mBindings.inputDataDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE);
mBindings.inputNumDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE);
mBindings.inputNoteLayout.setVisibility(mViewModel.requiresNote() ? View.VISIBLE : View.GONE);
});
BindableString.registerListener(codMgrp, mViewModel::setCodMgrp);
BindableString.registerListener(codAnag, mViewModel::setCodAnag);
BindableString.registerListener(numDoc, mViewModel::setNumDoc);
BindableString.registerListener(note, mViewModel::setNote);
UtilityObservable.addPropertyChanged(this.dataDoc, (value) -> {
this.mViewModel.setDataDoc(value);
});
}
@Override
public void onDocTypeSelected() {
arrayAdapterCodAnags.clear();
if (mViewModel.getSelectedFornitore() != null && !mViewModel.getAvailableFornitori().contains(mViewModel.getSelectedFornitore().getLabel())) {
codAnag.set("");
}
if (mViewModel.getNote() != null && ! mViewModel.requiresNote()){
mViewModel.setNote(null);
}
arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori());
}
}

View File

@@ -1,198 +1,163 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; package it.integry.integrywmsnative.gest.contab_doc_interni.dialog;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.FornitoreRequiredException;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.NoteRequiredException;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.TipoDocRequiredException;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
public class DialogSelectDocInfoViewModel extends ViewModel {
private final MutableLiveData<TipoDocDTO> tipoDoc = new MutableLiveData<>();
private final MutableLiveData<GruppoArticoloDTO> gruppoArt = new MutableLiveData<>();
private final MutableLiveData<FornitoreDTO> fornitore = new MutableLiveData<>();
private final MutableLiveData<Date> dataDoc = new MutableLiveData<>();
private final MutableLiveData<Integer> numDoc = new MutableLiveData<>();
private final MutableLiveData<String> note = new MutableLiveData<>();
private final MutableLiveData<List<FornitoreDTO>> availableFornitori = new MutableLiveData<>();
public class DialogSelectDocInfoViewModel { private final MutableLiveData<Boolean> fornitoreRequired = new MutableLiveData<>(false);
private final MutableLiveData<Boolean> documentRequired = new MutableLiveData<>(false);
private final MutableLiveData<Boolean> noteRequired = new MutableLiveData<>(false);
public DialogSelectDocInfoViewModel() {
tipoDoc.observeForever(val ->
fornitoreRequired.postValue(
val != null &&
(val.getGestioneDoc().equals("T") ||
val.getGestioneDoc().equals("A") ||
(val.getGestioneDoc().equals("P") &&
!val.getGestione().equals("L")))));
private DocInterniSetupDTO mDocInterniSetupDTO; tipoDoc.observeForever(val ->
documentRequired.postValue(
val != null &&
val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L")));
private String mTipoDoc; tipoDoc.observeForever(val ->
noteRequired.postValue(
private String mGruppoArt; val != null &&
val.getGestioneDoc().equals("P") &&
private String mFornitore; val.getGestione().equals("L")));
private Date mDataDoc;
private String mNumDoc;
private String mNote;
private Listener mListener;
public void init(DocInterniSetupDTO initialList) {
this.mDocInterniSetupDTO = initialList;
this.mTipoDoc = null;
this.mGruppoArt = null;
this.mFornitore = null;
this.mDataDoc = null;
this.mNumDoc = null;
this.mNote = null;
this.mListener = null;
} }
public String getCodDtip() { public void setFornitori(List<FornitoreDTO> fornitori) {
return mTipoDoc; tipoDoc.observeForever(val -> {
availableFornitori.postValue(Stream.of(fornitori)
.filter(forn -> {
if (val.getGestioneDoc().equalsIgnoreCase("T")) {
return forn.getTipoAnag().equalsIgnoreCase("D") &&
forn.getGestioneAnag().equalsIgnoreCase(
val.getGestione().equalsIgnoreCase("V") ? "V" : "A"
);
} else {
return forn.getTipoAnag().equalsIgnoreCase("F");
}
})
.toList());
});
} }
public void setCodDtip(String codDtip) {
this.mTipoDoc = codDtip; public MutableLiveData<Boolean> isFornitoreRequired() {
if (this.getSelectedTipoDoc() != null) { return fornitoreRequired;
this.mListener.onDocTypeSelected();
}
} }
public String getCodMgrp() { public MutableLiveData<Boolean> isDocumentRequired() {
return mGruppoArt; return documentRequired;
} }
public void setCodMgrp(String codMgrp) { public MutableLiveData<Boolean> isNoteRequired() {
this.mGruppoArt = codMgrp; return noteRequired;
} }
public void setCodAnag(String codAnag) {
this.mFornitore = codAnag; public MutableLiveData<TipoDocDTO> getTipoDoc() {
return tipoDoc;
}
public DialogSelectDocInfoViewModel setTipoDoc(TipoDocDTO tipoDoc) {
this.tipoDoc.postValue(tipoDoc);
return this;
}
public GruppoArticoloDTO getGruppoArt() {
return gruppoArt.getValue();
}
public DialogSelectDocInfoViewModel setGruppoArt(GruppoArticoloDTO gruppoArt) {
this.gruppoArt.postValue(gruppoArt);
return this;
}
public FornitoreDTO getFornitore() {
return fornitore.getValue();
}
public DialogSelectDocInfoViewModel setFornitore(FornitoreDTO fornitore) {
this.fornitore.postValue(fornitore);
return this;
} }
public Date getDataDoc() { public Date getDataDoc() {
return mDataDoc; return dataDoc.getValue();
} }
public void setDataDoc(Date mDataDoc) { public DialogSelectDocInfoViewModel setDataDoc(Date dataDoc) {
this.mDataDoc = mDataDoc; this.dataDoc.postValue(dataDoc);
return this;
} }
public String getNumDoc() { public Integer getNumDoc() {
return mNumDoc; return numDoc.getValue();
} }
public void setNumDoc(String numDoc) { public DialogSelectDocInfoViewModel setNumDoc(Integer numDoc) {
this.mNumDoc = numDoc; this.numDoc.postValue(numDoc);
return this;
} }
public String getNote() { public String getNote() {
return mNote; return note.getValue();
} }
public DialogSelectDocInfoViewModel setNote(String note) { public DialogSelectDocInfoViewModel setNote(String note) {
this.mNote = note; this.note.postValue(note);
return this; return this;
} }
public DialogSelectDocInfoViewModel setListeners(Listener listener) {
this.mListener = listener;
return this;
}
public List<String> getAvailableCodDtips() { public boolean validate() throws TipoDocRequiredException, FornitoreRequiredException, DocumentRequiredException, NoteRequiredException {
return mDocInterniSetupDTO.getTipiDoc() != null ? Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList() : new ArrayList<>(); if (this.getTipoDoc().getValue() == null) {
} throw new TipoDocRequiredException();
public List<String> getAvailableCodMgrps() {
return mDocInterniSetupDTO.getGruppiArt() != null ? Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList() : new ArrayList<>();
}
public List<String> getAvailableFornitori() {
if (!this.requiresFornitore()) {
return new ArrayList<>();
}
TipiDocDTO selectedDocType = getSelectedTipoDoc();
return Stream.of(mDocInterniSetupDTO.getFornitori())
.filter(forn -> {
if (selectedDocType.getGestioneDoc().equalsIgnoreCase("T")) {
return forn.getTipoAnag().equalsIgnoreCase("D") &&
forn.getGestioneAnag().equalsIgnoreCase(
selectedDocType.getGestione().equalsIgnoreCase("V") ? "V" : "A"
);
} else {
return forn.getTipoAnag().equalsIgnoreCase("F");
}
})
.map(FornitoreDTO::getLabel).toList();
}
public TipiDocDTO getSelectedTipoDoc() {
return Stream.of(mDocInterniSetupDTO.getTipiDoc()).filter(x -> x.getLabel().equals(mTipoDoc)).findFirstOrElse(null);
}
public FornitoreDTO getSelectedFornitore() {
return Stream.of(mDocInterniSetupDTO.getFornitori()).filter(x -> x.getLabel().equals(mFornitore)).findFirstOrElse(null);
}
public GruppiArticoloDTO getSelectedGruppoArt() {
if (mGruppoArt == null) {
return null;
} }
return Stream.of(mDocInterniSetupDTO.getGruppiArt()).filter(x -> x.getLabel().equals(mGruppoArt)).findFirstOrElse(null); if (Boolean.TRUE.equals(this.isFornitoreRequired().getValue()) && this.getFornitore() == null) {
} throw new FornitoreRequiredException();
public boolean requiresFornitore() {
return this.getSelectedTipoDoc() != null && (
this.getSelectedTipoDoc().getGestioneDoc().equals("T") ||
this.getSelectedTipoDoc().getGestioneDoc().equals("A") ||
(
this.getSelectedTipoDoc().getGestioneDoc().equals("P") &&
!this.getSelectedTipoDoc().getGestione().equals("L")
)
);
}
public boolean requiresNote() {
return this.getSelectedTipoDoc() != null &&
this.getSelectedTipoDoc().getGestioneDoc().equals("P") &&
this.getSelectedTipoDoc().getGestione().equals("L");
}
public boolean isInputValid() {
if (this.getSelectedTipoDoc() == null) {
return false;
} }
if (this.requiresFornitore() && this.getSelectedFornitore() == null) { if (Boolean.TRUE.equals(this.isDocumentRequired().getValue()) && (this.getDataDoc() == null || this.getNumDoc() == null)) {
return false; throw new DocumentRequiredException();
}
if (this.requiresDocData() && (this.getDataDoc() == null || this.getNumDoc() == null)) {
return false;
} }
if (this.requiresNote() && (this.getNote() == null || this.getNote().length() <= 0)) { if (Boolean.TRUE.equals(this.isNoteRequired().getValue()) && UtilityString.isNullOrEmpty(this.getNote())) {
return false; throw new NoteRequiredException();
} }
return true; return true;
} }
}
public boolean requiresDocData() {
TipiDocDTO doc = this.getSelectedTipoDoc();
return doc != null && doc.getGestioneDoc().equalsIgnoreCase("P") && !doc.getGestione().equalsIgnoreCase("L");
}
public List<String> getAdditionalNotes() {
return SettingsManager.iDB().getNotePerditaDocInterni();
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
void onDocTypeSelected();
}
}

View File

@@ -0,0 +1,50 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter;
import android.content.Context;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
import com.annimon.stream.Stream;
import java.util.List;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
public class DialogSelectDocInfo_FornitoreAdapter extends ArrayAdapter<DialogSelectDocInfo_FornitoreAdapter.ListModel> {
public DialogSelectDocInfo_FornitoreAdapter(@NonNull Context context, int resource, List<FornitoreDTO> inputData) {
super(context, resource);
if (inputData == null) return;
List<ListModel> mDataset = Stream.of(inputData)
.map(x -> new ListModel()
.setOriginalModel(x))
.toList();
addAll(mDataset);
}
public static class ListModel {
private FornitoreDTO originalModel;
public FornitoreDTO getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(FornitoreDTO originalModel) {
this.originalModel = originalModel;
return this;
}
@Override
public String toString() {
return this.getOriginalModel().getCodAnag() +
(this.getOriginalModel().getCodVdes() != null ? " - " + this.getOriginalModel().getCodVdes() : "") +
" ( " + this.getOriginalModel().getDescrizione() + " )";
}
}
}

View File

@@ -0,0 +1,47 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter;
import android.content.Context;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
import com.annimon.stream.Stream;
import java.util.List;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO;
public class DialogSelectDocInfo_GroupArtAdapter extends ArrayAdapter<DialogSelectDocInfo_GroupArtAdapter.ListModel> {
public DialogSelectDocInfo_GroupArtAdapter(@NonNull Context context, int resource, List<GruppoArticoloDTO> inputData) {
super(context, resource);
if(inputData == null) return;
List<ListModel> mDataset = Stream.of(inputData)
.map(x -> new ListModel()
.setOriginalModel(x))
.toList();
addAll(mDataset);
}
public static class ListModel {
private GruppoArticoloDTO originalModel;
public GruppoArticoloDTO getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(GruppoArticoloDTO originalModel) {
this.originalModel = originalModel;
return this;
}
@Override
public String toString() {
return this.getOriginalModel().getCodMgrp() + " - " + this.getOriginalModel().getDescrizione();
}
}
}

View File

@@ -0,0 +1,20 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter;
import android.content.Context;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
import java.util.List;
public class DialogSelectDocInfo_NoteAdapter extends ArrayAdapter<String> {
public DialogSelectDocInfo_NoteAdapter(@NonNull Context context, int resource, List<String> inputData) {
super(context, resource);
if (inputData == null) return;
addAll(inputData);
}
}

View File

@@ -0,0 +1,47 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter;
import android.content.Context;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
import com.annimon.stream.Stream;
import java.util.List;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
public class DialogSelectDocInfo_TipoDocAdapter extends ArrayAdapter<DialogSelectDocInfo_TipoDocAdapter.ListModel> {
public DialogSelectDocInfo_TipoDocAdapter(@NonNull Context context, int resource, List<TipoDocDTO> inputData) {
super(context, resource);
if(inputData == null) return;
List<ListModel> mDataset = Stream.of(inputData)
.map(x -> new ListModel()
.setOriginalModel(x))
.toList();
addAll(mDataset);
}
public static class ListModel {
private TipoDocDTO originalModel;
public TipoDocDTO getOriginalModel() {
return originalModel;
}
public ListModel setOriginalModel(TipoDocDTO originalModel) {
this.originalModel = originalModel;
return this;
}
@Override
public String toString() {
return this.getOriginalModel().getCodDtip() + " - " + this.getOriginalModel().getDescrizione();
}
}
}

View File

@@ -0,0 +1,4 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception;
public class DocumentRequiredException extends Exception {
}

View File

@@ -0,0 +1,4 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception;
public class FornitoreRequiredException extends Exception {
}

View File

@@ -0,0 +1,4 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception;
public class NoteRequiredException extends Exception {
}

View File

@@ -0,0 +1,4 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception;
public class TipoDocRequiredException extends Exception {
}

View File

@@ -5,26 +5,26 @@ import java.util.List;
public class DocInterniSetupDTO { public class DocInterniSetupDTO {
private List<TipiDocDTO> tipiDoc; private List<TipoDocDTO> tipiDoc;
private List<GruppiArticoloDTO> gruppiArt; private List<GruppoArticoloDTO> gruppiArt;
private List<FornitoreDTO> fornitori; private List<FornitoreDTO> fornitori;
public List<TipiDocDTO> getTipiDoc() { public List<TipoDocDTO> getTipiDoc() {
return tipiDoc; return tipiDoc;
} }
public void setTipiDoc(List<TipiDocDTO> tipiDoc) { public void setTipiDoc(List<TipoDocDTO> tipiDoc) {
this.tipiDoc = tipiDoc; this.tipiDoc = tipiDoc;
} }
public List<GruppiArticoloDTO> getGruppiArt() { public List<GruppoArticoloDTO> getGruppiArt() {
return gruppiArt; return gruppiArt;
} }
public void setGruppiArt(List<GruppiArticoloDTO> gruppiArt) { public void setGruppiArt(List<GruppoArticoloDTO> gruppiArt) {
this.gruppiArt = gruppiArt; this.gruppiArt = gruppiArt;
} }

View File

@@ -1,6 +1,6 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto; package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
public class GruppiArticoloDTO { public class GruppoArticoloDTO {
private String codMgrp; private String codMgrp;
private String descrizione; private String descrizione;

View File

@@ -1,6 +1,6 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.dto; package it.integry.integrywmsnative.gest.contab_doc_interni.dto;
public class TipiDocDTO { public class TipoDocDTO {
private String codDtip; private String codDtip;
private String descrizione; private String descrizione;
@@ -48,7 +48,7 @@ public class TipiDocDTO {
return requireNote; return requireNote;
} }
public TipiDocDTO setRequireNote(boolean requireNote) { public TipoDocDTO setRequireNote(boolean requireNote) {
this.requireNote = requireNote; this.requireNote = requireNote;
return this; return this;
} }

View File

@@ -15,6 +15,7 @@ import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -35,11 +36,11 @@ import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding; import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
@@ -77,11 +78,11 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
public BindableBoolean isDocumentExportable = new BindableBoolean(false); public BindableBoolean isDocumentExportable = new BindableBoolean(false);
private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>(); private final ObservableArrayList<SqlMtbColr> documentRowsObservableList = new ObservableArrayList<>();
public static Intent newInstance(Context context, SqlMtbColt document, GrigliaArticoliDTO productList, TipiDocDTO tipoDoc) { public static Intent newInstance(Context context, SqlMtbColt document, List<DocumentoArtDTO> arts, TipoDocDTO tipoDoc) {
Intent myIntent = new Intent(context, DocInterniEditFormActivity.class); Intent myIntent = new Intent(context, DocInterniEditFormActivity.class);
String doc = DataCache.addItem(document); String doc = DataCache.addItem(document);
String productsKey = DataCache.addItem(productList); String productsKey = DataCache.addItem(arts);
String docType = DataCache.addItem(tipoDoc); String docType = DataCache.addItem(tipoDoc);
myIntent.putExtra(DATA_KEY_DOCUMENT, doc); myIntent.putExtra(DATA_KEY_DOCUMENT, doc);
myIntent.putExtra(DATA_KEY_PRODUCTS_LIST, productsKey); myIntent.putExtra(DATA_KEY_PRODUCTS_LIST, productsKey);
@@ -98,9 +99,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
.create() .create()
.inject(this); .inject(this);
SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT)); SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT));
GrigliaArticoliDTO griglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST)); List<DocumentoArtDTO> productList = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST));
List<GrigliaAcquistiChildDTO> productList = griglia.getGrigliaAcquistiChild(); TipoDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC));
TipiDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC));
this.initViewModel(); this.initViewModel();
this.viewModel.setDocument(document); this.viewModel.setDocument(document);
@@ -177,7 +177,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
public void manualSearch() { public void manualSearch() {
BarcodeManager.disable(); BarcodeManager.disable();
DialogSimpleInputHelper.makeInputDialog(this, "Ricerca articolo", null, "Cod articolo / Barcode", this.viewModel::onSearch, BarcodeManager::enable).show(); DialogSimpleInputHelper.makeInputDialog(this, "Ricerca articolo", null, "Cod articolo / Barcode", this.viewModel::loadArticolo, BarcodeManager::enable).show();
} }
@@ -222,7 +222,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
} }
@Override @Override
public void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita) { public void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig) {
this.onLoadingStarted(); this.onLoadingStarted();
MtbAart mtbAart = new MtbAart(); MtbAart mtbAart = new MtbAart();
mtbAart.setBarCode(row.getCodBarre()); mtbAart.setBarCode(row.getCodBarre());
@@ -235,6 +235,11 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
mtbAart.setFlagTracciabilita(flagTracciabilita ? "S" : "N"); mtbAart.setFlagTracciabilita(flagTracciabilita ? "S" : "N");
mtbAart.setUntMis(row.getUntMis()); mtbAart.setUntMis(row.getUntMis());
MtbUntMis mtbUntMis = new MtbUntMis()
.setUntMis(row.getUntMis())
.setFlagDig(isUntMisDig ? "S" : "N");
mtbAart.setMtbUntMis(Collections.singletonList(mtbUntMis));
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
.setMtbAart(mtbAart) .setMtbAart(mtbAart)
.setInitialNumCnf(BigDecimal.valueOf(row.getNumCnf())) .setInitialNumCnf(BigDecimal.valueOf(row.getNumCnf()))
@@ -275,6 +280,12 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
this.closeEdit(); this.closeEdit();
} }
@Override
public void onDocDeleted() {
this.binding.closeActivityFab.close(true);
this.closeEdit();
}
@Override @Override
public void onDocExported() { public void onDocExported() {
runOnUiThread(() -> { runOnUiThread(() -> {
@@ -290,8 +301,8 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
@Override @Override
public void onMtbColrEdit(MtbColr mtbColr) { public void onMtbColrEdit(MtbColr mtbColr) {
GrigliaAcquistiChildDTO articolo = viewModel.getArticoloByCodMart(mtbColr.getCodMart()); DocumentoArtDTO articolo = viewModel.getArticoloByCodMart(mtbColr.getCodMart());
this.viewModel.editRow(entityToSql(mtbColr), articolo.getFlagTracciabilita().equalsIgnoreCase("S")); this.viewModel.dispatchRowEdit(entityToSql(mtbColr), articolo.isFlagTracciabilita(), articolo.isUntMisDigitale());
} }
@Override @Override
@@ -300,11 +311,11 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
} }
@Override @Override
public void onMultipleRowsFound(List<SqlMtbColr> rows, GrigliaAcquistiChildDTO articolo) { public void onMultipleRowsFound(List<SqlMtbColr> rows, DocumentoArtDTO articolo) {
DialogSelectDocRowsView.newInstance(rows, (row) -> { DialogSelectDocRowsView.newInstance(rows, (row) -> {
this.onLoadingEnded(); this.onLoadingEnded();
if (row != null) { if (row != null) {
this.viewModel.editRow(row, (articolo.getFlagTracciabilita().equalsIgnoreCase("S"))); this.viewModel.dispatchRowEdit(row, articolo.isFlagTracciabilita(), articolo.isUntMisDigitale());
} }
} }
).show(this.getSupportFragmentManager(), "dialogSelectDocRows"); ).show(this.getSupportFragmentManager(), "dialogSelectDocRows");

View File

@@ -10,6 +10,7 @@ import org.json.JSONObject;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
@@ -21,13 +22,13 @@ import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSour
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ResultDTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ResultDTO;
@@ -39,8 +40,9 @@ public class DocInterniEditFormViewModel {
MtbColtRepository mtbColtRepository; MtbColtRepository mtbColtRepository;
private final DocInterniRESTConsumer docInterniRESTConsumer; private final DocInterniRESTConsumer docInterniRESTConsumer;
private DocInterniEditFormViewModel.Listener listener; private DocInterniEditFormViewModel.Listener listener;
private List<GrigliaAcquistiChildDTO> productsList; private List<DocumentoArtDTO> productsList;
private TipiDocDTO tipoDoc; private HashMap<String, String> flattedBarcodesCodMarts;
private TipoDocDTO tipoDoc;
private boolean isCheckPartitaMag = false; private boolean isCheckPartitaMag = false;
private JSONObject checkFornitoreRules = null; private JSONObject checkFornitoreRules = null;
public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>(); public MutableLiveData<SqlMtbColt> document = new MutableLiveData<>();
@@ -87,8 +89,8 @@ public class DocInterniEditFormViewModel {
} }
public void editRow(SqlMtbColr row, boolean flagTracciabilita) { public void dispatchRowEdit(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig) {
this.listener.onEditRowRequest(row, flagTracciabilita && this.isCheckPartitaMag); this.listener.onEditRowRequest(row, flagTracciabilita && this.isCheckPartitaMag,isUntMisDig);
} }
private Integer getNextIdRiga() { private Integer getNextIdRiga() {
@@ -101,7 +103,7 @@ public class DocInterniEditFormViewModel {
public void exportDocument() { public void exportDocument() {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
docInterniRESTConsumer.saveDoc(this.getSaveDto(), obj -> { docInterniRESTConsumer.saveDoc(this.getSaveDto(), () -> {
SqlMtbColt document = this.getDocument(); SqlMtbColt document = this.getDocument();
document.setCodDtip(document.getCodDtipProvv()); document.setCodDtip(document.getCodDtipProvv());
mtbColtRepository.update(document, doc -> { mtbColtRepository.update(document, doc -> {
@@ -113,45 +115,59 @@ public class DocInterniEditFormViewModel {
public void deleteDocument() { public void deleteDocument() {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
docInterniRESTConsumer.saveDoc(this.getSaveDto(), obj -> {
SqlMtbColt document = this.getDocument(); SqlMtbColt document = this.getDocument();
document.setCodDtip(document.getCodDtipProvv()); mtbColtRepository.delete(document, () -> {
mtbColtRepository.update(document, doc -> {
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
this.listener.onDocExported(); this.listener.onDocDeleted();
}, this::sendError); }, this::sendError);
}, this::sendError);
} }
public void holdDocument() { public void holdDocument() {
this.listener.onDocumentHoldRequest(); this.listener.onDocumentHoldRequest();
} }
public void onSearch(String search) { public void loadArticolo(String barcodeProd) {
GrigliaAcquistiChildDTO articolo = this.searchArticolo(search); DocumentoArtDTO matchedArt;
if (articolo == null) { String usedBarcode = null;
this.sendError(new NoResultFromBarcodeException());
String leftBarcode = StringUtils.leftPad(barcodeProd, 13, '0');
matchedArt = Stream.of(productsList)
.filter(x -> x.getCodMart().equalsIgnoreCase(barcodeProd) ||
leftBarcode.equalsIgnoreCase(x.getCodMart()) ||
x.getBarcode().contains(barcodeProd))
.findFirst()
.orElse(null);
if (matchedArt != null)
usedBarcode = matchedArt.getBarcode().contains(barcodeProd) ? barcodeProd : null;
if (matchedArt == null) {
this.sendError(new NoResultFromBarcodeException(barcodeProd));
return; return;
} }
List<SqlMtbColr> rows = this.getRowsForArticolo(articolo);
if (rows.isEmpty()) { List<SqlMtbColr> rows = this.getRowsForArticolo(matchedArt, usedBarcode);
this.sendError(new NoResultFromBarcodeException());
}
if (rows.size() > 1) { if (rows.size() > 1) {
this.listener.onMultipleRowsFound(rows, articolo); this.listener.onMultipleRowsFound(rows, matchedArt);
} else { } else {
this.editRow(rows.get(0), (articolo.getFlagTracciabilita().equalsIgnoreCase("S"))); this.dispatchRowEdit(rows.get(0), matchedArt.isFlagTracciabilita(), matchedArt.isUntMisDigitale());
} }
} }
private List<SqlMtbColr> getRowsForArticolo(GrigliaAcquistiChildDTO articolo) { private List<SqlMtbColr> getRowsForArticolo(DocumentoArtDTO articolo, String barcode) {
List<SqlMtbColr> docRows = this.docRows.getValue(); List<SqlMtbColr> docRows = this.docRows.getValue();
if (docRows == null) { if (docRows == null) {
docRows = new ArrayList<>(); docRows = new ArrayList<>();
} }
SqlMtbColt document = this.document.getValue(); SqlMtbColt document = this.document.getValue();
SqlMtbColr row = new SqlMtbColr(); SqlMtbColr row = new SqlMtbColr();
row.setIdCollo(document.getId()); row.setIdCollo(document.getId());
row.setRiga(getNextIdRiga()); row.setRiga(getNextIdRiga());
row.setCodMart(articolo.getCodMart()); row.setCodMart(articolo.getCodMart());
@@ -161,24 +177,18 @@ public class DocInterniEditFormViewModel {
row.setDataCollo(document.getDataCollo()); row.setDataCollo(document.getDataCollo());
row.setDescrizione(articolo.getDescrizione()); row.setDescrizione(articolo.getDescrizione());
row.setUntMis(articolo.getUntMis()); row.setUntMis(articolo.getUntMis());
row.setCodBarre(articolo.getBarcode()); row.setCodBarre(barcode);
row.setQtaCnf(articolo.getQtaCnf().floatValue()); row.setQtaCnf(articolo.getQtaCnf().floatValue());
row.setNumCnf(0f); row.setNumCnf(0f);
row.setQtaCol(0f); row.setQtaCol(0f);
List<SqlMtbColr> rows = Stream.of(docRows).filter(docRow -> docRow.getCodMart().equalsIgnoreCase(articolo.getCodMart())).toList();
List<SqlMtbColr> rows = Stream.of(docRows)
.filter(docRow -> docRow.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
.toList();
rows.add(row); rows.add(row);
return rows; return rows;
} }
private GrigliaAcquistiChildDTO searchArticolo(String filter) {
return Stream.of(this.productsList).filter(dto ->
filter.equalsIgnoreCase(dto.getCodMart())
|| filter.equalsIgnoreCase(dto.getBarcode())
|| StringUtils.leftPad(filter, 13, '0').equalsIgnoreCase(dto.getCodMart())
|| StringUtils.leftPad(filter, 13, '0').equalsIgnoreCase(dto.getBarcode())
).findFirstOrElse(null);
}
private SaveDTO getSaveDto() { private SaveDTO getSaveDto() {
SqlMtbColt document = this.getDocument(); SqlMtbColt document = this.getDocument();
SaveDTO saveDTO = new SaveDTO(); SaveDTO saveDTO = new SaveDTO();
@@ -254,17 +264,20 @@ public class DocInterniEditFormViewModel {
return document.getValue(); return document.getValue();
} }
public List<GrigliaAcquistiChildDTO> getProductsList() { public void setProductsList(List<DocumentoArtDTO> productsList) {
return productsList;
}
public void setProductsList(List<GrigliaAcquistiChildDTO> productsList) {
this.productsList = productsList; this.productsList = productsList;
this.flattedBarcodesCodMarts = new HashMap<>();
for (DocumentoArtDTO documentArt : productsList) {
for (String barcode : documentArt.getBarcode()) {
this.flattedBarcodesCodMarts.put(barcode, documentArt.getCodMart());
}
}
} }
public void processBarcode(BarcodeScanDTO dto) { public void processBarcode(BarcodeScanDTO dto) {
String code = dto.getStringValue(); String code = dto.getStringValue();
this.onSearch(code); this.loadArticolo(code);
} }
public void saveRow(SqlMtbColr row, DialogInputQuantityV2ResultDTO resultDTO) { public void saveRow(SqlMtbColr row, DialogInputQuantityV2ResultDTO resultDTO) {
@@ -298,11 +311,13 @@ public class DocInterniEditFormViewModel {
return this.docRows.getValue(); return this.docRows.getValue();
} }
public GrigliaAcquistiChildDTO getArticoloByCodMart(String codMart) { public DocumentoArtDTO getArticoloByCodMart(String codMart) {
return Stream.of(productsList).filter(prod -> prod.getCodMart().equalsIgnoreCase(codMart)).findFirstOrElse(null); return Stream.of(productsList)
.filter(prod -> prod.getCodMart().equalsIgnoreCase(codMart))
.findFirstOrElse(null);
} }
public DocInterniEditFormViewModel setTipoDoc(TipiDocDTO docType) { public DocInterniEditFormViewModel setTipoDoc(TipoDocDTO docType) {
this.tipoDoc = docType; this.tipoDoc = docType;
return this; return this;
} }
@@ -317,12 +332,14 @@ public class DocInterniEditFormViewModel {
void onRowsChanged(List<SqlMtbColr> rows); void onRowsChanged(List<SqlMtbColr> rows);
void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita); void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig);
void onMultipleRowsFound(List<SqlMtbColr> rows, GrigliaAcquistiChildDTO articolo); void onMultipleRowsFound(List<SqlMtbColr> rows, DocumentoArtDTO art);
void onDocumentHoldRequest(); void onDocumentHoldRequest();
void onDocDeleted();
void onDocExported(); void onDocExported();
} }

View File

@@ -1,7 +1,5 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.rest; package it.integry.integrywmsnative.gest.contab_doc_interni.rest;
import com.google.gson.JsonObject;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.exception.RestException; import it.integry.integrywmsnative.core.exception.RestException;
@@ -11,7 +9,6 @@ import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
@@ -41,23 +38,8 @@ public class DocInterniRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void fetchProducts(String codDtip, String codMgrp, RunnableArgs<GrigliaArticoliDTO> onComplete, RunnableArgs<Exception> onFailed) {
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
service.retrieveProducts(codDtip, codMgrp, "L").enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<GrigliaArticoliDTO>> call, Response<ServiceRESTResponse<GrigliaArticoliDTO>> response) {
analyzeAnswer(response, "fetchProducts", onComplete, onFailed);
}
@Override public void saveDoc(SaveDTO saveDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
public void onFailure(Call<ServiceRESTResponse<GrigliaArticoliDTO>> call, Throwable t) {
onFailed.run(new RestException(t.getMessage()));
}
});
}
public void saveDoc(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed) {
magazzinoRESTConsumer.saveTerminalinoWMS(saveDTO, onComplete, onFailed); magazzinoRESTConsumer.saveTerminalinoWMS(saveDTO, onComplete, onFailed);
} }
} }

View File

@@ -2,10 +2,8 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.rest;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.Query;
public interface DocInterniRESTConsumerService { public interface DocInterniRESTConsumerService {
@@ -13,11 +11,4 @@ public interface DocInterniRESTConsumerService {
@GET("getDocInterniSetup") @GET("getDocInterniSetup")
Call<ServiceRESTResponse<DocInterniSetupDTO>> getSetupDocInterni(); Call<ServiceRESTResponse<DocInterniSetupDTO>> getSetupDocInterni();
@GET("getElencoArticoli")
Call<ServiceRESTResponse<GrigliaArticoliDTO>> retrieveProducts(
@Query("codDtip") String codDtip,
@Query("codMgrp") String codMgrp,
@Query("gestione") String gestione);
} }

View File

@@ -8,6 +8,7 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.ObservableField;
import com.ravikoradiya.liveadapter.LiveAdapter; import com.ravikoradiya.liveadapter.LiveAdapter;
import com.ravikoradiya.liveadapter.Type; import com.ravikoradiya.liveadapter.Type;
@@ -25,6 +26,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment; import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.rest.model.inventario.InventarioArtDTO; import it.integry.integrywmsnative.core.rest.model.inventario.InventarioArtDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.databinding.FragmentElencoInventarioBinding; import it.integry.integrywmsnative.databinding.FragmentElencoInventarioBinding;
import it.integry.integrywmsnative.databinding.FragmentElencoInventarioListSingleItemBinding; import it.integry.integrywmsnative.databinding.FragmentElencoInventarioListSingleItemBinding;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_actions.BottomSheetInventarioActionsView; import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_actions.BottomSheetInventarioActionsView;
@@ -39,6 +41,8 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag
@Inject @Inject
ElencoInventariViewModel mViewModel; ElencoInventariViewModel mViewModel;
public ObservableField<Boolean> canCreateInventario = new ObservableField<>(false);
private int barcodeScannerIstanceID = -1; private int barcodeScannerIstanceID = -1;
public ElencoInventariFragment() { public ElencoInventariFragment() {
@@ -65,11 +69,20 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
setRetainInstance(true);
mBinding = FragmentElencoInventarioBinding.inflate(inflater, container, false); mBinding = FragmentElencoInventarioBinding.inflate(inflater, container, false);
mBinding.setLifecycleOwner(this); mBinding.setLifecycleOwner(this);
mBinding.setView(this);
mBinding.setViewmodel(mViewModel); mBinding.setViewmodel(mViewModel);
canCreateInventario.set(SettingsManager.iDB().isFlagCanCreateInventario());
mBinding.swiperefresh.setRefreshing(true);
mBinding.swiperefresh.setOnRefreshListener(() -> {
mViewModel.loadData();
});
mViewModel.loadData(); mViewModel.loadData();
this.initRecyclerView(); this.initRecyclerView();
@@ -143,6 +156,22 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag
startPicking(inventarioRoomDTO, listaArts); startPicking(inventarioRoomDTO, listaArts);
} }
@Override
public void onInventoriesLoadingStarted() {
mBinding.swiperefresh.setRefreshing(true);
}
@Override
public void onInventoriesLoadingEnded() {
mBinding.swiperefresh.setRefreshing(false);
}
@Override
public void onInventoriesLoadingError(Exception ex) {
mBinding.swiperefresh.setRefreshing(false);
this.onError(ex);
}
private void startPicking(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> listArts) { private void startPicking(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> listArts) {
PickingInventarioActivity.startActivity(requireContext(), inventarioRoomDTO, listArts); PickingInventarioActivity.startActivity(requireContext(), inventarioRoomDTO, listArts);

View File

@@ -40,7 +40,10 @@ public class ElencoInventariViewModel {
} }
public void loadData() { public void loadData() {
inventarioList = inventarioRepository.retrieve(); inventarioList = inventarioRepository.retrieve(
this::sendOnInventoriesLoadingEnded,
this::sendOnInventoriesLoadingError
);
} }
public void destroyData() { public void destroyData() {
@@ -146,16 +149,34 @@ public class ElencoInventariViewModel {
if (this.listener != null) listener.onLoadingEnded(); if (this.listener != null) listener.onLoadingEnded();
} }
private void sendOnInventoriesLoadingStarted() {
if (this.listener != null) listener.onInventoriesLoadingStarted();
}
private void sendOnInventoriesLoadingEnded() {
if (this.listener != null) listener.onInventoriesLoadingEnded();
}
private void sendOnError(Exception ex) { private void sendOnError(Exception ex) {
if (this.listener != null) listener.onError(ex); if (this.listener != null) listener.onError(ex);
} }
private void sendOnInventoriesLoadingError(Exception ex) {
if (this.listener != null) listener.onInventoriesLoadingError(ex);
}
public interface Listener extends ILoadingListener { public interface Listener extends ILoadingListener {
void onInventarioInfoRequest(RunnableArgss<Long, String> onComplete); void onInventarioInfoRequest(RunnableArgss<Long, String> onComplete);
void onInventarioLoaded(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> listaArts); void onInventarioLoaded(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> listaArts);
void onInventoriesLoadingStarted();
void onInventoriesLoadingEnded();
void onInventoriesLoadingError(Exception ex);
void onCreateInventarioRequest(long inventoryId, String zone); void onCreateInventarioRequest(long inventoryId, String zone);
void onError(Exception ex); void onError(Exception ex);

View File

@@ -75,6 +75,7 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
getMenuInflater().inflate(R.menu.picking_inventario_menu, menu); getMenuInflater().inflate(R.menu.picking_inventario_menu, menu);
return true; return true;
} }
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -91,18 +92,19 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
mViewModel.setListener(this); mViewModel.setListener(this);
mBindings.setViewmodel(mViewModel); mBindings.setViewmodel(mViewModel);
mViewModel.init(
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO)),
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS)));
initToolbar(); initToolbar();
initBarcodeReader(); initBarcodeReader();
} }
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
mViewModel.init(
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO)),
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS)));
initRecyclerView(); initRecyclerView();
} }
@@ -112,6 +114,12 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
return true; return true;
} }
@Override
public void onBackPressed() {
BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onBackPressed();
}
private void initToolbar() { private void initToolbar() {
setSupportActionBar(mBindings.toolbar); setSupportActionBar(mBindings.toolbar);
@@ -183,7 +191,8 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
public void requestExportConfirm() { public void requestExportConfirm() {
DialogYesNoView.newInstance("Esporta", "Vuoi confermare e chiudere l'inventario?", result -> { DialogYesNoView.newInstance("Esporta", "Vuoi confermare e chiudere l'inventario?", result -> {
mViewModel.exportAll(this::onBackPressed); if (result == DialogConsts.Results.YES)
mViewModel.exportAll(this::onBackPressed);
}) })
.show(getSupportFragmentManager(), "tag"); .show(getSupportFragmentManager(), "tag");
} }

View File

@@ -77,7 +77,7 @@ public class PickingInventarioViewModel extends ViewModel {
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
if (UtilityBarcode.isEanPeso(barcodeScanDTO)) { if (UtilityBarcode.isEanPeso(barcodeScanDTO)) {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) //Cerco tramite etichetta ean peso
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
} else { } else {
@@ -111,6 +111,11 @@ public class PickingInventarioViewModel extends ViewModel {
public void exportAll(Runnable onComplete) { public void exportAll(Runnable onComplete) {
if(this.currentInventarioRows.getValue().isEmpty()) {
this.sendError(new Exception("Impossibile esportare un inventario senza righe"));
return;
}
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
currentInventario.getValue().setInventarioRowList(this.currentInventarioRows.getValue()); currentInventario.getValue().setInventarioRowList(this.currentInventarioRows.getValue());

View File

@@ -98,14 +98,14 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen
} }
@Override @Override
public void onLoginCompleted(String host, int port, String fullName, List<String> availableProfiles) { public void onLoginCompleted(String protocol, String host, int port, String fullName, List<String> availableProfiles) {
this.onLoadingEnded(); this.onLoadingEnded();
runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog( runOnUiThread(() -> DialogSimpleMessageView.makeSuccessDialog(
"Benvenuto", "Benvenuto",
Html.fromHtml("Ciao <b>" + fullName + "</b>, la Integry le augura di svolgere al meglio il suo lavoro"), Html.fromHtml("Ciao <b>" + fullName + "</b>, la Integry le augura di svolgere al meglio il suo lavoro"),
null, null,
() -> showProfileDBSelectionDialog(host, port, availableProfiles)) () -> showProfileDBSelectionDialog(protocol, host, port, availableProfiles))
.show(getSupportFragmentManager(), "tag")); .show(getSupportFragmentManager(), "tag"));
} }
@@ -117,7 +117,7 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen
loginButtonEnabled.set(true); loginButtonEnabled.set(true);
} }
private void showProfileDBSelectionDialog(final String host, final int port, final List<String> availableProfiles) { private void showProfileDBSelectionDialog(final String protocol, final String host, final int port, final List<String> availableProfiles) {
Runnable onComplete = () -> { Runnable onComplete = () -> {
SettingsManager.update(); SettingsManager.update();
@@ -129,7 +129,7 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen
if (availableProfiles != null && availableProfiles.size() == 1) { if (availableProfiles != null && availableProfiles.size() == 1) {
SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(0)); SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(0));
mViewmodel.loadDepo(codAzienda.get(), host, port, username.get(), password.get(), onComplete); mViewmodel.loadDepo(codAzienda.get(), protocol, host, port, username.get(), password.get(), onComplete);
} else { } else {
// setup the alert builder // setup the alert builder
@@ -144,7 +144,7 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen
builder.setItems(profiles, (dialog, which) -> { builder.setItems(profiles, (dialog, which) -> {
SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(which)); SettingsManager.i().getUserSession().setProfileDB(availableProfiles.get(which));
mViewmodel.loadDepo(codAzienda.get(), host, port, username.get(), password.get(), onComplete); mViewmodel.loadDepo(codAzienda.get(), protocol, host, port, username.get(), password.get(), onComplete);
}); });
// create and show the alert dialog // create and show the alert dialog

View File

@@ -1,27 +0,0 @@
package it.integry.integrywmsnative.gest.login.dto;
import java.util.List;
public class LoginDTO {
private String full_name;
private List<String> availableProfiles;
public String getFull_name() {
return full_name;
}
public LoginDTO setFull_name(String full_name) {
this.full_name = full_name;
return this;
}
public List<String> getAvailableProfiles() {
return availableProfiles;
}
public LoginDTO setAvailableProfiles(List<String> availableProfiles) {
this.availableProfiles = availableProfiles;
return this;
}
}

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