Compare commits

...

136 Commits

Author SHA1 Message Date
f6aadf1115 Finish v1.23.7(262) 2022-02-25 17:37:19 +01:00
cf3b8749dc -> v1.23.7 (262) 2022-02-25 17:37:13 +01:00
34ff300515 workaround problema con tempistiche thread in salvataggio articolo ordine acquisto 2022-02-25 17:36:07 +01:00
0738993d4c Aggiunto flag use qta ord in accettazione 2022-02-24 11:01:01 +01:00
9765fe1807 Completato refactoring del dialog ask cliente 2022-02-24 10:04:01 +01:00
968e904715 Finish v1.23.6(261) 2022-02-23 12:50:45 +01:00
90985b899b Finish v1.23.6(261) 2022-02-23 12:50:45 +01:00
d81e0dd72c -> v1.23.6 (261) 2022-02-23 12:50:40 +01:00
ee8751163c aggiunto campo colli in arrivo in ordini di acquisto pv 2022-02-23 12:49:59 +01:00
5476e9633e Migliorato rendering di dialog ask cliente e fix su check delle posizioni da cache 2022-02-23 12:42:30 +01:00
84d800a698 Merge remote-tracking branch 'origin/develop' into develop 2022-02-22 18:56:35 +01:00
eb39e1b7c5 Refactoring DialogProgressView.
Refactoring UpdateManager.
2022-02-22 18:56:30 +01:00
57fa738c59 corretto bug sul progressDialog 2022-02-22 15:40:50 +01:00
bfc02a7d48 Finish v1.23.5(260) 2022-02-22 13:23:23 +01:00
e963e03c81 Finish v1.23.5(260) 2022-02-22 13:23:23 +01:00
f1c25a3673 -> v1.23.5 (260) 2022-02-22 13:23:18 +01:00
90d5a8d43b gestione righe multiple per articolo in documenti itnerni 2022-02-22 13:22:17 +01:00
e1b4af2402 Fix su caricamento JSON di config per i doc interni 2022-02-22 13:14:56 +01:00
8686df3d8a rimossa ricerca automatica listino creata per test dev 2022-02-21 16:32:04 +01:00
6b04246f42 Merge remote-tracking branch 'origin/develop' into develop 2022-02-21 16:31:39 +01:00
8e40092130 [CARELLI - ORDINI A]
aggiunti automaticamente all'ordine gli articoli nuovi in griglia
[CARELLI - DOC INTERNI]
modificato controllo sul lotto per partire solo nei documenti richiesti (tramite setup)
2022-02-21 16:31:11 +01:00
b8dbde5ee1 Rimosso Coollection 2022-02-21 10:29:25 +01:00
ae6d37e80d Finish v1.23.4(259) 2022-02-17 13:10:44 +01:00
6dcc711006 Finish v1.23.4(259) 2022-02-17 13:10:44 +01:00
a616cb6022 -> v1.23.4 (259) 2022-02-17 13:10:38 +01:00
837781389c aumentati a 5 i numero di decimali
e aggiunto un  controllo sulla qta ordinata per il suggerimento di prelievo
2022-02-17 13:09:37 +01:00
f23ff88878 Finish v1.23.3(258) 2022-02-17 11:44:21 +01:00
ddc038add4 Finish v1.23.3(258) 2022-02-17 11:44:20 +01:00
f037617dd9 -> v1.23.3 (258) 2022-02-17 11:44:17 +01:00
84cff70567 aggiunto controllo su testate ordini per approvvigionamento da lavorazione 2022-02-17 11:43:33 +01:00
8a1b3a1b00 aggiunto controllo sulla qta ordinata nulla per rettifica giacenze 2022-02-17 11:43:04 +01:00
f11a81ef05 gestita where cond in caso di filtro null 2022-02-17 11:42:27 +01:00
eb8595e247 Finish v1.23.2(257) 2022-02-16 13:01:33 +01:00
85520b937f Finish v1.23.2(257) 2022-02-16 13:01:33 +01:00
ec5bee558c -> v1.23.2 (257) 2022-02-16 13:01:25 +01:00
857295d92b corretta conversione date string da query 2022-02-16 13:00:10 +01:00
4da2c43251 Merge remote-tracking branch 'origin/develop' into develop 2022-02-14 17:47:36 +01:00
fc1681d111 Implementato messaggio info extra in DialogInputQuantity (attualmente mostra un testo Human Readable delle quantità da prelevare). 2022-02-14 17:18:35 +01:00
692a350128 Aggiunta ricerca barcode articolo con conversione da 8 a 13 caratteri 2022-02-14 15:44:50 +01:00
47f29899a2 Aggiornate librerie google 2022-02-14 12:43:45 +01:00
a0dfd20110 Update AGP 7.1.1 2022-02-14 12:17:34 +01:00
92aadad5cb aggiunto controllo data scadenza
nascosta input tipo collo in accettazione se non ci sono tipi collo configurati
2022-02-14 11:37:24 +01:00
52092e7e9c GRAMM visualizzato peso articolo 2022-02-08 18:17:24 +01:00
ecfb8faf01 vg aggiunta possibilità di selezionare il tipo pedana in accettazione e visulizzati dettagli peso 2022-02-08 10:42:32 +01:00
e5dd4b15f4 Finish v1.23.1(256) 2022-02-08 10:38:43 +01:00
6e070285e3 Finish v1.23.1(256) 2022-02-08 10:38:43 +01:00
d13cdf63c2 -> v1.23.1 (256) 2022-02-08 10:38:36 +01:00
c3884774e1 corretto filtro in dialogChooseArts e aggiunta possibilità di aprirlo con filtro già attivo 2022-02-08 10:37:37 +01:00
983b70821a Finish v1.23.0(255) 2022-02-03 12:05:11 +01:00
8e60aa0249 Finish v1.23.0(255) 2022-02-03 12:05:11 +01:00
69962781aa -> v1.23.0 (255) 2022-02-03 12:05:06 +01:00
a921b83c1f unifificata gestione etichette posizioni in picking libero e rettifica giacenze 2022-02-03 12:03:17 +01:00
ea8be0559a [carelli - docInterni]
aggiunti dati al DTO di sincronizzazione
[MAGGIO - Picking libero]
Aggiunta possibilità di aprire la posizione definita in anagrafica articolo scansionando l'ean13 dello stesso
2022-02-02 17:01:41 +01:00
66f117186c Piccoli fix su doc interni 2022-01-28 10:23:46 +01:00
4ff39009d2 Finish v1.22.0(254) 2022-01-25 11:15:21 +01:00
981a42cd7e Finish v1.22.0(254) 2022-01-25 11:15:20 +01:00
062938d0e4 -> v1.22.0 (254) 2022-01-25 11:15:15 +01:00
cc7044c7de Tanto vario 2022-01-25 11:14:15 +01:00
7d771bf39b Implementato suggerimento della posizione (da mtb_aart) 2022-01-07 18:09:37 +01:00
3261aa7c41 Creati chips per filtro in picking accettazione 2022-01-07 16:16:01 +01:00
d79c13b370 Aggiunto cod_mart in caso di mancanza cod_art_forn 2022-01-07 10:56:41 +01:00
55c1cb40a2 Refactoring login 2022-01-04 15:06:35 +01:00
d570ab7e3d Finish v1.21.1(253) 2021-12-30 17:32:01 +01:00
e3ebfcb27d Finish v1.21.1(253) 2021-12-30 17:32:01 +01:00
2230dade45 -> v1.21.1 (253) 2021-12-30 17:31:39 +01:00
637e46b868 Rimosso datetime da MtbCols 2021-12-30 17:30:58 +01:00
473d5d1a5a Finish v1.21.0(252) 2021-12-28 11:21:37 +01:00
c37f4d62a4 Finish v1.21.0(252) 2021-12-28 11:21:36 +01:00
b8ac75ed6d -> v1.21.0 (252) 2021-12-28 11:21:31 +01:00
df9d3a80ac completata gestione documenti interni
Aggiunti campi complementari in generazione ordini di acquisto
restyling dialog ordini di acquisto
2021-12-28 11:20:02 +01:00
6aacaef720 Finish v1.20.4(251) 2021-12-02 17:09:31 +01:00
1fab62187f Finish v1.20.4(251) 2021-12-02 17:09:31 +01:00
0c4d0f2b59 -> v1.20.4 (251) 2021-12-02 17:09:27 +01:00
dbf183c7c6 Bug fix: in versamento meteriale a produzione la quantità residuo dopo ripartizionamento viene aggiunta due volte 2021-12-02 17:08:43 +01:00
42649cd5bb Finish v1.20.3(250) 2021-11-26 17:47:56 +01:00
1f1a8f75de Finish v1.20.3(250) 2021-11-26 17:47:56 +01:00
5215d43bf4 -> v1.20.3 (250) 2021-11-26 17:47:51 +01:00
d2f262a9b8 Merge remote-tracking branch 'origin/develop' into develop 2021-11-26 17:46:58 +01:00
1fc78d053b Aggiunto codice menu su Rientro merce 2021-11-26 17:46:55 +01:00
016be4799c Merge remote-tracking branch 'origin/develop' into develop 2021-11-26 17:46:40 +01:00
e837132996 Corretta aggiunta quantità di scarto sull'ordine maggiore in versamento merce a produzione (frudis) 2021-11-26 17:46:33 +01:00
925760720d Finish v1.20.2(249) 2021-11-26 16:40:35 +01:00
2e872c23aa Finish v1.20.2(249) 2021-11-26 16:40:34 +01:00
7a62c8855f -> v1.20.2 (249) 2021-11-26 16:40:31 +01:00
c1da07b23c Fix finestra caricamento in Spedizione 2021-11-26 16:39:54 +01:00
ba7e2a6d61 Finish v1.20.1(248) 2021-11-26 10:32:36 +01:00
e798db1427 Finish v1.20.1(248) 2021-11-26 10:32:35 +01:00
a79dee3574 -> v1.20.1 (248) 2021-11-26 10:32:26 +01:00
4f753399bf Merge remote-tracking branch 'origin/develop' into develop 2021-11-26 10:31:40 +01:00
80842e49e5 Migliorata gestione errori in versamento merce 2021-11-26 10:31:33 +01:00
2eac741bbb Finish v1.20.0(247) 2021-11-22 18:22:36 +01:00
c3e2a2a8fd Finish v1.20.0(247) 2021-11-22 18:22:36 +01:00
99f0691c55 -> v1.20.0 (247) 2021-11-22 18:22:31 +01:00
37ebd96a0f Gestione Documenti interni di carelli 2021-11-22 18:20:59 +01:00
c012c54805 Finish v1.19.5(246) 2021-11-12 16:33:47 +01:00
9de6dcce80 Finish v1.19.5(246) 2021-11-12 16:33:46 +01:00
fc403ec419 -> v1.19.5 (246) 2021-11-12 16:33:41 +01:00
4968f2f4fa Aggiunto ordinamento (da customizzareper azienda) sui filtri in spedizione 2021-11-12 16:32:18 +01:00
a7ea9b9022 Finish v1.19.4(245) 2021-11-12 11:32:57 +01:00
28a034f0d6 Finish v1.19.4(245) 2021-11-12 11:32:57 +01:00
ca3f1f5962 -> v1.19.4 (245) 2021-11-12 11:32:48 +01:00
4117e69278 risolto problema filtro non considerato in ritorno su lista filtrata dopo aver eseguito il picking 2021-11-12 11:31:34 +01:00
18ff1e2345 Finish v1.19.3(244) 2021-11-11 19:58:38 +01:00
37e3024220 Finish v1.19.3(244) 2021-11-11 19:58:37 +01:00
ed35ea6894 -> v1.19.3 (244) 2021-11-11 19:58:32 +01:00
bd28db7422 Corretti nuovi filtri 2021-11-11 19:56:43 +01:00
9beea9f2e9 corretto filtro tramite barcode scanner sugli ordini di spedizione
corretto refresh filtro testuale in accettazione
2021-11-11 19:37:01 +01:00
205af60edb Finish v1.19.2(243) 2021-11-11 13:41:18 +01:00
21f9a9819a Finish v1.19.2(243) 2021-11-11 13:41:17 +01:00
4059335e61 -> v1.19.2 (243) 2021-11-11 13:41:12 +01:00
14252f0f4b Fix su gestione in accettazione da ordine di lavorazione 2021-11-11 13:40:11 +01:00
c13eee355e Merge remote-tracking branch 'origin/develop' into develop 2021-11-11 13:19:51 +01:00
51528fda6f fix Menu 2021-11-11 13:19:31 +01:00
1486d39eb8 Finish v1.19.1(242) 2021-11-11 13:09:41 +01:00
1951d8e2a4 Finish v1.19.1(242) 2021-11-11 13:09:40 +01:00
420fdf6b4c -> v1.19.1 (242) 2021-11-11 13:09:31 +01:00
a14a593e4f Aggiunta ricerca nei filtri in vendita 2021-11-11 13:08:38 +01:00
5d7ffa02c4 Finish v1.19.0(241) 2021-11-09 13:14:07 +01:00
4942807104 Finish v1.19.0(241) 2021-11-09 13:14:06 +01:00
20dafb1250 -> v1.19.0 (241) 2021-11-09 13:13:57 +01:00
eb0746de0c Creato nuovo filtro per gli ordini in uscita. 2021-11-09 13:11:47 +01:00
2e255e0c47 Merge remote-tracking branch 'origin/develop' into develop 2021-10-26 12:32:14 +02:00
6baebda5e1 Rimosse eccezioni interne da Firebase 2021-10-26 12:32:08 +02:00
8f943829ec Finish v1.18.10(240) 2021-10-21 13:10:40 +02:00
bd19d8c1a2 Finish v1.18.10(240) 2021-10-21 13:10:39 +02:00
3e79d0a07a -> 1.18.10 (240) 2021-10-21 13:10:29 +02:00
d2111e36ee Risolto bug progress dialog in ordini acquisto pv 2021-10-21 13:09:21 +02:00
47a1ab8223 Finish v1.8.9(239) 2021-10-14 17:17:12 +02:00
45df794280 Finish v1.8.9(239) 2021-10-14 17:17:12 +02:00
7a9bd15cfa -> v1.18.9 (239) 2021-10-14 17:16:52 +02:00
f902439086 Implementato nuovo servizio di printEtichettaSSCC 2021-10-14 17:16:04 +02:00
e7334d358b Finish v1.8.8(238) 2021-10-13 16:16:03 +02:00
262986f02c Finish v1.8.8(238) 2021-10-13 16:16:02 +02:00
76188aa792 -> v1.18.8 (238) 2021-10-13 16:15:57 +02:00
eb67d2fc65 Fix su controllo fake giacenza 2021-10-13 16:15:20 +02:00
83b2327247 Finish v1.18.7(237) 2021-10-11 19:09:20 +02:00
393 changed files with 20712 additions and 4884 deletions

1
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1 @@
/saveactions_settings.xml

16
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetsSelectedWithDialog>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="20119B1E55" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetsSelectedWithDialog>
</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_base" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" /> <module name="WMS.app" />
<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,7 +8,7 @@
<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_Native.dynamic_agricoper,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,WMS_Native.dynamic_vgalimenti,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv,dynamic_vgalimenti" /> <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="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="true" />

View File

@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_vglimenti" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false"> <configuration default="false" name="app_vglimenti" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS_Native.app" /> <module name="WMS.app" />
<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,7 +8,7 @@
<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_Native.dynamic__base,WMS_Native.dynamic_agricoper,WMS_Native.dynamic_frudis,WMS_Native.dynamic_gramm,WMS_Native.dynamic_ime,WMS_Native.dynamic_saporiveri,WMS_Native.dynamic_saporiveri_pv,dynamic__base,dynamic_frudis,dynamic_gramm,dynamic_ime,dynamic_saporiveri,dynamic_saporiveri_pv" /> <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base" />
<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="true" />

View File

@@ -1,13 +1,17 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
if (!project.hasProperty("disable-performance-plugin")) {
apply plugin: 'com.google.firebase.firebase-perf'
}
apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 237 def appVersionCode = 262
def appVersionName = '1.18.7' def appVersionName = '1.23.7'
signingConfigs { signingConfigs {
release { release {
@@ -27,12 +31,12 @@ android {
} }
} }
compileSdkVersion 30 compileSdkVersion 31
defaultConfig { defaultConfig {
applicationId "it.integry.integrywmsnative" applicationId "it.integry.integrywmsnative"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 30 targetSdkVersion 31
versionCode appVersionCode versionCode appVersionCode
versionName appVersionName versionName appVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -94,37 +98,37 @@ dependencies {
//Firebase //Firebase
// Import the Firebase BoM // Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:26.3.0') implementation platform('com.google.firebase:firebase-bom:29.1.0')
implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-core' implementation 'com.google.firebase:firebase-core'
implementation 'com.google.firebase:firebase-crash'
implementation 'com.google.firebase:firebase-crashlytics' implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-perf' implementation 'com.google.firebase:firebase-perf'
implementation 'com.google.android.gms:play-services-basement:17.6.0' implementation 'com.google.android.gms:play-services-basement:18.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.appcompat:appcompat:1.4.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.3.0' implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.0' implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.preference:preference-ktx:1.1.1' implementation 'androidx.preference:preference-ktx:1.2.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.annimon:stream:1.2.2' implementation 'com.annimon:stream:1.2.2'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1' implementation 'androidx.lifecycle:lifecycle-common-java8:2.4.1'
implementation 'org.apache.commons:commons-text:1.9' implementation 'org.apache.commons:commons-text:1.9'
//MVVM //MVVM
def dagger2_version = '2.29.1' def dagger2_version = '2.40'
api "com.google.dagger:dagger:$dagger2_version" api "com.google.dagger:dagger:$dagger2_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
api "com.google.dagger:dagger-android:$dagger2_version" api "com.google.dagger:dagger-android:$dagger2_version"
api "com.google.dagger:dagger-android-support:$dagger2_version" // if you use the support libraries api "com.google.dagger:dagger-android-support:$dagger2_version"
// if you use the support libraries
annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version" annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version"
//FAB //FAB
@@ -134,13 +138,12 @@ dependencies {
implementation 'com.github.cachapa:ExpandableLayout:2.9.2' implementation 'com.github.cachapa:ExpandableLayout:2.9.2'
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar' implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
implementation 'com.github.fede87:StatusBarAlert:1.0.1' implementation 'com.github.fede87:StatusBarAlert:1.0.1'
implementation 'com.github.akshay2211:Stash:master'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3' implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3'
implementation 'com.github.pedromassango:doubleClick:3.0' implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM //SQLite ROOM
def room_version = "2.3.0" def room_version = "2.4.1"
implementation "androidx.room:room-runtime:$room_version" implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version"
@@ -156,6 +159,9 @@ dependencies {
implementation project(':keyobardemulatorscannerlibrary') implementation project(':keyobardemulatorscannerlibrary')
androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1' androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1'
androidTestImplementation 'org.testng:testng:7.4.0' androidTestImplementation 'org.testng:testng:7.4.0'
implementation 'com.github.RaviKoradiya:LiveAdapter:1.3.4'
} }
repositories { repositories {

View File

@@ -19,7 +19,8 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
android:fullBackupContent="@xml/backup_descriptor"> android:fullBackupContent="@xml/backup_descriptor"
android:requestLegacyExternalStorage="true">
<activity <activity
android:name=".gest.spedizione.SpedizioneActivity" android:name=".gest.spedizione.SpedizioneActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
@@ -29,6 +30,10 @@
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/Light" android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" /> android:windowSoftInputMode="adjustNothing" />
<activity android:name=".gest.contab_doc_interni.edit_form.DocInterniEditFormActivity"
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity <activity
android:name=".gest.picking_resi.PickingResiActivity" android:name=".gest.picking_resi.PickingResiActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
@@ -36,7 +41,8 @@
<activity <activity
android:name=".gest.main.MainActivity" android:name=".gest.main.MainActivity"
android:theme="@style/Light" android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"> android:windowSoftInputMode="adjustNothing"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.CLIENTBARCODEACTIVITY" /> <action android:name="android.intent.action.CLIENTBARCODEACTIVITY" />
@@ -69,7 +75,8 @@
<activity <activity
android:name=".SplashActivity" android:name=".SplashActivity"
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/SplashTheme"> android:theme="@style/SplashTheme"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@@ -5,14 +5,28 @@ import javax.inject.Singleton;
import dagger.Component; import dagger.Component;
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.expansion.BaseActivityComponent;
import it.integry.integrywmsnative.core.expansion.BaseActivityModule;
import it.integry.integrywmsnative.core.expansion.BaseFragmentComponent;
import it.integry.integrywmsnative.core.expansion.BaseFragmentModule;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneComponent; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneComponent;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneModule; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneModule;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsModule;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliModule; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliModule;
import it.integry.integrywmsnative.gest.login.LoginComponent;
import it.integry.integrywmsnative.gest.login.LoginModule;
import it.integry.integrywmsnative.gest.main.MainActivityComponent; import it.integry.integrywmsnative.gest.main.MainActivityComponent;
import it.integry.integrywmsnative.gest.main.MainActivityModule; import it.integry.integrywmsnative.gest.main.MainActivityModule;
import it.integry.integrywmsnative.gest.main.MainFragmentComponent; import it.integry.integrywmsnative.gest.main.MainFragmentComponent;
@@ -51,10 +65,13 @@ import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviForn
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialogComponent;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
@@ -70,6 +87,9 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
RoomModule.class, RoomModule.class,
SplashActivityModule.class, SplashActivityModule.class,
MainApplicationModule.class, MainApplicationModule.class,
BaseActivityModule.class,
BaseFragmentModule.class,
LoginModule.class,
MainActivityModule.class, MainActivityModule.class,
MainFragmentModule.class, MainFragmentModule.class,
MainAccettazioneModule.class, MainAccettazioneModule.class,
@@ -97,44 +117,97 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
ProdOrdineProduzioneElencoModule.class, ProdOrdineProduzioneElencoModule.class,
ProdRecuperoMaterialeModule.class, ProdRecuperoMaterialeModule.class,
ProdVersamentoMaterialeModule.class, ProdVersamentoMaterialeModule.class,
DialogChooseArtsFromListaArtsModule.class DialogChooseArtsFromListaArtsModule.class,
DocInterniModule.class,
DialogSelectDocInfoModule.class,
DocInterniEditFormModule.class,
DialogSelectDocRowsModule.class,
DialogAskClienteModule.class
}) })
public interface MainApplicationComponent { public interface MainApplicationComponent {
BaseActivityComponent.Factory baseActivityComponent();
BaseFragmentComponent.Factory baseFragmentComponent();
SplashActivityComponent.Factory splashActivityComponent(); SplashActivityComponent.Factory splashActivityComponent();
LoginComponent.Factory loginActivityComponent();
MainActivityComponent.Factory mainActivityComponent(); MainActivityComponent.Factory mainActivityComponent();
MainFragmentComponent.Factory mainFragmentComponent(); MainFragmentComponent.Factory mainFragmentComponent();
MainAccettazioneComponent.Factory mainAccettazioneComponent(); MainAccettazioneComponent.Factory mainAccettazioneComponent();
ListaBancaliComponent.Factory listaBancaliComponent(); ListaBancaliComponent.Factory listaBancaliComponent();
ContenutoBancaleComponent.Factory contenutoBancaleComponent(); ContenutoBancaleComponent.Factory contenutoBancaleComponent();
PVOrdiniAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent(); PVOrdiniAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent();
PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent(); PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent();
PickingLiberoComponent.Factory pickingLiberoComponent(); PickingLiberoComponent.Factory pickingLiberoComponent();
RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent(); RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
SpedizioneComponent.Factory spedizioneComponent(); SpedizioneComponent.Factory spedizioneComponent();
AccettazionePickingComponent.Factory accettazionePickingComponent(); AccettazionePickingComponent.Factory accettazionePickingComponent();
UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent(); UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent();
UltimiArriviFornitoreComponent.Factory ultimiArriviFornitoreComponent(); UltimiArriviFornitoreComponent.Factory ultimiArriviFornitoreComponent();
PickingResiComponent.Factory pickingResiComponent(); PickingResiComponent.Factory pickingResiComponent();
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
DialogAskClienteComponent.Factory dialogAskClienteComponent();
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
DialogInputLUProdComponent.Factory dialogInputLUProdComponent(); DialogInputLUProdComponent.Factory dialogInputLUProdComponent();
DialogScanArtComponent.Factory dialogScanArtComponent(); DialogScanArtComponent.Factory dialogScanArtComponent();
DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent(); DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent();
ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent(); ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent();
VersamentoMerceComponent.Factory versamentoMerceComponent(); VersamentoMerceComponent.Factory versamentoMerceComponent();
DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent(); DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent();
DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent(); DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent();
DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent(); DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent();
ProdRientroMerceComponent.Factory prodRientroMerceComponent(); ProdRientroMerceComponent.Factory prodRientroMerceComponent();
ProdRientroMerceOrderDetailComponent.Factory prodRientroMerceOrderDetailComponent(); ProdRientroMerceOrderDetailComponent.Factory prodRientroMerceOrderDetailComponent();
ProdOrdineProduzioneElencoComponent.Factory prodOrdineProduzioneElencoComponent(); ProdOrdineProduzioneElencoComponent.Factory prodOrdineProduzioneElencoComponent();
ProdRecuperoMaterialeComponent.Factory prodRecuperoMaterialeComponent(); ProdRecuperoMaterialeComponent.Factory prodRecuperoMaterialeComponent();
ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent(); ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent();
DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent(); DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent();
DocInterniComponent.Factory docInterniComponent();
DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent();
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent();
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
void inject(MainApplication mainApplication); void inject(MainApplication mainApplication);
void inject(AppContext mainApplication); void inject(AppContext mainApplication);
} }

View File

@@ -15,16 +15,23 @@ import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
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.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.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
import it.integry.integrywmsnative.core.update.UpdatesManager;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
@Module @Module
public class MainApplicationModule { public class MainApplicationModule {
@@ -67,6 +74,24 @@ public class MainApplicationModule {
return new MenuService(menuRESTConsumer); return new MenuService(menuRESTConsumer);
} }
@Provides
@Singleton
UpdatesManager provideUpdatesManager() {
return new UpdatesManager();
}
@Provides
@Singleton
DialogProgressView providesDialogProgressView() {
return DialogProgressView.newInstance();
}
@Provides
@Singleton
DialogInputQuantityV2View providesDialogInputQuantityV2View() {
return new DialogInputQuantityV2View();
}
@Provides @Provides
@Singleton @Singleton
OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) { OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
@@ -81,14 +106,20 @@ public class MainApplicationModule {
@Provides @Provides
@Singleton @Singleton
ArticoloRESTConsumer provideArticoloRESTConsumer() { ArticoloRESTConsumer provideArticoloRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new ArticoloRESTConsumer(); return new ArticoloRESTConsumer(systemRESTConsumer);
} }
@Provides @Provides
@Singleton @Singleton
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer) { CommessaRESTConsumer provideCommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new DepositoRESTConsumer(entityRESTConsumer); return new CommessaRESTConsumer(systemRESTConsumer);
}
@Provides
@Singleton
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) {
return new DepositoRESTConsumer(entityRESTConsumer, systemRESTConsumer);
} }
@Provides @Provides
@@ -151,5 +182,22 @@ public class MainApplicationModule {
return new ProdFabbisognoLineeProdRESTConsumer(systemRESTConsumer); return new ProdFabbisognoLineeProdRESTConsumer(systemRESTConsumer);
} }
@Provides
@Singleton
DocInterniRESTConsumer provideDocInterniRESTConsumer() {
return new DocInterniRESTConsumer();
}
@Provides
@Singleton
GiacenzaRESTConsumer provideGiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
return new GiacenzaRESTConsumer(systemRESTConsumer, articoloRESTConsumer);
}
@Provides
@Singleton
InventarioService provideInventarioService(GiacenzaRESTConsumer giacenzaRESTConsumer) {
return new InventarioService(giacenzaRESTConsumer);
}
} }

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative; package it.integry.integrywmsnative;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@@ -38,6 +39,12 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
private RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult; private RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult;
public static void startActivity(Context context) {
Intent intent = new Intent(context, SplashActivity.class);
context.startActivity(intent);
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);

View File

@@ -16,7 +16,7 @@ public class CommonConst {
public static String DEFAULT_ANONYMOUS_UL_SERIE = "UL"; public static String DEFAULT_ANONYMOUS_UL_SERIE = "UL";
public static int NUMBER_OF_DECIMAL_DIGITS = 3; public static int NUMBER_OF_DECIMAL_DIGITS = 5;
} }
public static class Files { public static class Files {

View File

@@ -2,7 +2,6 @@ package it.integry.integrywmsnative.core.class_router;
import java.util.HashMap; import java.util.HashMap;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.utility.UtilityHashMap; import it.integry.integrywmsnative.core.utility.UtilityHashMap;
@@ -10,14 +9,12 @@ public class BaseCustomConfiguration implements ICustomConfiguration {
public static class Keys { public static class Keys {
public static int MENU_CONFIGURATION = 0;
public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1; public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1;
public static int CUSTOM_DYNAMIC_VERSION_PATH = 2; public static int CUSTOM_DYNAMIC_VERSION_PATH = 2;
public static int FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC = 3; public static int FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC = 3;
} }
protected HashMap<Integer, Object> configurations = new HashMap<Integer, Object>() {{ protected HashMap<Integer, Object> configurations = new HashMap<>() {{
put(Keys.MENU_CONFIGURATION, new MenuConfiguration());
put(Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE, true); put(Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE, true);
put(Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC, false); put(Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC, false);
}}; }};

View File

@@ -3,11 +3,13 @@ package it.integry.integrywmsnative.core.class_router.configs;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment; import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment; import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
@@ -123,6 +125,14 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale) .setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale)
.setDrawerIcon(R.drawable.ic_black_external) .setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance)) .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance))
.addItem(new MenuItem()
.setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce)
.setCodMenu("MG059")
.setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title)
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external)
.setFragmentFactory(ProdRientroMerceFragment::newInstance))
).addGroup( ).addGroup(
new MenuGroup() new MenuGroup()
.setGroupText(R.string.internal_handling) .setGroupText(R.string.internal_handling)
@@ -159,6 +169,13 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance)) .setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance))
.addItem(new MenuItem()
.setCodMenu("MG058")
.setID(it.integry.integrywmsnative.R.id.nav_pv_doc_interni)
.setTitleText(it.integry.integrywmsnative.R.string.doc_interni)
.setTitleIcon(R.drawable.ic_dashboard_contab_doc_interni)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_contab_doc_interni)
.setFragmentFactory(DocInterniFragment::newInstance))
// .addItem(new MenuItem() // .addItem(new MenuItem()
// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi) // .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi)

View File

@@ -50,7 +50,6 @@ public class AppContext {
} }
private void initSettings() { private void initSettings() {
Stash.init(mApplicationContext); Stash.init(mApplicationContext);
SettingsManager.init(mApplicationContext); SettingsManager.init(mApplicationContext);
@@ -80,5 +79,4 @@ public class AppContext {
Logger.addLogAdapter(new AndroidLogAdapter()); Logger.addLogAdapter(new AndroidLogAdapter());
} }
} }

View File

@@ -1,49 +0,0 @@
package it.integry.integrywmsnative.core.coollection;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
import it.integry.integrywmsnative.core.coollection.matcher.custom.Contains;
import it.integry.integrywmsnative.core.coollection.matcher.custom.Equals;
import it.integry.integrywmsnative.core.coollection.matcher.custom.EqualsIgnoreCase;
import it.integry.integrywmsnative.core.coollection.matcher.custom.GreaterThan;
import it.integry.integrywmsnative.core.coollection.matcher.custom.IsNull;
import it.integry.integrywmsnative.core.coollection.matcher.custom.LessThan;
import it.integry.integrywmsnative.core.coollection.matcher.custom.Not;
import it.integry.integrywmsnative.core.coollection.query.Query;
import java.util.Collection;
public class Coollection {
public static <T> Query<T> from(Collection<T> collection) {
return new Query<T>(collection);
}
public static Matcher eq(Object value) {
return new Equals(value);
}
public static Matcher contains(String value) {
return new Contains(value);
}
public static Matcher eqIgnoreCase(String value) {
return new EqualsIgnoreCase(value);
}
public static Matcher not(Matcher matcher) {
return new Not(matcher);
}
public static Matcher greaterThan(Number value) {
return new GreaterThan(value);
}
public static Matcher lessThan(Number value) {
return new LessThan(value);
}
public static Matcher isNull() {
return new IsNull();
}
}

View File

@@ -1,7 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher;
public interface Matcher {
boolean match(Object value);
}

View File

@@ -1,18 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class Contains implements Matcher {
private final String matcherValue;
public Contains(String matcherValue) {
this.matcherValue = matcherValue;
}
@Override
public boolean match(Object value) {
return String.valueOf(value).contains(matcherValue);
}
}

View File

@@ -1,18 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class Equals implements Matcher {
private final Object value;
public Equals(Object value) {
this.value = value;
}
@Override
public boolean match(Object anotherValue) {
return value.equals(anotherValue);
}
}

View File

@@ -1,18 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class EqualsIgnoreCase implements Matcher {
private final String value;
public EqualsIgnoreCase(String value) {
this.value = value;
}
@Override
public boolean match(Object anotherValue) {
return (value).equalsIgnoreCase((String) anotherValue);
}
}

View File

@@ -1,21 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class GreaterThan implements Matcher {
private final Number value;
public GreaterThan(Number value) {
this.value = value;
}
@Override
public boolean match(Object matchValue) {
if (matchValue == null) {
return false;
}
return ((Number) matchValue).doubleValue() > value.doubleValue();
}
}

View File

@@ -1,12 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class IsNull implements Matcher {
@Override
public boolean match(Object value) {
return value == null;
}
}

View File

@@ -1,21 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class LessThan implements Matcher {
private final Number value;
public LessThan(Number value) {
this.value = value;
}
@Override
public boolean match(Object matchValue) {
if (matchValue == null) {
return false;
}
return ((Number) matchValue).doubleValue() < value.doubleValue();
}
}

View File

@@ -1,18 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class Not implements Matcher {
private final Matcher matcher;
public Not(Matcher matcher) {
this.matcher = matcher;
}
@Override
public boolean match(Object value) {
return !matcher.match(value);
}
}

View File

@@ -1,90 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria;
import it.integry.integrywmsnative.core.coollection.query.criteria.CriteriaList;
import it.integry.integrywmsnative.core.coollection.query.order.Order;
import it.integry.integrywmsnative.core.coollection.query.order.OrderCriteria;
import it.integry.integrywmsnative.core.coollection.query.specification.custom.AndSpecification;
import it.integry.integrywmsnative.core.coollection.query.specification.custom.OrSpecification;
public class Query<T> {
private final Collection<T> collection;
private CriteriaList<T> criterias;
private OrderCriteria<T> orderCriteria;
public Query(Collection<T> collection) {
this.collection = collection;
criterias = new CriteriaList<T>();
}
public Query<T> where(String method, Matcher matcher) {
Criteria<T> criteria = new Criteria<T>(method, matcher);
criterias.add(criteria);
return this;
}
public Query<T> and(String method, Matcher matcher) {
Criteria<T> criteria = new Criteria<T>(method, matcher);
criteria.setSpecification(new AndSpecification<T>());
criterias.add(criteria);
return this;
}
public Query<T> or(String method, Matcher matcher) {
Criteria<T> criteria = new Criteria<T>(method, matcher);
criteria.setSpecification(new OrSpecification<T>());
criterias.add(criteria);
return this;
}
public Query<T> orderBy(String method, Order order) {
orderCriteria = new OrderCriteria<T>(method, order);
return this;
}
public Query<T> orderBy(String method) {
return orderBy(method, Order.ASC);
}
public List<T> all() {
List<T> all = new ArrayList<T>();
for (T item : collection) {
if (criterias.match(item)) {
all.add(item);
}
}
if (orderCriteria != null) {
all = orderCriteria.sort(all);
}
return all;
}
public T first() {
List<T> all = cloneCollection(collection);
if (orderCriteria != null) {
all = orderCriteria.sort(all);
}
for (T item : all) {
if (criterias.match(item)) {
return item;
}
}
return null;
}
private List<T> cloneCollection(Collection<T> collection) {
List<T> list = new ArrayList<T>();
for (T item : collection) {
list.add(item);
}
return list;
}
}

View File

@@ -1,34 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.criteria;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
import it.integry.integrywmsnative.core.coollection.query.specification.Specification;
import it.integry.integrywmsnative.core.coollection.reflection.Phanton;
public class Criteria<T> {
private final String method;
private final Matcher matcher;
private Specification<T> specification;
public Criteria(String method, Matcher matcher) {
this.method = method;
this.matcher = matcher;
}
public void setSpecification(Specification<T> specification) {
this.specification = specification;
}
public Specification<T> specification() {
return specification;
}
public boolean match(T item) {
try {
Object value = Phanton.from(item).call(method);
return matcher.match(value);
} catch (Exception err) {
throw new RuntimeException(err);
}
}
}

View File

@@ -1,34 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.criteria;
import java.util.ArrayList;
import java.util.List;
public class CriteriaList<T> {
private List<Criteria<T>> criterias;
public CriteriaList() {
criterias = new ArrayList<Criteria<T>>();
}
public void add(Criteria<T> criteria) {
criterias.add(criteria);
}
public boolean match(T item) {
if (criterias.size() == 0) {
return true;
}
if (criterias.size() == 1) {
return criterias.get(0).match(item);
}
boolean matched = true;
for (int i = criterias.size() - 1; i > 0; i--) {
Criteria<T> one = criterias.get(i);
Criteria<T> other = criterias.get(i - 1);
matched = matched && one.specification().match(item, one, other);
}
return matched;
}
}

View File

@@ -1,5 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.order;
public enum Order {
ASC, DESC
}

View File

@@ -1,30 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.order;
import it.integry.integrywmsnative.core.coollection.reflection.Phanton;
import java.util.Comparator;
public class OrderComparator<T> implements Comparator<T> {
private final String method;
public OrderComparator(String method) {
this.method = method;
}
@Override
@SuppressWarnings("unchecked")
public int compare(T one, T other) {
Object oneValue = Phanton.from(one).call(method);
Object otherValue = Phanton.from(other).call(method);
if (oneValue == null || otherValue == null) {
return 0;
}
if (oneValue instanceof Comparable) {
return ((Comparable<Object>) oneValue).compareTo(otherValue);
} else {
return 0;
}
}
}

View File

@@ -1,24 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.order;
import java.util.Collections;
import java.util.List;
public class OrderCriteria<T> {
private final String method;
private final Order order;
public OrderCriteria(String method, Order order) {
this.method = method;
this.order = order;
}
public List<T> sort(List<T> list) {
Collections.sort(list, new OrderComparator<T>(method));
if (order == Order.DESC) {
Collections.reverse(list);
}
return list;
}
}

View File

@@ -1,9 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.specification;
import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria;
public interface Specification<T> {
boolean match(T item, Criteria<T> one, Criteria<T> other);
}

View File

@@ -1,13 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.specification.custom;
import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria;
import it.integry.integrywmsnative.core.coollection.query.specification.Specification;
public class AndSpecification<T> implements Specification<T> {
@Override
public boolean match(T item, Criteria<T> one, Criteria<T> other) {
return one.match(item) && other.match(item);
}
}

View File

@@ -1,14 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.specification.custom;
import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria;
import it.integry.integrywmsnative.core.coollection.query.specification.Specification;
public class OrSpecification<T> implements Specification<T> {
@Override
public boolean match(T item, Criteria<T> one, Criteria<T> other) {
return one.match(item) || other.match(item);
}
}

View File

@@ -1,37 +0,0 @@
package it.integry.integrywmsnative.core.coollection.reflection;
import java.lang.reflect.Field;
public class Phanton<T> {
private final T target;
private Class<?> clazz;
private Phanton(T target) {
this.target = target;
clazz = target.getClass();
}
public static <T> Phanton<T> from(T target) {
return new Phanton<T>(target);
}
public Object call(String name) {
return invoke(name);
}
private Object invoke(String name) {
for (final Field field : clazz.getDeclaredFields()) {
try {
if (name.equals(field.getName())) {
field.setAccessible(Boolean.TRUE);
return field.get(target);
}
} catch (final IllegalAccessException e) {
throw new RuntimeException(e);
}
}
throw new RuntimeException("No such property with name " + name);
}
}

View File

@@ -8,13 +8,17 @@ import it.integry.integrywmsnative.core.data_store.db.converter.DateConverter;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao; import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao; import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 1, exportSchema = false) @Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 7, exportSchema = false)
@TypeConverters({ @TypeConverters({
DateConverter.class DateConverter.class
}) })
@@ -30,26 +34,9 @@ public abstract class AppDatabase extends RoomDatabase {
public abstract ArticoloOrdineDao articoloOrdineDao(); public abstract ArticoloOrdineDao articoloOrdineDao();
// public static AppDatabase getDatabase(final Context context) { public abstract MtbColtDao mtbColtDao();
// if (INSTANCE == null) {
// synchronized (AppDatabase.class) {
// if (INSTANCE == null) {
// INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
// AppDatabase.class, "integry_wms")
// .fallbackToDestructiveMigration()
// .build();
// }
// }
// }
// return INSTANCE;
// }
// public AppDatabase(Application application) { public abstract MtbColrDao mtbColrDao();
// mRoomInstance = Room.databaseBuilder(application,
// AppDatabase.class, "integry_wms")
// .fallbackToDestructiveMigration()
// .build();
// }
} }

View File

@@ -11,15 +11,21 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao; import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao; import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliGrigliaDataSource; import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliGrigliaDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliOrdineDataSource; import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliOrdineDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.GrigliaDataSource; import it.integry.integrywmsnative.core.data_store.db.repository.implementations.GrigliaDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.OrdineDataSource; import it.integry.integrywmsnative.core.data_store.db.repository.implementations.OrdineDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.SqlMtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.SqlMtbColtDataSource;
@Module @Module
public class RoomModule { public class RoomModule {
@@ -66,6 +72,18 @@ public class RoomModule {
return appDatabase.articoloOrdineDao(); return appDatabase.articoloOrdineDao();
} }
@Singleton
@Provides
MtbColtDao providesMtbColtDao(AppDatabase appDatabase) {
return appDatabase.mtbColtDao();
}
@Singleton
@Provides
MtbColrDao providesMtbColrDao(AppDatabase appDatabase) {
return appDatabase.mtbColrDao();
}
@@ -96,4 +114,16 @@ public class RoomModule {
return new OrdineDataSource(ordineDao); return new OrdineDataSource(ordineDao);
} }
@Singleton
@Provides
MtbColtRepository providesMtbColtRepository(MtbColtDao mtbColtDao) {
return new SqlMtbColtDataSource(mtbColtDao);
}
@Singleton
@Provides
MtbColrRepository providesMtbColrRepository(MtbColrDao mtbColrDao) {
return new SqlMtbColrDataSource(mtbColrDao);
}
} }

View File

@@ -6,7 +6,6 @@ import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
import androidx.room.Update; import androidx.room.Update;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
@@ -21,10 +20,13 @@ public interface ArticoloGrigliaDao {
@Insert @Insert
void insertAll(List<ArticoloGriglia> articoli); void insertAll(List<ArticoloGriglia> articoli);
@Insert @Insert
Long insert(ArticoloGriglia articolo); Long insert(ArticoloGriglia articolo);
@Update @Update
void updateAll(List<ArticoloGriglia> articoli); void updateAll(List<ArticoloGriglia> articoli);
@Update @Update
void update(ArticoloGriglia articolo); void update(ArticoloGriglia articolo);
@@ -45,4 +47,7 @@ public interface ArticoloGrigliaDao {
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId") @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId")
List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId); List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId);
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId and new_no_promo = 1")
List<ArticoloGriglia> getNewArticoliInGriglia(int grigliaId);
} }

View File

@@ -0,0 +1,30 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
@Dao
public interface MtbColrDao {
@Query("SELECT * from mtb_colr ")
List<SqlMtbColr> getAll();
@Insert
Long insert(SqlMtbColr mtbColr);
@Update
void update(SqlMtbColr mtbColr);
@Delete
void delete(SqlMtbColr mtbColr);
@Query("SELECT * from mtb_colr where id_collo = :idDocument")
List<SqlMtbColr> getDocumentRows(int idDocument);
}

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
@Dao
public interface MtbColtDao {
@Query("SELECT * from mtb_colt")
List<SqlMtbColt> getAll();
@Insert
Long insert(SqlMtbColt mtbColt);
@Update
void update(SqlMtbColt mtbColt);
@Delete
void delete(SqlMtbColt mtbColt);
@Query("SELECT mtb_colt.*, count(mtb_colr.id) as countArticoli from mtb_colt left outer join mtb_colr on (mtb_colr.id_collo = mtb_colt.id) where" +
" cod_dtip_provv = :codDtip " +
" AND ( cod_anag = :codAnag OR (cod_anag is null and :codAnag is null)) " +
" AND ( cod_vdes = :codVdes OR (cod_vdes is null and :codVdes is null)) " +
" AND ( mtb_colt.data_doc = :dataDoc OR (mtb_colt.data_doc is null and :dataDoc is null)) " +
" AND ( mtb_colt.num_doc = :numDoc OR (mtb_colt.num_doc is null and :numDoc is null)) " +
" and cod_dtip is null group by mtb_colt.id")
List<DocInternoWrapper> getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc);
@Query("SELECT ifnull(MAX(num_collo),0) +1 as num_collo from mtb_colt")
Integer getNextNumCollo();
}

View File

@@ -6,6 +6,8 @@ import androidx.room.ForeignKey;
import androidx.room.Index; import androidx.room.Index;
import androidx.room.PrimaryKey; import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
@Entity( @Entity(
@@ -54,9 +56,24 @@ public class ArticoloGriglia {
@ColumnInfo(name = "qta_min_ordinabile") @ColumnInfo(name = "qta_min_ordinabile")
private float qtaMinOrdinabile; private float qtaMinOrdinabile;
@ColumnInfo(name = "gg_scadenza")
private int ggScadenza;
@ColumnInfo(name = "giacenza")
private float giacenza;
@ColumnInfo(name = "qta_prevista_vendita")
private float qtaPrevistaVendita;
@ColumnInfo(name = "qta_proposta")
private float qtaProposta;
@ColumnInfo(name = "id_griglia") @ColumnInfo(name = "id_griglia")
private int idGriglia; private int idGriglia;
@ColumnInfo(name = "new_no_promo")
private boolean newNoPromo = false;
public int getArticoloGrigliaId() { public int getArticoloGrigliaId() {
return articoloGrigliaId; return articoloGrigliaId;
} }
@@ -145,6 +162,46 @@ public class ArticoloGriglia {
this.idGriglia = idGriglia; this.idGriglia = idGriglia;
} }
public int getGgScadenza() {
return ggScadenza;
}
public void setGgScadenza(int ggScadenza) {
this.ggScadenza = ggScadenza;
}
public float getGiacenza() {
return giacenza;
}
public void setGiacenza(float giacenza) {
this.giacenza = giacenza;
}
public float getQtaPrevistaVendita() {
return qtaPrevistaVendita;
}
public void setQtaPrevistaVendita(float qtaPrevistaVendita) {
this.qtaPrevistaVendita = qtaPrevistaVendita;
}
public float getQtaProposta() {
return qtaProposta;
}
public void setQtaProposta(float qtaProposta) {
this.qtaProposta = qtaProposta;
}
public boolean isNewNoPromo() {
return newNoPromo;
}
public void setNewNoPromo(boolean newNoPromo) {
this.newNoPromo = newNoPromo;
}
public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) { public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
ArticoloOrdine articolo = new ArticoloOrdine(); ArticoloOrdine articolo = new ArticoloOrdine();
@@ -160,6 +217,12 @@ public class ArticoloGriglia {
articolo.setUntMis(this.getUntMis()); articolo.setUntMis(this.getUntMis());
articolo.setDescrizione(this.getDescrizione()); articolo.setDescrizione(this.getDescrizione());
articolo.setDataIns(UtilityDate.getDateInstance()); articolo.setDataIns(UtilityDate.getDateInstance());
articolo.setGgScadenza(this.getGgScadenza());
articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza()));
articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita()));
articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta()));
articolo.setNewNoPromo(this.isNewNoPromo());
articolo.setQtaOrd(0); articolo.setQtaOrd(0);
return articolo; return articolo;

View File

@@ -3,16 +3,19 @@ package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo; import androidx.room.ColumnInfo;
import androidx.room.Entity; import androidx.room.Entity;
import androidx.room.ForeignKey; import androidx.room.ForeignKey;
import androidx.room.Ignore;
import androidx.room.Index; import androidx.room.Index;
import androidx.room.PrimaryKey; import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
@Entity( @Entity(
tableName = "articoli_ordine", tableName = "articoli_ordine",
indices = { indices = {
@Index(value = "id_ordine"), @Index(value = "id_ordine"),
@Index(value = {"id_ordine","cod_mart"}, unique = true) @Index(value = {"id_ordine", "cod_mart"}, unique = true)
}, },
foreignKeys = { foreignKeys = {
@ForeignKey( @ForeignKey(
@@ -22,11 +25,11 @@ import java.util.Date;
onDelete = ForeignKey.CASCADE onDelete = ForeignKey.CASCADE
) )
} }
) )
public class ArticoloOrdine { public class ArticoloOrdine {
@PrimaryKey(autoGenerate = true) @PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "articolo_ordine_id") @ColumnInfo(name = "articolo_ordine_id")
private int articoloOrdineId; private Integer articoloOrdineId;
@ColumnInfo(name = "cod_mart") @ColumnInfo(name = "cod_mart")
private String codMart; private String codMart;
@@ -64,7 +67,23 @@ public class ArticoloOrdine {
@ColumnInfo(name = "data_ins") @ColumnInfo(name = "data_ins")
private Date dataIns; private Date dataIns;
public int getArticoloOrdineId() { @ColumnInfo(name = "new_no_promo")
private boolean newNoPromo;
@Ignore
private int ggScadenza = 0;
@Ignore
private BigDecimal giacenza = BigDecimal.ZERO;
@Ignore
private BigDecimal qtaPrevistaVendita = BigDecimal.ZERO;
@Ignore
private BigDecimal qtaProposta = BigDecimal.ZERO;
public Integer getArticoloOrdineId() {
return articoloOrdineId; return articoloOrdineId;
} }
@@ -167,4 +186,64 @@ public class ArticoloOrdine {
public void setDataIns(Date dataIns) { public void setDataIns(Date dataIns) {
this.dataIns = dataIns; this.dataIns = dataIns;
} }
public int getGgScadenza() {
return ggScadenza;
}
public ArticoloOrdine setGgScadenza(int ggScadenza) {
this.ggScadenza = ggScadenza;
return this;
}
public BigDecimal getGiacenza() {
return giacenza;
}
public ArticoloOrdine setGiacenza(BigDecimal giacenza) {
this.giacenza = giacenza;
return this;
}
public BigDecimal getQtaPrevistaVendita() {
return qtaPrevistaVendita;
}
public ArticoloOrdine setQtaPrevistaVendita(BigDecimal qtaPrevistaVendita) {
this.qtaPrevistaVendita = qtaPrevistaVendita;
return this;
}
public BigDecimal getQtaProposta() {
return qtaProposta;
}
public ArticoloOrdine setQtaProposta(BigDecimal qtaProposta) {
this.qtaProposta = qtaProposta;
return this;
}
public BigDecimal getQtaCnfPrevistaVendita() {
return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
}
public BigDecimal getQtaCnfProposta() {
return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
}
public BigDecimal getQtaCnfGiacenza() {
return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
}
public boolean isNewNoPromo() {
return newNoPromo;
}
public void setNewNoPromo(boolean newNoPromo) {
this.newNoPromo = newNoPromo;
}
public float getCnfDaRic() {
return qtaCnf > 0.f ? merceDaRic / qtaCnf : 0;
}
} }

View File

@@ -0,0 +1,438 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import java.util.Date;
@Entity(
tableName = "mtb_colr",
indices = {
@Index(value = {"data_collo", "ser_collo", "num_collo", "gestione","riga"}, unique = true),
@Index(value = {"id_collo"})
},
foreignKeys = {
@ForeignKey(
entity = SqlMtbColt.class,
parentColumns = "id",
childColumns = "id_collo",
onDelete = ForeignKey.CASCADE
)
}
)
public class SqlMtbColr {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
private int id;
@ColumnInfo(name = "id_collo")
private int idCollo;
@ColumnInfo(name = "data_collo")
private Date dataCollo;
@ColumnInfo(name = "gestione")
private String gestione;
@ColumnInfo(name = "ser_collo")
private String serCollo;
@ColumnInfo(name = "descrizione")
private String descrizione;
@ColumnInfo(name = "num_collo")
private Integer numCollo;
@ColumnInfo(name = "riga")
private Integer riga;
@ColumnInfo(name = "riga_ord")
private Integer rigaOrd;
@ColumnInfo(name = "cod_mart")
private String codMart;
@ColumnInfo(name = "cod_barre")
private String codBarre;
@ColumnInfo(name = "cod_col")
private String codCol;
@ColumnInfo(name = "cod_tagl")
private String codTagl;
@ColumnInfo(name = "partita_mag")
private String partitaMag;
@ColumnInfo(name = "gestione_rif")
private String gestioneRif;
@ColumnInfo(name = "ser_collo_rif")
private String serColloRif;
@ColumnInfo(name = "note")
private String note;
@ColumnInfo(name = "data_ord")
private Date dataOrd;
@ColumnInfo(name = "data_collo_rif")
private Date dataColloRif;
@ColumnInfo(name = "qta_cnf")
private Float qtaCnf;
@ColumnInfo(name = "qta_col")
private Float qtaCol;
@ColumnInfo(name = "num_ord")
private Integer numOrd;
@ColumnInfo(name = "num_etich")
private Integer numEtich;
@ColumnInfo(name = "num_collo_rif")
private Integer numColloRif;
@ColumnInfo(name = "datetime_row")
private Date datetimeRow;
@ColumnInfo(name = "cod_jcom")
private String codJcom;
@ColumnInfo(name = "num_cnf")
private Float numCnf;
@ColumnInfo(name = "causale")
private String causale;
@ColumnInfo(name = "utente")
private String utente;
@ColumnInfo(name = "cod_anag_doc")
private String codAnagDoc;
@ColumnInfo(name = "cod_dtip_doc")
private String codDtipDoc;
@ColumnInfo(name = "data_doc")
private Date dataDoc;
@ColumnInfo(name = "ser_doc")
private String serDoc;
@ColumnInfo(name = "num_doc")
private Integer numDoc;
@ColumnInfo(name = "id_riga_doc")
private Integer idRigaDoc;
@ColumnInfo(name = "unt_mis")
private String untMis;
@ColumnInfo(name = "data_scad")
private Date dataScad;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIdCollo() {
return idCollo;
}
public void setIdCollo(int idCollo) {
this.idCollo = idCollo;
}
public Date getDataCollo() {
return dataCollo;
}
public void setDataCollo(Date dataCollo) {
this.dataCollo = dataCollo;
}
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public String getSerCollo() {
return serCollo;
}
public void setSerCollo(String serCollo) {
this.serCollo = serCollo;
}
public Integer getNumCollo() {
return numCollo;
}
public void setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
}
public Integer getRiga() {
return riga;
}
public void setRiga(Integer riga) {
this.riga = riga;
}
public Integer getRigaOrd() {
return rigaOrd;
}
public void setRigaOrd(Integer rigaOrd) {
this.rigaOrd = rigaOrd;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getCodBarre() {
return codBarre;
}
public void setCodBarre(String codBarre) {
this.codBarre = codBarre;
}
public String getCodCol() {
return codCol;
}
public void setCodCol(String codCol) {
this.codCol = codCol;
}
public String getCodTagl() {
return codTagl;
}
public void setCodTagl(String codTagl) {
this.codTagl = codTagl;
}
public String getPartitaMag() {
return partitaMag;
}
public void setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
}
public String getGestioneRif() {
return gestioneRif;
}
public void setGestioneRif(String gestioneRif) {
this.gestioneRif = gestioneRif;
}
public String getSerColloRif() {
return serColloRif;
}
public void setSerColloRif(String serColloRif) {
this.serColloRif = serColloRif;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public Date getDataOrd() {
return dataOrd;
}
public void setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
}
public Date getDataColloRif() {
return dataColloRif;
}
public void setDataColloRif(Date dataColloRif) {
this.dataColloRif = dataColloRif;
}
public Float getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(Float qtaCnf) {
this.qtaCnf = qtaCnf;
}
public Float getQtaCol() {
return qtaCol;
}
public void setQtaCol(Float qtaCol) {
this.qtaCol = qtaCol;
}
public Integer getNumOrd() {
return numOrd;
}
public void setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
}
public Integer getNumEtich() {
return numEtich;
}
public void setNumEtich(Integer numEtich) {
this.numEtich = numEtich;
}
public Integer getNumColloRif() {
return numColloRif;
}
public void setNumColloRif(Integer numColloRif) {
this.numColloRif = numColloRif;
}
public Date getDatetimeRow() {
return datetimeRow;
}
public void setDatetimeRow(Date datetimeRow) {
this.datetimeRow = datetimeRow;
}
public String getCodJcom() {
return codJcom;
}
public void setCodJcom(String codJcom) {
this.codJcom = codJcom;
}
public Float getNumCnf() {
return numCnf;
}
public void setNumCnf(Float numCnf) {
this.numCnf = numCnf;
}
public String getCausale() {
return causale;
}
public void setCausale(String causale) {
this.causale = causale;
}
public String getUtente() {
return utente;
}
public void setUtente(String utente) {
this.utente = utente;
}
public String getCodAnagDoc() {
return codAnagDoc;
}
public void setCodAnagDoc(String codAnagDoc) {
this.codAnagDoc = codAnagDoc;
}
public String getCodDtipDoc() {
return codDtipDoc;
}
public void setCodDtipDoc(String codDtipDoc) {
this.codDtipDoc = codDtipDoc;
}
public Date getDataDoc() {
return dataDoc;
}
public void setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
}
public String getSerDoc() {
return serDoc;
}
public void setSerDoc(String serDoc) {
this.serDoc = serDoc;
}
public Integer getNumDoc() {
return numDoc;
}
public void setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
}
public Integer getIdRigaDoc() {
return idRigaDoc;
}
public void setIdRigaDoc(Integer idRigaDoc) {
this.idRigaDoc = idRigaDoc;
}
public String getUntMis() {
return untMis;
}
public void setUntMis(String untMis) {
this.untMis = untMis;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public Date getDataScad() {
return dataScad;
}
public void setDataScad(Date dataScad) {
this.dataScad = dataScad;
}
}

View File

@@ -0,0 +1,341 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Entity(
tableName = "mtb_colt",
indices = {
@Index(value = {"data_collo", "ser_collo", "num_collo", "gestione"}, unique = true)
}
)
public class SqlMtbColt {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
private int id;
@ColumnInfo(name = "username")
private String username;
@ColumnInfo
private String gestione;
@ColumnInfo(name = "data_collo")
private Date dataCollo;
@ColumnInfo(name = "ser_collo")
private String serCollo;
@ColumnInfo(name = "num_collo")
private Integer numCollo;
@ColumnInfo(name = "rif_ord")
private String rifOrd;
@ColumnInfo(name = "cod_anag")
private String codAnag;
@ColumnInfo(name = "cod_vdes")
private String codVdes;
@ColumnInfo(name = "cod_mdep")
private String codMdep;
@ColumnInfo(name = "cod_vlis")
private String codVlis;
@ColumnInfo(name = "cod_dtip")
private String codDtip;
@ColumnInfo(name = "cod_tcol")
private String codTcol;
@ColumnInfo(name = "ser_doc")
private String serDoc;
@ColumnInfo(name = "annotazioni")
private String annotazioni;
@ColumnInfo(name = "posizione")
private String posizione;
@ColumnInfo(name = "cod_dtip_provv")
private String codDtipProvv;
@ColumnInfo(name = "ser_doc_provv")
private String serDocProvv;
@ColumnInfo(name = "cod_jfas")
private String codJfas;
@ColumnInfo(name = "data_ord")
private Date dataOrd;
@ColumnInfo(name = "data_doc")
private Date dataDoc;
@ColumnInfo(name = "data_doc_provv")
private Date dataDocProvv;
@ColumnInfo(name = "cod_mgrp")
private String codMgrp;
@ColumnInfo(name = "data_vers")
private Date dataVers;
@ColumnInfo(name = "segno")
private Integer segno;
@ColumnInfo(name = "num_ord")
private Integer numOrd;
@ColumnInfo(name = "num_doc")
private Integer numDoc;
@ColumnInfo(name = "num_doc_provv")
private Integer numDocProvv;
@Ignore
private List<SqlMtbColr> sqlMtbColrs = new ArrayList<>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public Date getDataCollo() {
return dataCollo;
}
public void setDataCollo(Date dataCollo) {
this.dataCollo = dataCollo;
}
public String getSerCollo() {
return serCollo;
}
public void setSerCollo(String serCollo) {
this.serCollo = serCollo;
}
public Integer getNumCollo() {
return numCollo;
}
public void setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
}
public String getRifOrd() {
return rifOrd;
}
public void setRifOrd(String rifOrd) {
this.rifOrd = rifOrd;
}
public String getCodAnag() {
return codAnag;
}
public void setCodAnag(String codAnag) {
this.codAnag = codAnag;
}
public String getCodVdes() {
return codVdes;
}
public void setCodVdes(String codVdes) {
this.codVdes = codVdes;
}
public String getCodMdep() {
return codMdep;
}
public void setCodMdep(String codMdep) {
this.codMdep = codMdep;
}
public String getCodVlis() {
return codVlis;
}
public void setCodVlis(String codVlis) {
this.codVlis = codVlis;
}
public String getCodDtip() {
return codDtip;
}
public void setCodDtip(String codDtip) {
this.codDtip = codDtip;
}
public String getCodTcol() {
return codTcol;
}
public void setCodTcol(String codTcol) {
this.codTcol = codTcol;
}
public String getSerDoc() {
return serDoc;
}
public void setSerDoc(String serDoc) {
this.serDoc = serDoc;
}
public String getAnnotazioni() {
return annotazioni;
}
public void setAnnotazioni(String annotazioni) {
this.annotazioni = annotazioni;
}
public String getPosizione() {
return posizione;
}
public void setPosizione(String posizione) {
this.posizione = posizione;
}
public String getCodDtipProvv() {
return codDtipProvv;
}
public void setCodDtipProvv(String codDtipProvv) {
this.codDtipProvv = codDtipProvv;
}
public String getSerDocProvv() {
return serDocProvv;
}
public void setSerDocProvv(String serDocProvv) {
this.serDocProvv = serDocProvv;
}
public String getCodJfas() {
return codJfas;
}
public void setCodJfas(String codJfas) {
this.codJfas = codJfas;
}
public Date getDataOrd() {
return dataOrd;
}
public void setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
}
public Date getDataDoc() {
return dataDoc;
}
public void setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
}
public Date getDataDocProvv() {
return dataDocProvv;
}
public void setDataDocProvv(Date dataDocProvv) {
this.dataDocProvv = dataDocProvv;
}
public Date getDataVers() {
return dataVers;
}
public void setDataVers(Date dataVers) {
this.dataVers = dataVers;
}
public Integer getSegno() {
return segno;
}
public void setSegno(Integer segno) {
this.segno = segno;
}
public Integer getNumOrd() {
return numOrd;
}
public void setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
}
public Integer getNumDoc() {
return numDoc;
}
public void setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
}
public Integer getNumDocProvv() {
return numDocProvv;
}
public void setNumDocProvv(Integer numDocProvv) {
this.numDocProvv = numDocProvv;
}
public List<SqlMtbColr> getSqlMtbColrs() {
return sqlMtbColrs;
}
public void setSqlMtbColrs(List<SqlMtbColr> sqlMtbColrs) {
this.sqlMtbColrs = sqlMtbColrs;
}
public String getCodMgrp() {
return codMgrp;
}
public void setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
}
}

View File

@@ -16,4 +16,6 @@ public interface ArticoloGrigliaRepository {
void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail); void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail);
void findNewArticoliInGrigla(int idGriglia, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onFail);
} }

View File

@@ -0,0 +1,21 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface MtbColrRepository {
void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError);
void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError);
void getDocumentRows(SqlMtbColt sqlMtbColt, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
}

View File

@@ -0,0 +1,28 @@
package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface MtbColtRepository {
void selectAll(RunnableArgs<List<SqlMtbColt>> onSuccess, RunnableArgs<Exception> onError);
void insert(SqlMtbColt mtbColt, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
void update(SqlMtbColt mtbColt, RunnableArgs<SqlMtbColt> onSuccess, RunnableArgs<Exception> onError);
void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError);
void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError);
void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
}

View File

@@ -89,4 +89,14 @@ public class ArticoliGrigliaDataSource extends Repository implements ArticoloGri
} }
}); });
} }
public void findNewArticoliInGrigla(int idGriglia, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
onSuccess.run(mArticoloGrigliaDao.getNewArticoliInGriglia(idGriglia));
} catch (Exception e) {
onFail.run(e);
}
});
}
} }

View File

@@ -28,13 +28,15 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi
List<ArticoloOrdine> toUpdate = new ArrayList<>(); List<ArticoloOrdine> toUpdate = new ArrayList<>();
List<ArticoloOrdine> toInsert = new ArrayList<>(); List<ArticoloOrdine> toInsert = new ArrayList<>();
for (ArticoloOrdine art : articoli) { for (ArticoloOrdine art : articoli) {
if (art.getArticoloOrdineId() > 0) { if (art.getArticoloOrdineId() != null && art.getArticoloOrdineId() > 0) {
toUpdate.add(art); toUpdate.add(art);
} else { } else {
toInsert.add(art); toInsert.add(art);
} }
} }
mArticoloOrdineDao.insertAll(toInsert); for (ArticoloOrdine newArt : toInsert) {
mArticoloOrdineDao.insert(newArt);
}
mArticoloOrdineDao.updateAll(toUpdate); mArticoloOrdineDao.updateAll(toUpdate);
onSuccess.run(); onSuccess.run();
@@ -48,7 +50,7 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onFail) { public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> { execute(() -> {
try { try {
if (articolo.getArticoloOrdineId() > 0) { if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) {
mArticoloOrdineDao.update(articolo); mArticoloOrdineDao.update(articolo);
} else { } else {
mArticoloOrdineDao.insert(articolo); mArticoloOrdineDao.insert(articolo);

View File

@@ -0,0 +1,77 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColrDataSource extends Repository implements MtbColrRepository {
private MtbColrDao mMtbColrDao;
@Inject
public SqlMtbColrDataSource(MtbColrDao mtbColrDao) {
this.mMtbColrDao = mtbColrDao;
}
public void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColrDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
Long id = mMtbColrDao.insert(mtbColr);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
}
public void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColrDao.update(mtbColr);
onSuccess.run(mtbColr);
} catch (Exception e) {
onError.run(e);
}
});
}
public void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColrDao.delete(mtbColr);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
}
public void getDocumentRows(SqlMtbColt document, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColrDao.getDocumentRows(document.getId()));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
}

View File

@@ -0,0 +1,93 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColtDataSource extends Repository implements MtbColtRepository {
private MtbColtDao mMtbColtDao;
@Inject
public SqlMtbColtDataSource(MtbColtDao mtbColtDao) {
this.mMtbColtDao = mtbColtDao;
}
public void selectAll(RunnableArgs<List<SqlMtbColt>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void insert(SqlMtbColt mtbColt, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
Long id = mMtbColtDao.insert(mtbColt);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
}
public void update(SqlMtbColt mtbColt, RunnableArgs<SqlMtbColt> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColtDao.update(mtbColt);
onSuccess.run(mtbColt);
} catch (Exception e) {
onError.run(e);
}
});
}
public void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColtDao.delete(mtbColt);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
}
@Override
public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getLocalDocumentsByCodDtip(codDtip,codAnag,codVdes,dataDoc,numDoc));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
@Override
public void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getNextNumCollo());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
}

View File

@@ -4,31 +4,23 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
public class ArticoloDTO { public class ArticoloDTO {
private String codMart; public String codMart;
public String descrizione;
public String untMis;
public float qtaCnf;
public String barcode;
public float merceDaRic;
public float mediaSett;
public String flagQtaMultipla;
public String flagTracciabilita;
public float qtaMinOrdinabile;
public boolean newNoPromo;
private int ggScadenza;
private float giacenza;
private float qtaPrevistaVendita;
private float qtaProposta;
private String descrizione;
private String untMis;
private float qtaCnf;
private String barcode;
private float merceDaRic;
private float mediaSett;
private String flagQtaMultipla;
private float qtaMinOrdinabile;
public String getCodMart() { public String getCodMart() {
return codMart; return codMart;
} }
@@ -101,8 +93,65 @@ public class ArticoloDTO {
this.qtaMinOrdinabile = qtaMinOrdinabile; this.qtaMinOrdinabile = qtaMinOrdinabile;
} }
public String getBarcode() {
return barcode;
}
public ArticoloGriglia toArticoloGriglia(){ public void setBarcode(String barcode) {
this.barcode = barcode;
}
public int getGgScadenza() {
return ggScadenza;
}
public void setGgScadenza(int ggScadenza) {
this.ggScadenza = ggScadenza;
}
public float getGiacenza() {
return giacenza;
}
public void setGiacenza(float giacenza) {
this.giacenza = giacenza;
}
public float getQtaPrevistaVendita() {
return qtaPrevistaVendita;
}
public void setQtaPrevistaVendita(float qtaPrevistaVendita) {
this.qtaPrevistaVendita = qtaPrevistaVendita;
}
public float getQtaProposta() {
return qtaProposta;
}
public void setQtaProposta(float qtaProposta) {
this.qtaProposta = qtaProposta;
}
public String getFlagTracciabilita() {
return flagTracciabilita;
}
public ArticoloDTO setFlagTracciabilita(String flagTracciabilita) {
this.flagTracciabilita = flagTracciabilita;
return this;
}
public boolean isNewNoPromo() {
return newNoPromo;
}
public ArticoloDTO setNewNoPromo(boolean newNoPromo) {
this.newNoPromo = newNoPromo;
return this;
}
public ArticoloGriglia toArticoloGriglia() {
ArticoloGriglia result = new ArticoloGriglia(); ArticoloGriglia result = new ArticoloGriglia();
result.setBarCode(this.getBarCode()); result.setBarCode(this.getBarCode());
result.setDescrizione(this.getDescrizione()); result.setDescrizione(this.getDescrizione());
@@ -113,6 +162,11 @@ public class ArticoloDTO {
result.setMediaSett(this.getMediaSett()); result.setMediaSett(this.getMediaSett());
result.setFlagQtaMultipla(this.getFlagQtaMultipla()); result.setFlagQtaMultipla(this.getFlagQtaMultipla());
result.setQtaMinOrdinabile(this.getQtaMinOrdinabile()); result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
result.setGgScadenza(this.ggScadenza);
result.setNewNoPromo(this.newNoPromo);
result.setGiacenza(this.giacenza);
result.setQtaPrevistaVendita(this.qtaPrevistaVendita);
result.setQtaProposta(this.qtaProposta);
return result; return result;
} }

View File

@@ -0,0 +1,30 @@
package it.integry.integrywmsnative.core.data_store.db.wrappers;
import androidx.room.ColumnInfo;
import androidx.room.Embedded;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
public class DocInternoWrapper {
@Embedded
private SqlMtbColt document;
@ColumnInfo(name = "countArticoli")
private int countArticoli = 0;
public SqlMtbColt getDocument() {
return document;
}
public void setDocument(SqlMtbColt document) {
this.document = document;
}
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
}

View File

@@ -7,6 +7,8 @@ import androidx.databinding.PropertyChangeRegistry;
import java.math.BigDecimal; import java.math.BigDecimal;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class BindableBigDecimal implements Observable { public class BindableBigDecimal implements Observable {
BigDecimal mValue; BigDecimal mValue;
@@ -102,9 +104,24 @@ public class BindableBigDecimal implements Observable {
} }
public void set(BigDecimal value, boolean forceRefresh) { public void set(BigDecimal value, boolean forceRefresh) {
if (!mValue.equals(value) || forceRefresh) { if ((mValue == null) || !mValue.equals(value) || forceRefresh) {
this.mValue = value; this.mValue = value;
notifyChange(); notifyChange();
} }
} }
public static void registerListener(BindableBigDecimal bindableBigDecimal, RunnableArgs<BigDecimal> onValueChanged) {
bindableBigDecimal.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
if(onValueChanged != null) onValueChanged.run(bindableBigDecimal.get());
}
});
}
public static void resetListeners(BindableBigDecimal bindableBigDecimal){
BigDecimal oldValue = bindableBigDecimal.get();
bindableBigDecimal = new BindableBigDecimal();
bindableBigDecimal.set(oldValue);
}
} }

View File

@@ -104,5 +104,9 @@ public class BindableBoolean implements Observable {
notifyChange(); notifyChange();
} }
} }
public void toggle() {
set(!get());
}
} }

View File

@@ -1,6 +1,9 @@
package it.integry.integrywmsnative.core.di; package it.integry.integrywmsnative.core.di;
import androidx.databinding.BaseObservable; import androidx.databinding.BaseObservable;
import androidx.databinding.Observable;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class BindableInteger extends BaseObservable { public class BindableInteger extends BaseObservable {
Integer mValue; Integer mValue;
@@ -34,4 +37,19 @@ public class BindableInteger extends BaseObservable {
return mValue == null; return mValue == null;
} }
public static void registerListener(BindableInteger bindableInteger, RunnableArgs<Integer> onValueChanged) {
bindableInteger.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
if(onValueChanged != null) onValueChanged.run(bindableInteger.get());
}
});
}
public static void resetListeners(BindableInteger bindableInteger){
Integer oldValue = bindableInteger.get();
bindableInteger = new BindableInteger();
bindableInteger.set(oldValue);
}
} }

View File

@@ -7,6 +7,20 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class BindableString extends BaseObservable { public class BindableString extends BaseObservable {
String value; String value;
private boolean isHtml = false;
public BindableString(){};
public BindableString(boolean isHtml){
this.isHtml = isHtml;
};
public BindableString(String startingValue ,boolean isHtml){
this.isHtml = isHtml;
this.set(startingValue);
};
public boolean isHtml() {
return isHtml;
}
public String get() { public String get() {
return value != null ? value : ""; return value != null ? value : "";

View File

@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.di;
import android.app.DatePickerDialog; import android.app.DatePickerDialog;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.text.Html;
import android.text.SpannableString; import android.text.SpannableString;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@@ -51,7 +52,7 @@ public class Converters {
@BindingConversion @BindingConversion
public static String convertBindableToString(BindableString bindableString) { public static String convertBindableToString(BindableString bindableString) {
if(bindableString != null) return bindableString.get(); if (bindableString != null) return bindableString.get();
return ""; return "";
} }
@@ -75,7 +76,8 @@ public class Converters {
TextWatcherAdapter watcher = new TextWatcherAdapter() { TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
if(bindableInteger != null) bindableInteger.set(Integer.parseInt(s.toString())); if (bindableInteger != null)
bindableInteger.set(Integer.parseInt(s.toString()));
} }
}; };
view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher)); view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher));
@@ -97,7 +99,7 @@ public class Converters {
TextWatcherAdapter watcher = new TextWatcherAdapter() { TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
if(observableField != null) observableField.set(s.toString()); if (observableField != null) observableField.set(s.toString());
} }
}; };
view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher)); view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher));
@@ -126,8 +128,9 @@ public class Converters {
view.addTextChangedListener(watcher); view.addTextChangedListener(watcher);
} }
String newValue = bindableString.get(); String newValue = bindableString.get();
boolean isHtml = bindableString.isHtml();
if (!view.getText().toString().equals(newValue)) { if (!view.getText().toString().equals(newValue)) {
view.setText(newValue); view.setText(isHtml ? Html.fromHtml(newValue) : newValue);
} }
} }
@@ -208,7 +211,8 @@ public class Converters {
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null; BigDecimal value = null;
if(!UtilityString.isNullOrEmpty(s.toString())) value = new BigDecimal(s.toString()); if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
observableBigDecimal.set(value); observableBigDecimal.set(value);
} }
}; };
@@ -218,11 +222,65 @@ public class Converters {
BigDecimal newValue = observableBigDecimal.get(); BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null; BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
if(!UtilityBigDecimal.equalsTo(viewValue, newValue)) { if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue)); view.setText(UtilityNumber.decimalToString(newValue));
} }
} }
@BindingAdapter("binding")
public static void bindTextInputEditTextBigDecimal(TextInputEditText view, final BindableBigDecimal bindableBigDecimal) {
Pair<BindableBigDecimal, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != bindableBigDecimal) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
bindableBigDecimal.set(value);
}
};
view.setTag(R.id.bound_observable, new Pair<>(bindableBigDecimal, watcher));
view.addTextChangedListener(watcher);
}
BigDecimal newValue = bindableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));
}
}
@BindingAdapter("binding")
public static void bindTextInputEditTextInteger(TextInputEditText view, final BindableInteger bindableInteger) {
Pair<BindableInteger, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != bindableInteger) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Integer value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = Integer.valueOf(s.toString());
bindableInteger.set(value);
}
};
view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher));
view.addTextChangedListener(watcher);
}
Integer newValue = bindableInteger.get();
Integer viewValue = view.getText().toString().trim().length() > 0 ? Integer.valueOf(view.getText().toString()) : Integer.valueOf(0);
if (!(viewValue.compareTo(newValue) == 0)) {
view.setText(newValue.toString());
}
}
@BindingAdapter("binding") @BindingAdapter("binding")
public static void bindTextInputEditTextString(TextInputEditText view, final ObservableField<String> observableString) { public static void bindTextInputEditTextString(TextInputEditText view, final ObservableField<String> observableString) {
Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable); Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
@@ -242,7 +300,7 @@ public class Converters {
String newValue = observableString.get(); String newValue = observableString.get();
String viewValue = view.getText().toString(); String viewValue = view.getText().toString();
if(!viewValue.equalsIgnoreCase(newValue)) { if (!viewValue.equalsIgnoreCase(newValue)) {
view.setText(newValue); view.setText(newValue);
} }
} }
@@ -266,7 +324,7 @@ public class Converters {
// Get Current Date // Get Current Date
Calendar c = UtilityDate.getCalendarInstance(); Calendar c = UtilityDate.getCalendarInstance();
if(observableDate.get() != null) { if (observableDate.get() != null) {
c.setTime(observableDate.get()); c.setTime(observableDate.get());
} }
@@ -277,8 +335,8 @@ public class Converters {
DatePickerDialog datePickerDialog = new DatePickerDialog(view.getContext(), DatePickerDialog datePickerDialog = new DatePickerDialog(view.getContext(),
(cView, year, month, day) -> { (cView, year, month, day) -> {
Date resultDate = new GregorianCalendar(year, month, day).getTime(); Date resultDate = new GregorianCalendar(year, month, day).getTime();
if(parentFragment != null && warningOnOldDates && resultDate.before(new Date())) { if (parentFragment != null && warningOnOldDates && resultDate.before(new Date())) {
DialogSimpleMessageView DialogSimpleMessageView
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> { .makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
@@ -297,8 +355,8 @@ public class Converters {
//Adding click-listener //Adding click-listener
view.setOnClickListener(onClick::run); view.setOnClickListener(onClick::run);
if(view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) { if (view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) {
((FrameLayout)view.getParent()).setOnClickListener(onClick::run); ((FrameLayout) view.getParent()).setOnClickListener(onClick::run);
((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run); ((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run);
} }
} }
@@ -367,8 +425,9 @@ public class Converters {
view.addTextChangedListener(watcher); view.addTextChangedListener(watcher);
} }
String newValue = bindableString.get(); String newValue = bindableString.get();
boolean isHtml = bindableString.isHtml();
if (!view.getText().toString().equals(newValue)) { if (!view.getText().toString().equals(newValue)) {
view.setText(newValue); view.setText(isHtml ? Html.fromHtml(newValue) : newValue);
} }
} }
@@ -477,7 +536,7 @@ public class Converters {
@BindingAdapter("visibility") @BindingAdapter("visibility")
public static void bindView(View view, final ObservableField<Boolean> bindableBoolean) { public static void bindViewVisibility(View view, final ObservableField<Boolean> bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) { if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean); view.setTag(R.id.bound_observable, bindableBoolean);
} }
@@ -492,6 +551,44 @@ public class Converters {
} }
@BindingAdapter("visibility")
public static void bindViewVisibility(View view, boolean bool) {
view.setVisibility(bool ? View.VISIBLE : View.GONE);
}
@BindingAdapter({"reverse_visibility"})
public static void bindViewReverseVisibility(View view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
}
bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
view.setVisibility(bindableBoolean.get() ? View.GONE : View.VISIBLE);
}
});
view.setVisibility(bindableBoolean.get() ? View.GONE : View.VISIBLE);
}
@BindingAdapter("reverse_visibility")
public static void bindViewReverseVisibility(View view, final ObservableField<Boolean> bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
}
bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
view.setVisibility(bindableBoolean.get() ? View.GONE : View.VISIBLE);
}
});
view.setVisibility(bindableBoolean.get() ? View.GONE : View.VISIBLE);
}
@BindingAdapter("android:layout_weight") @BindingAdapter("android:layout_weight")
public static void setLayoutWeight(View view, final Float weight) { public static void setLayoutWeight(View view, final Float weight) {

View File

@@ -1,21 +1,37 @@
package it.integry.integrywmsnative.core.expansion; package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog; import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class BaseActivity extends AppCompatActivity { public class BaseActivity extends AppCompatActivity {
@Inject
public DialogProgressView mCurrentProgress;
protected Dialog mCurrentProgress; @Nullable
@Override
public View onCreateView(@Nullable View parent, @NonNull String name, @NonNull Context context, @NonNull AttributeSet attrs) {
var v = super.onCreateView(parent, name, context, attrs);
public BaseActivity() { MainApplication.appComponent
//Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, BaseActivity.class)); .baseActivityComponent()
.create()
.inject(this);
return v;
} }
@Override @Override
@@ -42,8 +58,8 @@ public class BaseActivity extends AppCompatActivity {
protected void openProgress() { protected void openProgress() {
runOnUiThread(() -> { runOnUiThread(() -> {
BarcodeManager.disable(); BarcodeManager.disable();
if (this.mCurrentProgress == null) { if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); this.mCurrentProgress.show(getSupportFragmentManager(), "tag");
} }
}); });
} }
@@ -51,9 +67,8 @@ public class BaseActivity extends AppCompatActivity {
protected void closeProgress() { protected void closeProgress() {
runOnUiThread(() -> { runOnUiThread(() -> {
BarcodeManager.enable(); BarcodeManager.enable();
if (mCurrentProgress != null) { if (mCurrentProgress.isVisible()) {
mCurrentProgress.dismiss(); mCurrentProgress.dismiss();
mCurrentProgress = null;
} }
}); });
} }

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.core.expansion;
import dagger.Subcomponent;
@Subcomponent
public interface BaseActivityComponent {
@Subcomponent.Factory
interface Factory {
BaseActivityComponent create();
}
void inject(BaseActivity baseActivity);
}

View File

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

View File

@@ -1,6 +1,5 @@
package it.integry.integrywmsnative.core.expansion; package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
@@ -15,11 +14,12 @@ import androidx.fragment.app.FragmentTransaction;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class BaseDialogFragment extends DialogFragment { public class BaseDialogFragment extends DialogFragment {
private boolean mBarcodeListener = false; private boolean mBarcodeListener = false;
private Dialog mCurrentProgress; private DialogProgressView mCurrentProgress;
public BaseDialogFragment() { public BaseDialogFragment() {
super(); super();
@@ -82,7 +82,7 @@ public class BaseDialogFragment extends DialogFragment {
// new Thread(() -> { // new Thread(() -> {
requireActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
if (this.mCurrentProgress == null) { if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(requireActivity());
} }
}); });
// }).start(); // }).start();

View File

@@ -1,59 +1,69 @@
package it.integry.integrywmsnative.core.expansion; package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog; import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public abstract class BaseFragment extends Fragment { public abstract class BaseFragment extends Fragment {
protected Dialog mCurrentProgress; @Inject
public DialogProgressView mCurrentProgress;
protected ElevatedToolbar mToolbar; protected ElevatedToolbar mToolbar;
protected final List<Runnable> mOnPreDestroyList = new ArrayList<>(); protected final List<Runnable> mOnPreDestroyList = new ArrayList<>();
public void setScrollToolbar(ElevatedToolbar toolbar) { public void setScrollToolbar(ElevatedToolbar toolbar) {
mToolbar = toolbar; mToolbar = toolbar;
} }
public void addOnPreDestroy(Runnable onPreDestroy) { public void addOnPreDestroy(Runnable onPreDestroy) {
this.mOnPreDestroyList.add(onPreDestroy); this.mOnPreDestroyList.add(onPreDestroy);
} }
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
MainApplication.appComponent
.baseFragmentComponent()
.create()
.inject(this);
return view;
}
public void onLoadingStarted() { public void onLoadingStarted() {
new Thread(() -> { BarcodeManager.disable();
BarcodeManager.disable(); this.openProgress();
this.openProgress();
}).start();
} }
public void onLoadingEnded() { public void onLoadingEnded() {
new Thread(() -> { this.closeProgress();
this.closeProgress(); BarcodeManager.enable();
BarcodeManager.enable();
}).start();
} }
public void onError(Exception ex) { public void onError(Exception ex) {
this.getActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
this.closeProgress(); this.closeProgress();
UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress);
BarcodeManager.enable(); BarcodeManager.enable();
@@ -71,23 +81,24 @@ public abstract class BaseFragment extends Fragment {
} }
protected void openProgress() { protected void openProgress() {
getActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
if (this.mCurrentProgress == null) { if (!this.mCurrentProgress.isVisible() && !this.mCurrentProgress.isAdded()) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag");
} }
}); });
} }
protected void closeProgress() { protected void closeProgress() {
getActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
if (mCurrentProgress != null) { if (mCurrentProgress.isVisible()) {
mCurrentProgress.dismiss(); mCurrentProgress.dismiss();
mCurrentProgress = null; }
} });
});
} }
protected void popMe() { protected void popMe() {
((IPoppableActivity) requireActivity()).pop(); requireActivity().runOnUiThread(() -> {
((IPoppableActivity) requireActivity()).pop();
});
} }
} }

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.core.expansion;
import dagger.Subcomponent;
@Subcomponent
public interface BaseFragmentComponent {
@Subcomponent.Factory
interface Factory {
BaseFragmentComponent create();
}
void inject(BaseFragment baseFragment);
}

View File

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

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.core.expansion;
import androidx.databinding.Observable;
public abstract class OnGeneralChangedCallback extends Observable.OnPropertyChangedCallback implements Runnable{
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
run();
}
// public abstract void run();
}

View File

@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.interfaces;
import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.SearchView;
public interface ISearcableFragment extends SearchView.OnQueryTextListener, IDestroyableFragment { public interface ISearchableFragment extends SearchView.OnQueryTextListener, IDestroyableFragment {
void onSearchEnabled(); void onSearchEnabled();

View File

@@ -106,6 +106,9 @@ public class DtbOrdt extends EntityBase {
private String noteConferma; private String noteConferma;
private String codJflav; private String codJflav;
public DtbOrdt() {
this.type = "dtb_ordt";
}
public String getDataOrd() { public String getDataOrd() {
return dataOrd; return dataOrd;

View File

@@ -0,0 +1,49 @@
package it.integry.integrywmsnative.core.model;
public class JtbComt extends EntityBase {
private String codJcom;
private String codJfas;
private String codJflav;
private String descrizione;
public JtbComt() {
this.type = "jtb_comt";
}
public String getCodJcom() {
return codJcom;
}
public JtbComt setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public String getCodJfas() {
return codJfas;
}
public JtbComt setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public String getCodJflav() {
return codJflav;
}
public JtbComt setCodJflav(String codJflav) {
this.codJflav = codJflav;
return this;
}
public String getDescrizione() {
return descrizione;
}
public JtbComt setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
}

View File

@@ -60,7 +60,7 @@ public class MtbColr extends EntityBase {
public MtbColr() { public MtbColr() {
type = "mtb_colr"; type = "mtb_colr";
if(SettingsManager.i().isUserLoggedIn()) { if (SettingsManager.i().isUserLoggedIn()) {
setUtente(SettingsManager.i().getUser().getFullname()); setUtente(SettingsManager.i().getUser().getFullname());
} }
} }
@@ -82,7 +82,6 @@ public class MtbColr extends EntityBase {
} }
public MtbColr setGestione(GestioneEnum gestione) { public MtbColr setGestione(GestioneEnum gestione) {
this.gestione = gestione.getText(); this.gestione = gestione.getText();
return this; return this;
@@ -124,6 +123,11 @@ public class MtbColr extends EntityBase {
return this; return this;
} }
public MtbColr setDataCollo(Date dataCollo) {
setDataCollo(UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
return this;
}
public Integer getRiga() { public Integer getRiga() {
return riga; return riga;
@@ -301,8 +305,6 @@ public class MtbColr extends EntityBase {
} }
public String getDatetimeRowS() { public String getDatetimeRowS() {
return datetimeRow; return datetimeRow;
} }
@@ -322,11 +324,6 @@ public class MtbColr extends EntityBase {
} }
public String getCodJcom() { public String getCodJcom() {
return codJcom; return codJcom;
} }
@@ -364,11 +361,6 @@ public class MtbColr extends EntityBase {
} }
public String getDataScadPartitaS() { public String getDataScadPartitaS() {
return dataScadPartita; return dataScadPartita;
} }
@@ -398,7 +390,6 @@ public class MtbColr extends EntityBase {
} }
public String getUntMis() { public String getUntMis() {
return untMis; return untMis;
} }

View File

@@ -22,7 +22,7 @@ public class MtbCols extends EntityBase {
type = "mtb_cols"; type = "mtb_cols";
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()); setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
setModificatoDa(SettingsManager.i().getUser().getFullname()); setModificatoDa(SettingsManager.i().getUser().getFullname());
setDataMove(UtilityDate.getDateInstance()); //setDataMove(UtilityDate.getDateInstance());
} }
public String getDataCollo() { public String getDataCollo() {

View File

@@ -57,6 +57,7 @@ public class MtbColt extends EntityBase {
private String codJcom; private String codJcom;
private List<MtbCols> mtbCols; private List<MtbCols> mtbCols;
private MtbTCol mtbTCol;
private Boolean disablePrint; private Boolean disablePrint;
private String ragSocCliente; private String ragSocCliente;
@@ -83,7 +84,6 @@ public class MtbColt extends EntityBase {
} }
private ObservableArrayList<MtbColr> mtbColr = new ObservableArrayList<>(); private ObservableArrayList<MtbColr> mtbColr = new ObservableArrayList<>();
public ObservableArrayList<MtbColr> getMtbColr() { public ObservableArrayList<MtbColr> getMtbColr() {
@@ -95,12 +95,12 @@ public class MtbColt extends EntityBase {
return this; return this;
} }
public MtbColt(){ public MtbColt() {
type = "mtb_colt"; type = "mtb_colt";
setDataCollo(UtilityDate.getDateInstance()); setDataCollo(UtilityDate.getDateInstance());
setSerCollo("/"); setSerCollo("/");
if(SettingsManager.i().isUserLoggedIn()) { if (SettingsManager.i().isUserLoggedIn()) {
setPreparatoDa(SettingsManager.i().getUser().getFullname()); setPreparatoDa(SettingsManager.i().getUser().getFullname());
} }
} }
@@ -137,11 +137,11 @@ public class MtbColt extends EntityBase {
Date dataColloD = null; Date dataColloD = null;
try { try {
dataColloD = getDataColloD(); dataColloD = getDataColloD();
} catch (Exception ex){ } catch (Exception ex) {
UtilityLogger.errorMe(ex); UtilityLogger.errorMe(ex);
} }
if(dataColloD != null){ if (dataColloD != null) {
return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN_LONG); return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN_LONG);
} else return null; } else return null;
} }
@@ -392,7 +392,7 @@ public class MtbColt extends EntityBase {
public String getTimeVers() { public String getTimeVers() {
Date dataColloD = getDataVersD(); Date dataColloD = getDataVersD();
if(dataColloD != null){ if (dataColloD != null) {
return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.TIME); return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.TIME);
} else return null; } else return null;
} }
@@ -526,6 +526,15 @@ public class MtbColt extends EntityBase {
return this; return this;
} }
public MtbTCol getMtbTCol() {
return mtbTCol;
}
public MtbColt setMtbTCol(MtbTCol mtbTCol) {
this.mtbTCol = mtbTCol;
return this;
}
public void generaFiltroOrdineFromDTO(List<FiltroOrdineDTO> filtroOrdineDtos) { public void generaFiltroOrdineFromDTO(List<FiltroOrdineDTO> filtroOrdineDtos) {
String xmlPrefix = "{\"whereCond\": \""; String xmlPrefix = "{\"whereCond\": \"";
@@ -533,9 +542,9 @@ public class MtbColt extends EntityBase {
StringBuilder whereCond = new StringBuilder(); StringBuilder whereCond = new StringBuilder();
if(filtroOrdineDtos != null && filtroOrdineDtos.size() > 0) { if (filtroOrdineDtos != null && filtroOrdineDtos.size() > 0) {
for(int i = 0; i < filtroOrdineDtos.size(); i++){ for (int i = 0; i < filtroOrdineDtos.size(); i++) {
FiltroOrdineDTO x = filtroOrdineDtos.get(i); FiltroOrdineDTO x = filtroOrdineDtos.get(i);
try { try {
@@ -545,13 +554,13 @@ public class MtbColt extends EntityBase {
UtilityDB.valueToString(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)), UtilityDB.valueToString(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)),
UtilityDB.valueToString(x.getNumOrd()))); UtilityDB.valueToString(x.getNumOrd())));
if(!UtilityString.isNullOrEmpty(x.getDataConsS())) { if (!UtilityString.isNullOrEmpty(x.getDataConsS())) {
whereCond.append(String.format(" AND dr.dc = %s", whereCond.append(String.format(" AND dr.dc = %s",
UtilityDB.valueToString(UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)))); UtilityDB.valueToString(UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))));
} }
whereCond.append(")"); whereCond.append(")");
if(i < filtroOrdineDtos.size()-1) { if (i < filtroOrdineDtos.size() - 1) {
whereCond.append(" OR "); whereCond.append(" OR ");
} }
} catch (Exception e) { } catch (Exception e) {

View File

@@ -36,12 +36,12 @@ public class MtbDepo extends EntityBase implements Parcelable {
private String flagTipoNegozio; private String flagTipoNegozio;
private String codMdepReso; private String codMdepReso;
public MtbDepo() { public MtbDepo() {
type = "mtb_depo"; type = "mtb_depo";
} }
protected MtbDepo(Parcel in) { protected MtbDepo(Parcel in) {
type = "mtb_depo";
codMdep = in.readString(); codMdep = in.readString();
descrizione = in.readString(); descrizione = in.readString();
flagVal = in.readString(); flagVal = in.readString();
@@ -357,4 +357,19 @@ public class MtbDepo extends EntityBase implements Parcelable {
this.codMdepReso = codMdepReso; this.codMdepReso = codMdepReso;
return this; return this;
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MtbDepo mtbDepo = (MtbDepo) o;
return getCodMdep().equals(mtbDepo.getCodMdep());
}
@Override
public int hashCode() {
return getCodMdep().hashCode();
}
} }

View File

@@ -0,0 +1,69 @@
package it.integry.integrywmsnative.core.model;
public class MtbGrup extends EntityBase {
private String codMgrp;
private String descrizione;
private String flagValMag;
private String logoWeb;
private String criterioVal;
private String tipoMgrp;
public MtbGrup() {
this.type = "mtb_grup";
}
public String getCodMgrp() {
return codMgrp;
}
public MtbGrup setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public String getDescrizione() {
return descrizione;
}
public MtbGrup setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getFlagValMag() {
return flagValMag;
}
public MtbGrup setFlagValMag(String flagValMag) {
this.flagValMag = flagValMag;
return this;
}
public String getLogoWeb() {
return logoWeb;
}
public MtbGrup setLogoWeb(String logoWeb) {
this.logoWeb = logoWeb;
return this;
}
public String getCriterioVal() {
return criterioVal;
}
public MtbGrup setCriterioVal(String criterioVal) {
this.criterioVal = criterioVal;
return this;
}
public String getTipoMgrp() {
return tipoMgrp;
}
public MtbGrup setTipoMgrp(String tipoMgrp) {
this.tipoMgrp = tipoMgrp;
return this;
}
}

View File

@@ -0,0 +1,273 @@
package it.integry.integrywmsnative.core.model;
import java.math.BigDecimal;
import java.util.Date;
/**
* Created by ValerioC on 06/03/2018.
*/
public class MvwSitArtUdcDetInventario {
private String gestione;
private Date dataCollo;
private String serCollo;
private Integer numCollo;
private Integer segno;
private String codMdep;
private String posizione;
private Integer priorita;
private String codGruppo;
private String gruppo;
private String codSgruppo;
private String sottogruppo;
private String codMart;
private String diacod;
private String descrizioneEstesa;
private String partitaMag;
private String codJcom;
private String commessa;
private String untMis;
private BigDecimal qtaCol;
private BigDecimal numCnf;
private BigDecimal qtaCnf;
private BigDecimal pesoNettoKg;
private BigDecimal pesoLordoKg;
private String codJfas;
private MtbAart mtbAart;
public String getGestione() {
return gestione;
}
public MvwSitArtUdcDetInventario setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Date getDataCollo() {
return dataCollo;
}
public MvwSitArtUdcDetInventario setDataCollo(Date dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public MvwSitArtUdcDetInventario setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public MvwSitArtUdcDetInventario setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public Integer getSegno() {
return segno;
}
public MvwSitArtUdcDetInventario setSegno(Integer segno) {
this.segno = segno;
return this;
}
public String getCodMdep() {
return codMdep;
}
public MvwSitArtUdcDetInventario setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getPosizione() {
return posizione;
}
public MvwSitArtUdcDetInventario setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public Integer getPriorita() {
return priorita;
}
public MvwSitArtUdcDetInventario setPriorita(Integer priorita) {
this.priorita = priorita;
return this;
}
public String getCodGruppo() {
return codGruppo;
}
public MvwSitArtUdcDetInventario setCodGruppo(String codGruppo) {
this.codGruppo = codGruppo;
return this;
}
public String getGruppo() {
return gruppo;
}
public MvwSitArtUdcDetInventario setGruppo(String gruppo) {
this.gruppo = gruppo;
return this;
}
public String getCodSgruppo() {
return codSgruppo;
}
public MvwSitArtUdcDetInventario setCodSgruppo(String codSgruppo) {
this.codSgruppo = codSgruppo;
return this;
}
public String getSottogruppo() {
return sottogruppo;
}
public MvwSitArtUdcDetInventario setSottogruppo(String sottogruppo) {
this.sottogruppo = sottogruppo;
return this;
}
public String getCodMart() {
return codMart;
}
public MvwSitArtUdcDetInventario setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getDiacod() {
return diacod;
}
public MvwSitArtUdcDetInventario setDiacod(String diacod) {
this.diacod = diacod;
return this;
}
public String getDescrizioneEstesa() {
return descrizioneEstesa;
}
public MvwSitArtUdcDetInventario setDescrizioneEstesa(String descrizioneEstesa) {
this.descrizioneEstesa = descrizioneEstesa;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public MvwSitArtUdcDetInventario setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public String getCodJcom() {
return codJcom;
}
public MvwSitArtUdcDetInventario setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public String getCommessa() {
return commessa;
}
public MvwSitArtUdcDetInventario setCommessa(String commessa) {
this.commessa = commessa;
return this;
}
public String getUntMis() {
return untMis;
}
public MvwSitArtUdcDetInventario setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getQtaCol() {
return qtaCol;
}
public MvwSitArtUdcDetInventario setQtaCol(BigDecimal qtaCol) {
this.qtaCol = qtaCol;
return this;
}
public BigDecimal getNumCnf() {
return numCnf;
}
public MvwSitArtUdcDetInventario setNumCnf(BigDecimal numCnf) {
this.numCnf = numCnf;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public MvwSitArtUdcDetInventario setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public MvwSitArtUdcDetInventario setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
}
public BigDecimal getPesoLordoKg() {
return pesoLordoKg;
}
public MvwSitArtUdcDetInventario setPesoLordoKg(BigDecimal pesoLordoKg) {
this.pesoLordoKg = pesoLordoKg;
return this;
}
public String getCodJfas() {
return codJfas;
}
public MvwSitArtUdcDetInventario setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public MvwSitArtUdcDetInventario setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
}

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest;
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.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
@@ -50,6 +51,7 @@ public class RESTBuilder {
Gson gson = new GsonBuilder() Gson gson = new GsonBuilder()
.setDateFormat("dd/MM/yyyy HH:mm:ss") .setDateFormat("dd/MM/yyyy HH:mm:ss")
.excludeFieldsWithModifiers(Modifier.TRANSIENT)
.create(); .create();
Retrofit retrofit = new Retrofit.Builder() Retrofit retrofit = new Retrofit.Builder()

View File

@@ -2,15 +2,21 @@ package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Collectors; import com.annimon.stream.Collectors;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@@ -18,6 +24,11 @@ import retrofit2.Response;
@Singleton @Singleton
public class ArticoloRESTConsumer extends _BaseRESTConsumer { public class ArticoloRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer systemRESTConsumer;
public ArticoloRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
this.systemRESTConsumer = systemRESTConsumer;
}
public void getByBarcodeProd(String barcodeProd, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) { public void getByBarcodeProd(String barcodeProd, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class); ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class);
@@ -72,7 +83,7 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) { public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> { analyzeAnswer(response, "getByCodMart", (m) -> {
if(response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) { if (response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) {
onComplete.run(response.body().getEntityList().get(0)); onComplete.run(response.body().getEntityList().get(0));
} else onComplete.run(null); } else onComplete.run(null);
@@ -86,4 +97,22 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void getArtsGroups(List<String> groupsToFind, RunnableArgs<List<MtbGrup>> onComplete, RunnableArgs<Exception> onFailed) {
var whereCondMap = Stream.of(groupsToFind)
.map(x -> {
HashMap<String, Object> vars = new HashMap<>();
vars.put("cod_mgrp", x);
return vars;
})
.toList();
var whereCond = whereCondMap.isEmpty() ? "" : " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondMap);
Type typeOfObjectsList = new TypeToken<ArrayList<MtbGrup>>() {
}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed);
}
} }

View File

@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@@ -32,6 +33,7 @@ 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;
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -153,7 +155,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
mtbColrClone mtbColrClone
.setNumCollo(null) .setNumCollo(null)
.setDataCollo(null) .setDataCollo((String) null)
.setRiga(null) .setRiga(null)
.setGestione(GestioneEnum.LAVORAZIONE) .setGestione(GestioneEnum.LAVORAZIONE)
@@ -207,7 +209,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
MtbColr mtbColrClone = new MtbColr(); MtbColr mtbColrClone = new MtbColr();
mtbColrClone mtbColrClone
.setNumCollo(null) .setNumCollo(null)
.setDataCollo(null) .setDataCollo((String) null)
.setRiga(null) .setRiga(null)
.setGestione(GestioneEnum.LAVORAZIONE) .setGestione(GestioneEnum.LAVORAZIONE)
.setDataColloRif(sourceMtbColt.getDataColloD()) .setDataColloRif(sourceMtbColt.getDataColloD())
@@ -237,7 +239,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
saveCollo(newMtbColt, onComplete, onFailed); saveCollo(newMtbColt, onComplete, onFailed);
} }
public void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
createColloFromEtichettaAnonima(barcodeScanDTO.getStringValue(), gestione, onComplete, onFailed); createColloFromEtichettaAnonima(barcodeScanDTO.getStringValue(), gestione, onComplete, onFailed);
} }
@@ -397,7 +398,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}, onFailed); }, onFailed);
} }
private void cyclicGetMultipleByTestate(@NotNull Iterator<MtbColt> sourceMtbColts, boolean onlyResiduo, ArrayList<MtbColt> resultMtbColt, Runnable onComplete, RunnableArgs<Exception> onAbort) { private void cyclicGetMultipleByTestate(@NotNull Iterator<MtbColt> sourceMtbColts, boolean onlyResiduo, ArrayList<MtbColt> resultMtbColt, Runnable onComplete, RunnableArgs<Exception> onAbort) {
if (sourceMtbColts.hasNext()) { if (sourceMtbColts.hasNext()) {
getByTestata(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> { getByTestata(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> {
@@ -447,7 +447,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void changePosizione(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void changePosizione(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs<Exception> onFailed) {
String codMdep = posizione.getCodMdep(); String codMdep = posizione.getCodMdep();
@@ -543,7 +542,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}, onFailed); }, onFailed);
} }
public static void retrieveBasketColli(RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) { public static void retrieveBasketColli(RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.getColliInBasket(SettingsManager.i().getUserSession().getDepo().getCodMdep()).enqueue(new Callback<ServiceRESTResponse<List<MtbColt>>>() { colliMagazzinoRESTConsumerService.getColliInBasket(SettingsManager.i().getUserSession().getDepo().getCodMdep()).enqueue(new Callback<ServiceRESTResponse<List<MtbColt>>>() {
@@ -620,7 +618,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void assegnaLottoSuColloScarico(MtbColt sourceMtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void assegnaLottoSuColloScarico(MtbColt sourceMtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone(); MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone();
@@ -646,4 +643,57 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void versamentoAutomaticoUL(MtbColt sourceMtbColt, RunnableArgs<VersamentoAutomaticoULResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone();
for (int i = 0; i < sourceMtbColtClone.getMtbColr().size(); i++) {
sourceMtbColtClone.getMtbColr().get(i)
.setMtbAart(null)
.setMtbPartitaMag(null);
}
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.versamentoAutomaticoUL(sourceMtbColtClone).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<VersamentoAutomaticoULResponseDTO>> call, Response<ServiceRESTResponse<VersamentoAutomaticoULResponseDTO>> response) {
analyzeAnswer(response, "versamentoAutomaticoUL", data -> {
var result = response.body().getDto();
List<MtbColr> allMtbColr = new ArrayList<>();
allMtbColr.addAll(result.getSuccess());
allMtbColr.addAll(result.getFailed());
List<String> codMarts = Stream.of(allMtbColr)
.map(x -> x.getCodMart().trim())
.toList();
mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
for (var mtbColr : allMtbColr) {
MtbAart foundMtbAart = null;
Optional<MtbAart> mtbAartOpt = Stream.of(mtbAarts)
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart()))
.findFirst();
if (mtbAartOpt.isPresent()) {
foundMtbAart = mtbAartOpt.get();
}
mtbColr.setMtbAart(foundMtbAart);
}
onComplete.run(result);
}, onFailed);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<VersamentoAutomaticoULResponseDTO>> call, Throwable t) {
if (onFailed != null) onFailed.run(new Exception(t));
}
});
}
} }

View File

@@ -10,6 +10,7 @@ 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;
import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.GET; import retrofit2.http.GET;
@@ -42,4 +43,7 @@ public interface ColliMagazzinoRESTConsumerService {
@POST("wms/assegnaLottoSuColloScarico") @POST("wms/assegnaLottoSuColloScarico")
Call<ServiceRESTResponse<MtbColt>> assegnaLottoSuColloScarico(@Body MtbColt mtbColt); Call<ServiceRESTResponse<MtbColt>> assegnaLottoSuColloScarico(@Body MtbColt mtbColt);
@POST("wms/versamentoAutomaticoUL")
Call<ServiceRESTResponse<VersamentoAutomaticoULResponseDTO>> versamentoAutomaticoUL(@Body MtbColt mtbColt);
} }

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.JtbComt;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
@Singleton
public class CommessaRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer systemRESTConsumer;
public CommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
this.systemRESTConsumer = systemRESTConsumer;
}
public void getJtbComts(List<String> itemsToFind, RunnableArgs<List<JtbComt>> onComplete, RunnableArgs<Exception> onFailed) {
var whereCondMap = Stream.of(itemsToFind)
.map(x -> {
HashMap<String, Object> vars = new HashMap<>();
vars.put("cod_jcom", x);
return vars;
})
.toList();
var whereCond = " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondMap);
Type typeOfObjectsList = new TypeToken<ArrayList<JtbComt>>() {}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM jtb_comt " + whereCond, typeOfObjectsList, onComplete, onFailed);
}
}

View File

@@ -1,5 +1,9 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -12,9 +16,17 @@ import it.integry.integrywmsnative.core.model.MtbDepo;
public class DepositoRESTConsumer extends _BaseRESTConsumer { public class DepositoRESTConsumer extends _BaseRESTConsumer {
private final EntityRESTConsumer entityRESTConsumer; private final EntityRESTConsumer entityRESTConsumer;
private final SystemRESTConsumer systemRESTConsumer;
public DepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer) { public DepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) {
this.entityRESTConsumer = entityRESTConsumer; this.entityRESTConsumer = entityRESTConsumer;
this.systemRESTConsumer = systemRESTConsumer;
}
public void getAll(RunnableArgs<List<MtbDepo>> onComplete, RunnableArgs<Exception> onFailed) {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbDepo>>() {
}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM mtb_depo", typeOfObjectsList, onComplete, onFailed);
} }
public void getDepoByCodMdep(String codMdep, RunnableArgs<MtbDepo> onComplete, RunnableArgs<Exception> onFailed) { public void getDepoByCodMdep(String codMdep, RunnableArgs<MtbDepo> onComplete, RunnableArgs<Exception> onFailed) {

View File

@@ -0,0 +1,69 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
@Singleton
public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer mSystemRESTConsumer;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
public GiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
this.mSystemRESTConsumer = systemRESTConsumer;
this.mArticoloRESTConsumer = articoloRESTConsumer;
}
public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs<List<MvwSitArtUdcDetInventario>> onComplete, RunnableArgs<Exception> onFailed) {
HashMap<String, Object> params = new HashMap<>();
params.put("posizione", posizione.getPosizione());
String whereCond = UtilityQuery.concatFieldsInWhereCond(params);
String query = "SELECT * from mvw_sitart_udc_det_inventario" +
" WHERE " + whereCond;
Type typeOfObjectsList = new TypeToken<ArrayList<MvwSitArtUdcDetInventario>>() {
}.getType();
this.mSystemRESTConsumer.<ArrayList<MvwSitArtUdcDetInventario>>processSql(query, typeOfObjectsList, inventarioList -> {
List<String> codMarts = Stream.of(inventarioList)
.map(x -> x.getCodMart().trim())
.toList();
mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
for (var row : inventarioList) {
MtbAart foundMtbAart = null;
Optional<MtbAart> mtbAartOpt = Stream.of(mtbAarts)
.filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
.findFirst();
if (mtbAartOpt.isPresent()) {
foundMtbAart = mtbAartOpt.get();
}
row.setMtbAart(foundMtbAart);
}
onComplete.run(inventarioList);
}, onFailed);
}, onFailed);
}
}

View File

@@ -0,0 +1,4 @@
package it.integry.integrywmsnative.core.rest.consumers;
public interface GiacenzaRESTConsumerService {
}

View File

@@ -11,12 +11,12 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.JasperDTO; import it.integry.integrywmsnative.core.rest.model.JasperDTO;
import it.integry.integrywmsnative.core.rest.model.JasperPairDTO; import it.integry.integrywmsnative.core.rest.model.JasperPairDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Call; import retrofit2.Call;
@@ -32,26 +32,6 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
} }
public void getAvailablePrinters(String codMdep, final RunnableArgs<List<String>> onComplete, final RunnableArgs<Exception> onFailed) {
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.getAvailablePrinters(codMdep).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
analyzeAnswer(response, "GetAvailablePrinters", printers -> {
onComplete.run(printers != null ? Stream.of(printers).withoutNulls().toList() : null);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) {
Log.e("GetAvailablePrinters", t.toString());
UtilityLogger.errorMe(new Exception(t));
onFailed.run(new Exception(t));
}
});
}
public void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs<List<String>> onComplete, RunnableArgs<Exception> onFailed) { public void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs<List<String>> onComplete, RunnableArgs<Exception> onFailed) {
String printerTypeStr = printerType != null ? printerType.toString() : null; String printerTypeStr = printerType != null ? printerType.toString() : null;
@@ -75,47 +55,40 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void printCollo(Type printerType, MtbColt testataColloToPrint, Runnable onComplete, RunnableArgs<Exception> onFailed) {
if (BuildConfig.DEBUG) { // if (BuildConfig.DEBUG) {
onComplete.run(); // onComplete.run();
return; // return;
} // }
if (UtilityString.isNullOrEmpty(printerName)) {
onFailed.run(new Exception("Nessuna stampante configurata: valore null"));
return;
}
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.printCollo( Call<ServiceRESTResponse<Object>> callable = null;
printerName, if (printerType != null)
testataColloToPrint.getDataColloS(), callable = printerService.printCollo(printerType.toString(), testataColloToPrint);
testataColloToPrint.getGestione(), else
testataColloToPrint.getSerCollo(), callable = printerService.printCollo(testataColloToPrint);
testataColloToPrint.getNumCollo(),
quantity,
reportName)
.enqueue(new Callback<>() { callable.enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) { public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "printCollo", data -> { analyzeAnswer(response, "printCollo", data -> {
onComplete.run(); onComplete.run();
}, onFailed); }, onFailed);
} }
@Override @Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
if (t.getMessage().contains("Printer not found")) { if (t.getMessage().contains("Printer not found")) {
onFailed.run(new NoPrintersFoundException()); onFailed.run(new NoPrintersFoundException());
} else onFailed.run(new Exception(t)); } else onFailed.run(new Exception(t));
} }
}); });
} }
public void printReport(String printerName, String reportName, HashMap<String, Object> params, int quantity, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void printReport(String printerName, String reportName, HashMap<String, Object> params, int quantity, Runnable onComplete, RunnableArgs<Exception> onFailed) {
// if(BuildConfig.DEBUG) { // if (BuildConfig.DEBUG) {
// onComplete.run(); // onComplete.run();
// return; // return;
// } // }

View File

@@ -2,20 +2,16 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.JasperDTO; import it.integry.integrywmsnative.core.rest.model.JasperDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query; import retrofit2.http.Query;
public interface PrinterRESTConsumerService { public interface PrinterRESTConsumerService {
@POST("getAvailablePrinters")
Call<ServiceRESTResponse<List<String>>> getAvailablePrinters();
@POST("getAvailablePrinters") @POST("getAvailablePrinters")
Call<ServiceRESTResponse<List<String>>> getAvailablePrinters(@Query("codMdep") String codMdep); Call<ServiceRESTResponse<List<String>>> getAvailablePrinters(@Query("codMdep") String codMdep);
@@ -23,19 +19,6 @@ public interface PrinterRESTConsumerService {
Call<ServiceRESTResponse<List<String>>> getAvailablePrinters(@Query("codMdep") String codMdep, @Query("printerType") String printerType); Call<ServiceRESTResponse<List<String>>> getAvailablePrinters(@Query("codMdep") String codMdep, @Query("printerType") String printerType);
@POST("pkgPrintLabel")
@FormUrlEncoded
Call<ServiceRESTResponse<Object>> printCollo(
@Query("printerName") String printerName,
@Field("dataCollo") String dataCollo,
@Field("gestione") String gestione,
@Field("serCollo") String serCollo,
@Field("numCollo") int numCollo,
@Query("printQuantity") int printQuantity,
@Query("reportName") String reportName
);
@POST("processPrintReport") @POST("processPrintReport")
Call<ServiceRESTResponse<Object>> processPrintReport( Call<ServiceRESTResponse<Object>> processPrintReport(
@Query("printerName") String printerName, @Query("printerName") String printerName,
@@ -43,4 +26,16 @@ public interface PrinterRESTConsumerService {
@Body JasperDTO jasperDTO @Body JasperDTO jasperDTO
); );
@POST("wms/printEtichettaSSCC")
Call<ServiceRESTResponse<Object>> printCollo(
@Query("printerType") String printerType,
@Body MtbColt mtbColtToPrint
);
@POST("wms/printEtichettaSSCC")
Call<ServiceRESTResponse<Object>> printCollo(
@Body MtbColt mtbColtToPrint
);
} }

View File

@@ -4,6 +4,9 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonParseException;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
@@ -13,20 +16,22 @@ import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.Azienda;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.Azienda;
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.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Call; import retrofit2.Call;
@@ -46,7 +51,17 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) { public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "ProcessSql", o -> { analyzeAnswer(response, "ProcessSql", o -> {
Gson gson = new Gson(); Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, (JsonDeserializer) (json, typeOfT, context) -> {
try {
return UtilityDate.recognizeDate(json.getAsString());
} catch (Exception e) {
throw new JsonParseException(e);
}
})
.create();
String json = gson.toJson(o); String json = gson.toJson(o);
InputStream ims = new ByteArrayInputStream(json.getBytes()); InputStream ims = new ByteArrayInputStream(json.getBytes());
@@ -100,7 +115,11 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
} }
public static void getAvailableCodMdeps(final RunnableArgs<List<AvailableCodMdepsDTO>> onSuccess, RunnableArgs<Exception> onFailed) { public void getAvailableCodMdeps(final RunnableArgs<List<AvailableCodMdepsDTO>> onSuccess, RunnableArgs<Exception> onFailed) {
getAvailableCodMdepsStatic(onSuccess, onFailed);
}
public static void getAvailableCodMdepsStatic(final RunnableArgs<List<AvailableCodMdepsDTO>> onSuccess, RunnableArgs<Exception> onFailed) {
SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class); SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class);
service.getAvailableCodMdeps().enqueue(new Callback<>() { service.getAvailableCodMdeps().enqueue(new Callback<>() {

View File

@@ -39,7 +39,7 @@ public class _BaseRESTConsumer {
} }
} else { } else {
if (response.code() == 404) { if (response.code() == 404) {
Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata"); Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url().toString() + ")");
onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")")); onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")"));
} else { } else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message()); Log.e(logTitle, "Status " + response.code() + ": " + response.message());

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date; import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -43,9 +44,7 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
private boolean flagEvaso; private boolean flagEvaso;
private String nomeAgente; private String nomeAgente;
private String codJfas; private String codJfas;
private List<AvailableClassMerc> availableClassMerc;
public Integer getIdViaggio() { public Integer getIdViaggio() {
return idViaggio; return idViaggio;
@@ -363,6 +362,16 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
return this; return this;
} }
public List<AvailableClassMerc> getAvailableClassMerc() {
return availableClassMerc;
}
public OrdineUscitaInevasoDTO setAvailableClassMerc(List<AvailableClassMerc> availableClassMerc) {
this.availableClassMerc = availableClassMerc;
return this;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
@@ -382,4 +391,28 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
result = 31 * result + getGestione().hashCode(); result = 31 * result + getGestione().hashCode();
return result; return result;
} }
public static class AvailableClassMerc {
private String codMgrp;
private List<String> codMsgr;
public String getCodMgrp() {
return codMgrp;
}
public AvailableClassMerc setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public List<String> getCodMsgr() {
return codMsgr;
}
public AvailableClassMerc setCodMsgr(List<String> codMsgr) {
this.codMsgr = codMsgr;
return this;
}
}
} }

View File

@@ -0,0 +1,29 @@
package it.integry.integrywmsnative.core.rest.model;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColr;
public class VersamentoAutomaticoULResponseDTO {
private List<MtbColr> success;
private List<MtbColr> failed;
public List<MtbColr> getSuccess() {
return success;
}
public VersamentoAutomaticoULResponseDTO setSuccess(List<MtbColr> success) {
this.success = success;
return this;
}
public List<MtbColr> getFailed() {
return failed;
}
public VersamentoAutomaticoULResponseDTO setFailed(List<MtbColr> failed) {
this.failed = failed;
return this;
}
}

View File

@@ -0,0 +1,104 @@
package it.integry.integrywmsnative.core.services.inventario;
import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
@Singleton
public class InventarioService {
private final GiacenzaRESTConsumer mGiacenzaRESTConsumer;
public InventarioService(GiacenzaRESTConsumer giacenzaRESTConsumer) {
this.mGiacenzaRESTConsumer = giacenzaRESTConsumer;
}
public void getInventarioDaPosizione(MtbDepoPosizione posizione, RunnableArgs<List<MvwSitArtUdcDetInventario>> onSuccess, RunnableArgs<Exception> onError) {
mGiacenzaRESTConsumer.getGiacenzeInPosizione(posizione, onSuccess, onError);
}
public void getInventarioDaPosizionePerArticolo(MtbDepoPosizione posizione, MtbAart articolo, RunnableArgs<List<MvwSitArtUdcDetInventario>> onSuccess, RunnableArgs<Exception> onError) {
getInventarioDaPosizione(posizione, (inventario) -> {
List<MvwSitArtUdcDetInventario> inventarioArticolo = Stream.of(inventario).filter(
x -> articolo.getCodMart().equalsIgnoreCase(x.getCodMart())
).toList();
onSuccess.run(inventarioArticolo);
}, onError);
}
public MtbColt mapInventarioToMtbColt(MvwSitArtUdcDetInventario inventario) {
return mapInventarioToMtbColt(inventario, true);
}
public MtbColt mapInventarioToMtbColt(MvwSitArtUdcDetInventario inventario, boolean includeRows) {
MtbColt mtbColt = new MtbColt();
mtbColt.setGestione(inventario.getGestione());
mtbColt.setDataCollo(inventario.getDataCollo());
mtbColt.setSerCollo(inventario.getSerCollo());
mtbColt.setNumCollo(inventario.getNumCollo());
mtbColt.setSegno(inventario.getSegno());
mtbColt.setCodMdep(inventario.getCodMdep());
mtbColt.setPosizione(inventario.getPosizione());
mtbColt.setCodJcom(inventario.getCodJcom());
mtbColt.setPesoNettoKg(inventario.getPesoNettoKg());
mtbColt.setPesoKg(inventario.getPesoLordoKg());
mtbColt.setCodJfas(inventario.getCodJfas());
if (includeRows) {
ObservableArrayList<MtbColr> rows = new ObservableArrayList<>();
rows.add(mapInventarioToMtbColr(inventario));
mtbColt.setMtbColr(rows);
}
return mtbColt;
}
public MtbColr mapInventarioToMtbColr(MvwSitArtUdcDetInventario inventario) {
MtbColr mtbColr = new MtbColr();
mtbColr.setGestione(inventario.getGestione());
mtbColr.setDataCollo(inventario.getDataCollo());
mtbColr.setSerCollo(inventario.getSerCollo());
mtbColr.setNumCollo(inventario.getNumCollo());
mtbColr.setCodMart(inventario.getCodMart());
mtbColr.setDescrizione(inventario.getDescrizioneEstesa());
mtbColr.setPartitaMag(inventario.getPartitaMag());
mtbColr.setCodJcom(inventario.getCodJcom());
mtbColr.setUntMis(inventario.getUntMis());
mtbColr.setQtaCol(inventario.getQtaCol());
mtbColr.setNumCnf(inventario.getNumCnf());
mtbColr.setQtaCnf(inventario.getQtaCnf());
mtbColr.setPesoNettoKg(inventario.getPesoNettoKg());
mtbColr.setPesoLordoKg(inventario.getPesoLordoKg());
mtbColr.setMtbAart(inventario.getMtbAart());
return mtbColr;
}
public List<MtbColt> mapInventarioToMtbColtList(List<MvwSitArtUdcDetInventario> inventario) {
return new ArrayList<>(Stream.of(inventario).groupBy(x -> x.getNumCollo() + "-" + x.getDataCollo() + "-" + x.getSerCollo() + x.getGestione()).map(inv -> {
List<MvwSitArtUdcDetInventario> rows = inv.getValue();
MtbColt mtbColt = mapInventarioToMtbColt(rows.get(0), false);
ObservableArrayList<MtbColr> mtbColrs = new ObservableArrayList<>();
mtbColrs.addAll(Stream.of(rows).map(this::mapInventarioToMtbColr).toList());
mtbColt.setMtbColr(mtbColrs);
return mtbColt;
}).toList());
}
}

View File

@@ -1,11 +1,12 @@
package it.integry.integrywmsnative.core.settings; package it.integry.integrywmsnative.core.settings;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.model.Azienda; 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.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
public class DBSettingsModel { public class DBSettingsModel {
@@ -33,10 +34,14 @@ public class DBSettingsModel {
private boolean flagForceAllToColli; private boolean flagForceAllToColli;
private boolean flagSpedizioneEnableManualPick; private boolean flagSpedizioneEnableManualPick;
private boolean flagSpedizioneCanSelectMultipleOrders; private boolean flagSpedizioneCanSelectMultipleOrders;
private List<String> notePerditaDocInterni = new ArrayList<>();
private boolean flagSpedizioneUseQtaOrd; private boolean flagSpedizioneUseQtaOrd;
private boolean flagOrdinaNuoviArticoliInGriglia;
private String docInterniCheckFornitore;
private String produzioneDefaultCodAnag; private String produzioneDefaultCodAnag;
private String reportNameSpedizionChiudiOrdine; private String reportNameSpedizionChiudiOrdine;
private int onNumCnfInputChanged = 1; private int onNumCnfInputChanged = 1;
private boolean flagAccettazioneUseQtaOrd = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
@@ -70,7 +75,7 @@ public class DBSettingsModel {
} }
public DBSettingsModel setDatiAzienda(Azienda datiAzienda) { public DBSettingsModel setDatiAzienda(Azienda datiAzienda) {
this.datiAzienda = datiAzienda; this.datiAzienda = datiAzienda;
return this; return this;
} }
@@ -245,6 +250,15 @@ public class DBSettingsModel {
return this; return this;
} }
public DBSettingsModel setFlagOrdinaNuoviArticoliInGriglia(boolean flagOrdinaNuoviArticoliInGriglia) {
this.flagOrdinaNuoviArticoliInGriglia = flagOrdinaNuoviArticoliInGriglia;
return this;
}
public boolean getFlagOrdinaNuoviArticoliInGriglia() {
return this.flagOrdinaNuoviArticoliInGriglia;
}
public String getProduzioneDefaultCodAnag() { public String getProduzioneDefaultCodAnag() {
return produzioneDefaultCodAnag; return produzioneDefaultCodAnag;
} }
@@ -271,4 +285,31 @@ public class DBSettingsModel {
this.onNumCnfInputChanged = onNumCnfInputChanged; this.onNumCnfInputChanged = onNumCnfInputChanged;
return this; return this;
} }
public List<String> getNotePerditaDocInterni() {
return notePerditaDocInterni;
}
public DBSettingsModel setNotePerditaDocInterni(List<String> notePerditaDocInterni) {
this.notePerditaDocInterni = notePerditaDocInterni;
return this;
}
public String getDocInterniCheckFornitore() {
return docInterniCheckFornitore;
}
public DBSettingsModel setDocInterniCheckFornitore(String docInterniCheckFornitore) {
this.docInterniCheckFornitore = docInterniCheckFornitore;
return this;
}
public boolean isFlagAccettazioneUseQtaOrd() {
return flagAccettazioneUseQtaOrd;
}
public DBSettingsModel setFlagAccettazioneUseQtaOrd(boolean flagAccettazioneUseQtaOrd) {
this.flagAccettazioneUseQtaOrd = flagAccettazioneUseQtaOrd;
return this;
}
} }

View File

@@ -7,6 +7,7 @@ import com.google.firebase.perf.metrics.Trace;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
@@ -129,7 +130,7 @@ public class SettingsManager {
} }
private static void loadAvailableCodMdeps(Runnable onComplete, RunnableArgs<Exception> onFailed) { private static void loadAvailableCodMdeps(Runnable onComplete, RunnableArgs<Exception> onFailed) {
SystemRESTConsumer.getAvailableCodMdeps(availableCodMdeps -> { SystemRESTConsumer.getAvailableCodMdepsStatic(availableCodMdeps -> {
dbSettingsModelIstance.setAvailableCodMdep(availableCodMdeps); dbSettingsModelIstance.setAvailableCodMdep(availableCodMdeps);
if (availableCodMdeps == null || availableCodMdeps.size() == 0) { if (availableCodMdeps == null || availableCodMdeps.size() == 0) {
@@ -265,6 +266,22 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SETUP") .setSection("SETUP")
.setKeySection("ON_NUM_CNF_INPUT_CHANGED")); .setKeySection("ON_NUM_CNF_INPUT_CHANGED"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PVM")
.setSection("DOC_INTERNI")
.setKeySection("NOTE_PERDITA"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PVM")
.setSection("ORDINI_A")
.setKeySection("ORDINA_NUOVI_ARTICOLI"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PVM")
.setSection("DOC_INTERNI")
.setKeySection("CHECK_FORNITORE"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("ACCETTAZIONE")
.setKeySection("FLAG_USE_QTA_ORD"));
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
@@ -289,6 +306,14 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class));
dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class)); dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class));
dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class));
dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class));
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null) {
dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|")));
}
Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class); Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class);
if (onNumCnfInputChanged != null) { if (onNumCnfInputChanged != null) {

View File

@@ -13,13 +13,19 @@ import java.lang.reflect.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Set; import java.util.Set;
/**
* Created by akshay on 01/03/18.
*/
public class Stash { public class Stash {
private static Stash stash; private static Stash stash;
private static Context instance;
private SharedPreferences sp; private SharedPreferences sp;
public static void init(Context context) { public static void init(Context context) {
stash = new Stash(); stash = new Stash();
instance = context;
if (stash.sp == null) { if (stash.sp == null) {
stash.sp = PreferenceManager.getDefaultSharedPreferences(context); stash.sp = PreferenceManager.getDefaultSharedPreferences(context);
} }
@@ -34,7 +40,7 @@ public class Stash {
public static void put(String key, String value) { public static void put(String key, String value) {
checkfornull(); checkfornull();
try { try {
stash.sp.edit().putString(key, value).apply(); stash.sp.edit().putString(key, value).commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -44,7 +50,7 @@ public class Stash {
public static void put(String key, Set<String> value) { public static void put(String key, Set<String> value) {
checkfornull(); checkfornull();
try { try {
stash.sp.edit().putStringSet(key, value).apply(); stash.sp.edit().putStringSet(key, value).commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -54,7 +60,7 @@ public class Stash {
public static void put(String key, int value) { public static void put(String key, int value) {
checkfornull(); checkfornull();
try { try {
stash.sp.edit().putInt(key, value).apply(); stash.sp.edit().putInt(key, value).commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -64,7 +70,7 @@ public class Stash {
public static void put(String key, long value) { public static void put(String key, long value) {
checkfornull(); checkfornull();
try { try {
stash.sp.edit().putLong(key, value).apply(); stash.sp.edit().putLong(key, value).commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -74,7 +80,7 @@ public class Stash {
public static void put(String key, float value) { public static void put(String key, float value) {
checkfornull(); checkfornull();
try { try {
stash.sp.edit().putFloat(key, value).apply(); stash.sp.edit().putFloat(key, value).commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -84,7 +90,7 @@ public class Stash {
public static void put(String key, boolean value) { public static void put(String key, boolean value) {
checkfornull(); checkfornull();
try { try {
stash.sp.edit().putBoolean(key, value).apply(); stash.sp.edit().putBoolean(key, value).commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -95,7 +101,7 @@ public class Stash {
checkfornull(); checkfornull();
try { try {
Gson gson = new GsonBuilder().create(); Gson gson = new GsonBuilder().create();
stash.sp.edit().putString(key, gson.toJson(value).toString()).apply(); stash.sp.edit().putString(key, gson.toJson(value)).commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -112,18 +118,26 @@ public class Stash {
} }
} }
public static String getString(String key) {
return getString(key, "");
}
//getStringSet //getStringSet
public static Set<String> getStringSet(String key, Set<String> defaultvalue) { public static Set<String> getStringSet(String key, Set<String> defaultvalue) {
checkfornull(); checkfornull();
try { try {
return getStringSet(key, defaultvalue); return stash.sp.getStringSet(key, defaultvalue);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return defaultvalue; return defaultvalue;
} }
} }
public static Set<String> getStringSet(String key) {
return getStringSet(key, null);
}
//getInt //getInt
public static int getInt(String key, int defaultvalue) { public static int getInt(String key, int defaultvalue) {
checkfornull(); checkfornull();
@@ -135,6 +149,10 @@ public class Stash {
} }
} }
public static int getInt(String key) {
return getInt(key, 0);
}
//getLong //getLong
public static long getLong(String key, long defaultvalue) { public static long getLong(String key, long defaultvalue) {
checkfornull(); checkfornull();
@@ -146,6 +164,10 @@ public class Stash {
} }
} }
public static long getLong(String key) {
return getLong(key, (long) 0);
}
//getFloat //getFloat
public static float getFloat(String key, float defaultvalue) { public static float getFloat(String key, float defaultvalue) {
checkfornull(); checkfornull();
@@ -157,6 +179,10 @@ public class Stash {
} }
} }
public static float getFloat(String key) {
return getFloat(key, 0.0f);
}
//getBoolean //getBoolean
public static boolean getBoolean(String key, boolean defaultvalue) { public static boolean getBoolean(String key, boolean defaultvalue) {
checkfornull(); checkfornull();
@@ -168,6 +194,10 @@ public class Stash {
} }
} }
public static boolean getBoolean(String key) {
return getBoolean(key, false);
}
//getObject //getObject
public static <T> Object getObject(String key, Class<?> tClass) { public static <T> Object getObject(String key, Class<?> tClass) {
checkfornull(); checkfornull();
@@ -196,7 +226,7 @@ public class Stash {
public static void clear(String key) { public static void clear(String key) {
checkfornull(); checkfornull();
try { try {
stash.sp.edit().remove(key).apply(); stash.sp.edit().remove(key).commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -206,12 +236,22 @@ public class Stash {
public static void clearAll() { public static void clearAll() {
checkfornull(); checkfornull();
try { try {
stash.sp.edit().clear().apply(); stash.sp.edit().clear().commit();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public static void addListener(StashListener listener){
checkfornull();
stash.sp.registerOnSharedPreferenceChangeListener(listener);
}
public static void removeListener(StashListener listener){
checkfornull();
stash.sp.unregisterOnSharedPreferenceChangeListener(listener);
}
private static class GenericType implements ParameterizedType { private static class GenericType implements ParameterizedType {
private Type type; private Type type;
@@ -238,4 +278,7 @@ public class Stash {
// implement equals method too! (as per javadoc) // implement equals method too! (as per javadoc)
} }
} public interface StashListener extends SharedPreferences.OnSharedPreferenceChangeListener {
}
}

View File

@@ -1,60 +0,0 @@
package it.integry.integrywmsnative.core.update;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class UpdateApp extends AsyncTask<String,Void,Void> {
private Context context;
public void setContext(Context contextf){
context = contextf;
}
@Override
protected Void doInBackground(String... arg0) {
try {
URL url = new URL(arg0[0]);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
file.mkdirs();
File outputFile = new File(file, "update.apk");
if(outputFile.exists()){
outputFile.delete();
}
FileOutputStream fos = new FileOutputStream(outputFile);
InputStream is = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = is.read(buffer)) != -1) {
fos.write(buffer, 0, len1);
}
fos.close();
is.close();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error!
context.startActivity(intent);
} catch (Exception e) {
Log.e("UpdateAPP", "Update error! " + e.getMessage());
}
return null;
}
}

View File

@@ -1,30 +1,35 @@
package it.integry.integrywmsnative.core.update; package it.integry.integrywmsnative.core.update;
import android.app.Activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Environment; import android.os.Environment;
import androidx.appcompat.app.AppCompatActivity;
import com.github.javiersantos.appupdater.AppUpdater; import com.github.javiersantos.appupdater.AppUpdater;
import com.github.javiersantos.appupdater.enums.Display; import com.github.javiersantos.appupdater.enums.Display;
import com.github.javiersantos.appupdater.enums.UpdateFrom; import com.github.javiersantos.appupdater.enums.UpdateFrom;
import java.io.File; import java.io.File;
import it.integry.integrywmsnative.R; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; 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.view.dialogs.DialogProgressView;
@Singleton
public class UpdatesManager { public class UpdatesManager {
public static void init(Activity context) { private AppCompatActivity mContext;
public void init(AppCompatActivity activityContext) {
this.mContext = activityContext;
String suffix; String suffix;
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
try { try {
@@ -40,64 +45,67 @@ public class UpdatesManager {
String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release" + suffix + ".apk"; String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release" + suffix + ".apk";
AppUpdater appUpdater = new AppUpdater(context) AppUpdater appUpdater = new AppUpdater(mContext)
.setDisplay(Display.DIALOG) .setDisplay(Display.DIALOG)
.setUpdateFrom(UpdateFrom.JSON) .setUpdateFrom(UpdateFrom.JSON)
.setUpdateJSON(currentVersionUrl) .setUpdateJSON(currentVersionUrl)
.setButtonDoNotShowAgain(null) .setButtonDoNotShowAgain(null)
.setButtonUpdateClickListener((dialog, which) -> { .setButtonUpdateClickListener((dialog, which) -> {
installAPK(context, currentDownloadUrl); installAPK(currentDownloadUrl);
}); });
appUpdater.start(); appUpdater.start();
} }
private static void installAPK(Activity context, String downloadURL) { private void installAPK(String downloadURL) {
String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"; String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
String fileName = context.getResources().getString(R.string.app_name) + ".apk";
destination += fileName;
final Uri uri = Uri.parse("file://" + destination);
//Delete update file if exists var progressDialog = DialogProgressView.newInstance("Download", null, false);
final File file = new File(destination); progressDialog.show(mContext.getSupportFragmentManager(), "tag");
if (file.exists())
file.delete();
//set downloadmanager
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadURL));
request.setDescription(context.getString(R.string.notification_update_download));
request.setTitle(context.getString(R.string.app_name));
//set destination var fileDownloader = new FileDownloader()
request.setDestinationUri(uri); .setDestFolder(destination)
.setUrlString(downloadURL)
.setOnProgressUpdate(progress -> {
mContext.runOnUiThread(() -> {
progressDialog.setProgress(progress);
});
})
.setOnDownloadCompleted(destPath -> {
// get download service and enqueue file mContext.runOnUiThread(() -> {
final DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); progressDialog.dismiss();
manager.enqueue(request);
//set BroadcastReceiver to install app when .apk is downloaded Uri fileLoc;
BroadcastReceiver onComplete = new BroadcastReceiver() { Intent intent;
public void onReceive(Context ctxt, Intent i) {
Uri fileLoc; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Intent intent; intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
fileLoc = GenericFileProvider.getUriForFile(mContext,
mContext.getApplicationContext().getPackageName() + ".core.update.GenericFileProvider",
new File(destPath));
} else {
intent = new Intent(Intent.ACTION_VIEW);
fileLoc = Uri.fromFile(new File(destPath));
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setDataAndType(fileLoc, "application/vnd.android.package-archive");
intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
fileLoc = GenericFileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".core.update.GenericFileProvider", file);
} else {
intent = new Intent(Intent.ACTION_VIEW);
fileLoc = Uri.fromFile(file);
}
intent.setDataAndType(fileLoc, "application/vnd.android.package-archive"); mContext.startActivity(intent);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); });
context.startActivity(intent); });
new Thread(() -> {
try {
fileDownloader.download();
} catch (Exception e) {
e.printStackTrace();
} }
}; }).start();
//register receiver for when .apk download is compete
context.registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
} }
} }

View File

@@ -0,0 +1,113 @@
package it.integry.integrywmsnative.core.utility;
import android.webkit.URLUtil;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class FileDownloader {
private String urlString;
private String destFolder;
private RunnableArgs<Integer> onProgressUpdate;
private RunnableArgs<String> onDownloadCompleted;
public void download() throws Exception {
InputStream input = null;
OutputStream output = null;
HttpURLConnection connection = null;
String destPathFile;
try {
File direct = new File(destFolder);
if (!direct.exists()) {
direct.mkdirs();
}
URL url = new URL(urlString);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
connection.setConnectTimeout(120 * 1000);
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK)
throw new Exception("Server returned HTTP " + connection.getResponseCode() + " " + connection.getResponseMessage());
input = connection.getInputStream();
int totalBytesToDownload = connection.getContentLength();
int downloadedBytes = 0;
String title = URLUtil.guessFileName(String.valueOf(url), null, null);
destPathFile = destFolder + title;
if (new File(destPathFile).exists())
new File(destPathFile).delete();
output = new FileOutputStream(destPathFile);
byte[] buf = new byte[1024];
int len;
while ((len = input.read(buf)) > 0) {
output.write(buf, 0, len);
downloadedBytes += len;
if (onProgressUpdate != null)
onProgressUpdate.run((downloadedBytes * 100) / totalBytesToDownload);
}
} catch (Exception e) {
throw e;
} finally {
try {
if (output != null)
output.close();
if (input != null)
input.close();
} catch (IOException ignored) {
}
if (connection != null)
connection.disconnect();
}
if (onDownloadCompleted != null) onDownloadCompleted.run(destPathFile);
}
public String getUrlString() {
return urlString;
}
public FileDownloader setUrlString(String urlString) {
this.urlString = urlString;
return this;
}
public String getDestFolder() {
return destFolder;
}
public FileDownloader setDestFolder(String destFolder) {
this.destFolder = destFolder;
return this;
}
public FileDownloader setOnProgressUpdate(RunnableArgs<Integer> onProgressUpdate) {
this.onProgressUpdate = onProgressUpdate;
return this;
}
public FileDownloader setOnDownloadCompleted(RunnableArgs<String> onDownloadCompleted) {
this.onDownloadCompleted = onDownloadCompleted;
return this;
}
}

View File

@@ -0,0 +1,9 @@
package it.integry.integrywmsnative.core.utility;
public class UtilityBoolean {
public static int toInt(boolean bool) {
return bool ? 1 : 0;
}
}

View File

@@ -1,25 +1,29 @@
package it.integry.integrywmsnative.core.utility; package it.integry.integrywmsnative.core.utility;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.text.Html; import android.text.Html;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import com.annimon.stream.Stream;
import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.rest.CommonRESTException; import it.integry.integrywmsnative.core.rest.CommonRESTException;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class UtilityExceptions { public class UtilityExceptions {
private static final Class<? extends Exception>[] FIREBASE_IGNORED_EXCEPTIONS = new Class[] {
public static void defaultException(Context context, Exception ex, Dialog progressDialog) { };
public static void defaultException(Context context, Exception ex, DialogProgressView progressDialog) {
defaultException(context, ex); defaultException(context, ex);
if (progressDialog != null) progressDialog.dismiss(); if (progressDialog != null && progressDialog.isVisible()) progressDialog.dismiss();
} }
public static void defaultException(Context context, Exception ex) { public static void defaultException(Context context, Exception ex) {
@@ -55,7 +59,10 @@ public class UtilityExceptions {
.show(fm, "tag"); .show(fm, "tag");
} }
if (!BuildConfig.DEBUG) { boolean toIgnore = ex.getClass().getName().startsWith("it.integry.integrywmsnative") ||
Stream.of(FIREBASE_IGNORED_EXCEPTIONS).anyMatch(x -> x.isAssignableFrom(ex.getClass()));
if (!BuildConfig.DEBUG && !toIgnore) {
if (sendEmail) UtilityLogger.errorMe(ex); if (sendEmail) UtilityLogger.errorMe(ex);
FirebaseCrashlytics.getInstance().recordException(ex); FirebaseCrashlytics.getInstance().recordException(ex);
} }

View File

@@ -8,7 +8,8 @@ public class UtilityFocus {
public static void focusTextBox(Context context, EditText editTextToFocus) { public static void focusTextBox(Context context, EditText editTextToFocus) {
editTextToFocus.requestFocus(); editTextToFocus.requestFocus();
editTextToFocus.setSelectAllOnFocus(true);
editTextToFocus.selectAll();
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editTextToFocus, InputMethodManager.SHOW_IMPLICIT); imm.showSoftInput(editTextToFocus, InputMethodManager.SHOW_IMPLICIT);
} }

View File

@@ -1,7 +1,5 @@
package it.integry.integrywmsnative.core.utility; package it.integry.integrywmsnative.core.utility;
import com.google.android.gms.common.internal.service.Common;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;

View File

@@ -31,10 +31,13 @@ public class UtilityPosizione {
} }
public static MtbDepoPosizione getFromCache(String posizione) { public static MtbDepoPosizione getFromCache(String posizione) {
List<MtbDepoPosizione> tmpList = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) var availablePosizioni = SettingsManager.iDB().getAvailablePosizioni();
if(availablePosizioni == null) return null;
List<MtbDepoPosizione> tmpList = Stream.of(availablePosizioni)
.filter(x -> x.getPosizione().equalsIgnoreCase(posizione)).toList(); .filter(x -> x.getPosizione().equalsIgnoreCase(posizione)).toList();
if(tmpList != null && tmpList.size() > 0) return tmpList.get(0); if(tmpList.size() > 0) return tmpList.get(0);
else return null; else return null;
} }

View File

@@ -1,25 +1,21 @@
package it.integry.integrywmsnative.core.utility; package it.integry.integrywmsnative.core.utility;
import android.app.Dialog; import androidx.appcompat.app.AppCompatActivity;
import android.content.Context; import androidx.fragment.app.FragmentActivity;
import it.integry.integrywmsnative.view.dialogs.DialogProgress; import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class UtilityProgress { public class UtilityProgress {
public static Dialog createDefaultProgressDialog(Context mContext) { public static DialogProgressView createDefaultProgressDialog(FragmentActivity mContext) {
// final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting), var progress = DialogProgressView.newInstance();
// mContext.getText(R.string.loading) + " ...", true); progress.show(mContext.getSupportFragmentManager(), "tag");
//
// return progress;
Dialog progress = DialogProgress.make(mContext);
progress.show();
return progress; return progress;
} }
public static Dialog createDefaultProgressDialog(Context mContext,String subtitle) {
Dialog progress = DialogProgress.make(mContext,subtitle); public static DialogProgressView createDefaultProgressDialog(AppCompatActivity mContext, String title, String subtitle) {
progress.show(); DialogProgressView progress = DialogProgressView.newInstance(title, subtitle, true);
progress.show(mContext.getSupportFragmentManager(), "tag");
return progress; return progress;
} }

View File

@@ -28,7 +28,7 @@ import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
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.ISearcableFragment; import it.integry.integrywmsnative.core.interfaces.ISearchableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
@@ -43,7 +43,7 @@ import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePicking
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class MainAccettazioneFragment extends BaseFragment implements ISearcableFragment, ITitledFragment, IScrollableFragment, MainAccettazioneViewModel.Listener { public class MainAccettazioneFragment extends BaseFragment implements ISearchableFragment, ITitledFragment, IScrollableFragment, MainAccettazioneViewModel.Listener {
public BindableBoolean fabVisible = new BindableBoolean(false); public BindableBoolean fabVisible = new BindableBoolean(false);
@@ -53,6 +53,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
private final List<Runnable> mOnPreDestroyList = new ArrayList<>(); private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
private ElevatedToolbar mToolbar; private ElevatedToolbar mToolbar;
private String mTextFilter;
private FragmentMainAccettazioneBinding mBinding; private FragmentMainAccettazioneBinding mBinding;
private final ObservableArrayList<MainListAccettazioneListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>(); private final ObservableArrayList<MainListAccettazioneListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
@@ -65,10 +66,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
} }
public static MainAccettazioneFragment newInstance() { public static MainAccettazioneFragment newInstance() {
MainAccettazioneFragment fragment = new MainAccettazioneFragment(); return new MainAccettazioneFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
} }
@@ -122,7 +120,9 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
private void initRecyclerView() { private void initRecyclerView() {
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList); this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), x->{
this.refreshList(getFilteredList(mTextFilter));
});
MainListAccettazioneAdapter adapter = new MainListAccettazioneAdapter(getActivity(), mOrdiniInevasiMutableData) MainListAccettazioneAdapter adapter = new MainListAccettazioneAdapter(getActivity(), mOrdiniInevasiMutableData)
@@ -228,20 +228,25 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
@Override @Override
public boolean onQueryTextChange(String newText) { public boolean onQueryTextChange(String newText) {
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
if(originalList == null || originalList.isEmpty()) return false;
mTextFilter = newText;
List<OrdineAccettazioneInevasoDTO> filteredOrders = getFilteredList(newText);
refreshList(filteredOrders);
return true;
}
private List<OrdineAccettazioneInevasoDTO> getFilteredList(String newText) {
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>(); List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue(); List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
if(originalList == null || originalList.isEmpty() || newText == null) return originalList;
if(originalList == null || originalList.isEmpty()) return false;
for(int i = 0; i < originalList.size(); i++){ for(int i = 0; i < originalList.size(); i++){
if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){ if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){
filteredOrders.add(originalList.get(i)); filteredOrders.add(originalList.get(i));
} }
} }
return filteredOrders;
refreshList(filteredOrders);
return true;
} }
@Override @Override

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