Compare commits

...

108 Commits

Author SHA1 Message Date
a3598fab56 Merge branch 'release/v1.29.13(317)' 2022-10-21 17:56:41 +02:00
7dc77bf1f9 -> v1.29.13 (317) 2022-10-21 17:56:26 +02:00
66f2bda370 Refactoring dialog ask posizione 2022-10-21 17:55:02 +02:00
600258228b Rimossa gestione MtbCols 2022-10-21 11:48:34 +02:00
19cc9f5016 Finish v1.29.12(316) 2022-10-20 17:36:22 +02:00
0dcb8c6af4 Finish v1.29.12(316) 2022-10-20 17:36:22 +02:00
9974deaf69 -> v1.29.12 (316) 2022-10-20 17:36:16 +02:00
fe081897e7 bugfix
la gestione approvv. linee prod crasha a fine caricamento
2022-10-20 12:03:35 +02:00
b0de2dda40 Finish v1.29.11(315) 2022-10-19 18:40:07 +02:00
dda288d709 Finish v1.29.11(315) 2022-10-19 18:40:07 +02:00
f6fdc45e1a -> v1.29.11 (315) 2022-10-19 18:40:01 +02:00
5e88833039 bugfix ConcurrentModificationException in aggiunta articoli atumatica in nuovo ordine acquisto 2022-10-19 18:39:12 +02:00
2c521c5f96 Merge branch 'release/v1.29.10(314)'
# Conflicts:
#	app/build.gradle
2022-10-12 15:27:31 +02:00
8530309244 -> v1.29.10 (314) 2022-10-12 15:27:00 +02:00
57dd0cef76 Rimossa troncatura barcode da itf14 a ean13 2022-10-12 15:25:25 +02:00
8df31407ac Merge remote-tracking branch 'origin/develop' into develop 2022-10-12 12:13:24 +02:00
8134a64a43 in rettifica cerca per codice articolo se code128 2022-10-12 12:13:16 +02:00
0c2fd117d5 Merge branch 'release/v1.29.9(313)' 2022-10-07 15:23:56 +02:00
d2b5fe917d -> v1.29.9 (313) 2022-10-07 15:23:44 +02:00
3de49545b7 Merge branch 'feature/InternalLogger' into develop 2022-10-07 15:22:59 +02:00
7163d91c53 Revert "Rimossa troncatura dell'ITF-14"
This reverts commit 7555e3d90f.
2022-10-07 15:22:43 +02:00
b8b3d2f2bb Implementato log su file 2022-10-07 15:22:32 +02:00
7555e3d90f Rimossa troncatura dell'ITF-14 2022-10-07 10:53:35 +02:00
46e438e0e9 Merge branch 'release/v1.29.8(312)' 2022-10-06 17:00:08 +02:00
439eada61b -> v1.29.8 (312) 2022-10-06 16:59:09 +02:00
48548b7c92 Prova fix su dialog progress 2022-10-06 16:56:35 +02:00
79afe0155b boh 2022-10-06 15:48:45 +02:00
730dabc2bb Finish v1.29.7(311) 2022-10-05 16:20:09 +02:00
44255f08b4 Finish v1.29.7(311) 2022-10-05 16:20:09 +02:00
fb23009fcc -> v1.29.7 (311) 2022-10-05 16:20:03 +02:00
c0310e492f Merge remote-tracking branch 'origin/develop' into develop 2022-10-05 15:58:13 +02:00
bf1fc455e1 fix su dialog vari 2022-10-05 15:58:09 +02:00
c7c2700dbe Finish v1.29.6(310) 2022-10-05 14:11:57 +02:00
c89e4869ef Finish v1.29.6(310) 2022-10-05 14:11:57 +02:00
5e147c9d96 -> v1.29.6 (310) 2022-10-05 14:11:52 +02:00
95fc680823 aggiunti controlli su lista ordini accettazione nulla 2022-10-05 14:11:11 +02:00
3cd1b8eb9f Finish v1.29.5(309) 2022-10-04 14:54:42 +02:00
ca04b87a8e Finish v1.29.5(309) 2022-10-04 14:54:42 +02:00
10ab47a1b7 -> v1.29.5 (309) 2022-10-04 14:54:37 +02:00
fdaa2b7f21 commit file .idea 2022-10-04 13:21:26 +02:00
e9b179ca7f risolto problema su articoli senza diacod 2022-10-04 13:20:55 +02:00
04d811af93 Merge branch 'feature/UpdateUI' into develop 2022-10-04 12:16:18 +02:00
cb2421f263 Fix su versioni librerie 2022-10-03 18:12:15 +02:00
16a565fc51 Layout filters and other dialogs 2022-10-03 15:26:42 +02:00
f68691df6b Refactoring su DialogBasketLU 2022-10-03 15:26:42 +02:00
f4f7f4a6f0 Refactoring DialogScanOrCreateLU 2022-10-03 15:26:41 +02:00
b129bb51c6 Aggiornato tema.
Aggiornato DialogProgressView.
Aggiornato DialogYesNoView.
Aggiornato DialogInputPesoLuView.
2022-10-03 15:26:41 +02:00
8c80918521 Update AGP to 7.3.0 2022-10-03 12:56:03 +02:00
e8dea4cef0 Merge branch 'hotfix/Hotfix-1' into develop 2022-10-03 12:37:37 +02:00
b51bf1d9cb Merge branch 'hotfix/Hotfix-1' 2022-10-03 12:37:36 +02:00
3c25e223ab -> v1.29.4 (308) 2022-10-03 12:37:22 +02:00
16d9f2f6ff Merge branch 'hotfix/Hotfix-1' into develop 2022-10-03 12:36:13 +02:00
fd3dfb9afe Merge branch 'hotfix/Hotfix-1' 2022-10-03 12:36:13 +02:00
2916d2b5d0 Fix su focus in dialogInputQuantity 2022-10-03 12:35:58 +02:00
dac12905ef Cambiato statoPartitaMag to int 2022-10-03 12:15:29 +02:00
bf56c8e4c7 Aggiunta quantità omaggio in spedizione
aggiunto alert partite in scadenza in spediione
2022-09-28 16:59:25 +02:00
7272e3e541 Finish v1.29.3(307) 2022-09-26 12:05:27 +02:00
020c99e700 Finish v1.29.3(307) 2022-09-26 12:05:27 +02:00
12a9610e7a -> v1.29.3 (307) 2022-09-26 12:04:55 +02:00
0e6f4a7892 aggiunta configurazione scanner barcode tramite preferenze app 2022-09-26 11:52:24 +02:00
f8c0852cb7 Finish v1.29.2(306) 2022-08-31 13:08:46 +02:00
ee48e7e2a4 Finish v1.29.2(306) 2022-08-31 13:08:45 +02:00
821099c037 -> v1.29.2 (306) 2022-08-31 13:08:26 +02:00
9a6211fc46 Fix su partita mag nulla in spedizione 2022-08-31 13:07:35 +02:00
ee8abe3ea8 Libraries updates pt2 2022-08-31 11:28:02 +02:00
654a9e0161 Libraries updates 2022-08-31 10:58:14 +02:00
076c84c119 Finish v1.29.1(305) 2022-08-05 19:07:03 +02:00
6fa80a5485 Finish v1.29.1(305) 2022-08-05 19:07:02 +02:00
e0ea6b17a1 -> v1.29.1 (305) 2022-08-05 19:06:58 +02:00
60978167c2 Miglioramento UI di recupero materiale 2022-08-05 17:34:43 +02:00
6a848e081a Cambiata configurazione per scanner Honeywell.
Sistemati decimali in lista ul recupero materiale.
2022-08-05 17:09:36 +02:00
2960d0d4b4 Finish v1.29.0(304) 2022-08-04 09:58:55 +02:00
6b01861a26 Finish v1.29.0(304) 2022-08-04 09:58:54 +02:00
5889942ff9 -> v1.29.0 (304) 2022-08-04 09:58:48 +02:00
0359ddcc90 Fix in rettifica giacenze.
Aggiunti i campi "Giacenza in magazzino" e "Impegnato" nel dialog input quantity.
2022-08-04 09:58:10 +02:00
8409507dab Finish v1.28.9(303) 2022-07-29 19:41:12 +02:00
208653223c Finish v1.28.9(303) 2022-07-29 19:41:11 +02:00
62f6e12a86 -> v1.28.9 (303) 2022-07-29 19:41:06 +02:00
b662929c19 fix timeout connessioni.
fix pre destroy rettifica giacenze.
2022-07-29 19:40:24 +02:00
40895eac2f Finish v1.28.8(302) 2022-07-22 19:00:53 +02:00
dc7e90b2fe Finish v1.28.8(302) 2022-07-22 19:00:53 +02:00
5d1f275ebc -> v1.28.8 (302) 2022-07-22 19:00:47 +02:00
79192ce337 aggiunta stampa etichetta da rientro merce 2022-07-22 18:49:58 +02:00
7f0f6c969a Finish v1.28.7(301) 2022-07-22 15:53:28 +02:00
e23beddf65 Finish v1.28.7(301) 2022-07-22 15:53:27 +02:00
1fd51a4097 -> v1.28.7 (301) 2022-07-22 15:53:19 +02:00
5ea124bcf6 rimosso filtro per linea in recupero materiale da gestione linee 2022-07-22 15:52:27 +02:00
fa6ab9f58f Finish v1.28.6(300) 2022-07-22 11:21:59 +02:00
f7806103fb Finish v1.28.6(300) 2022-07-22 11:21:59 +02:00
87acc5a4e3 -> v1.28.6 (300) 2022-07-22 11:21:54 +02:00
7c49af085d aggiunte condizioni per l'autocompletamento delle tipo pedana in rientro merce 2022-07-22 11:21:08 +02:00
0c3d5bd0f1 Finish v1.28.5(299) 2022-07-21 17:15:10 +02:00
37d956bb5c Finish v1.28.5(299) 2022-07-21 17:15:09 +02:00
fef564b090 -> v1.28.5 (299) 2022-07-21 17:15:03 +02:00
d1c491ee80 risolti bug vari 2022-07-21 17:14:30 +02:00
0cd8a3b41f Finish v1.28.4(298) 2022-07-21 15:59:03 +02:00
f7e4a3d005 Finish v1.28.4(298) 2022-07-21 15:59:02 +02:00
a22ecb9620 -> v1.28.4 (298) 2022-07-21 15:58:54 +02:00
57c22b617e apportate modifiche rientro merce richieste da Agricoper,
risolto bug divide by zero in spedizione quando qtaCmfOrd è decimale
2022-07-21 15:58:01 +02:00
84876bf7c1 Finish v1.28.3(297) 2022-07-20 16:08:12 +02:00
2718f0ff2b Finish v1.28.3(297) 2022-07-20 16:08:12 +02:00
fca325855e -> v1.28.3 (297) 2022-07-20 16:08:06 +02:00
c6fc287a3f corretto controllo su creazione collo in accettazione
aggiunto controllo su stato articoli in servizio getArticoloBybarcode
2022-07-20 16:07:14 +02:00
29fd0292e7 Finish v1.28.2(296) 2022-07-20 15:46:00 +02:00
90cf83e3cd Finish v1.28.2(296) 2022-07-20 15:46:00 +02:00
f4c1f1fe34 -> v1.28.2 (296) 2022-07-20 15:45:53 +02:00
9e85b9f828 aggiunta setup non presente in lista 2022-07-20 15:44:40 +02:00
506a56a1a2 Finish v1.28.1(295) 2022-07-18 10:56:05 +02:00
185 changed files with 6085 additions and 3519 deletions

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\ValerioC.STUDIO-ML\.android\avd\Pixel_4_XL_API_30.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-07-15T15:36:03.605659600Z" />
</component>
</project>

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 295 def appVersionCode = 317
def appVersionName = '1.28.1' def appVersionName = '1.29.13'
signingConfigs { signingConfigs {
release { release {
@@ -31,12 +31,12 @@ android {
} }
} }
compileSdkVersion 31 compileSdkVersion 32
defaultConfig { defaultConfig {
applicationId "it.integry.integrywmsnative" applicationId "it.integry.integrywmsnative"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 31 targetSdkVersion 32
versionCode appVersionCode versionCode appVersionCode
versionName appVersionName versionName appVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -83,6 +83,7 @@ android {
lint { lint {
abortOnError false abortOnError false
} }
namespace 'it.integry.integrywmsnative'
} }
@@ -93,7 +94,7 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.android.support', module: 'support-annotations'
}) })
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.orhanobut:logger:2.2.0' implementation 'com.github.lupaulus:logger:2.3.2'
//Firebase //Firebase
@@ -103,28 +104,32 @@ dependencies {
implementation 'com.google.firebase:firebase-core' implementation 'com.google.firebase:firebase-core'
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:18.0.0' implementation 'com.google.android.gms:play-services-basement:18.1.0'
implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'androidx.appcompat:appcompat:1.5.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.5.0' implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.preference:preference-ktx:1.2.0'
implementation('androidx.preference:preference-ktx:1.2.0') {
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx'
}
implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0" implementation "androidx.slidingpanelayout:slidingpanelayout: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.4.1' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' // implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
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.40' def dagger2_version = '2.40.1'
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"
@@ -143,7 +148,7 @@ dependencies {
implementation 'com.github.pedromassango:doubleClick:3.0' implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM //SQLite ROOM
def room_version = "2.4.1" def room_version = "2.4.3"
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"

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android">
package="it.integry.integrywmsnative">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

View File

@@ -86,6 +86,8 @@ import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdC
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;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCComponent;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCModule;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent;
@@ -137,7 +139,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogEditArticoloModule.class, DialogEditArticoloModule.class,
DialogPrintOrderSSCCListModule.class, DialogPrintOrderSSCCListModule.class,
ProdLineeProduzioneModule.class, ProdLineeProduzioneModule.class,
ProdDettaglioLineaModule.class ProdDettaglioLineaModule.class,
DialogPrintUlSSCCModule.class
}) })
public interface MainApplicationComponent { public interface MainApplicationComponent {
@@ -231,6 +234,8 @@ public interface MainApplicationComponent {
ProdDettaglioLineaComponent.Factory prodDettaglioLineaComponent(); ProdDettaglioLineaComponent.Factory prodDettaglioLineaComponent();
DialogPrintUlSSCCComponent.Factory dialogPrintUlSSCCComponent();
void inject(MainApplication mainApplication); void inject(MainApplication mainApplication);
void inject(AppContext mainApplication); void inject(AppContext mainApplication);

View File

@@ -17,6 +17,7 @@ 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.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DocumentiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
@@ -207,4 +208,10 @@ public class MainApplicationModule {
return new ProductionLinesRESTConsumer(); return new ProductionLinesRESTConsumer();
} }
@Provides
@Singleton
DocumentiRESTConsumer provideDocumentiRESTConsumer() {
return new DocumentiRESTConsumer();
}
} }

View File

@@ -1,14 +1,21 @@
package it.integry.integrywmsnative.core.barcode_reader; package it.integry.integrywmsnative.core.barcode_reader;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import android.util.Pair;
import android.view.KeyEvent; import android.view.KeyEvent;
import androidx.preference.PreferenceManager;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface; import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
import it.integry.barcode_base_android_library.model.BarcodeSetting;
import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader; import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader; import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader;
import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader; import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader;
import it.integry.zebrascannerlibrary.ZebraBarcodeReader; import it.integry.zebrascannerlibrary.ZebraBarcodeReader;
@@ -21,12 +28,7 @@ public class BarcodeManager {
private static boolean mEnabled = true; private static boolean mEnabled = true;
private static final Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{ private static final Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{PointMobileBarcodeReader.class, ZebraBarcodeReader.class, HoneyWellBarcodeReader.class, KeyboardEmulatorBarcodeReader.class};
PointMobileBarcodeReader.class,
ZebraBarcodeReader.class,
HoneyWellBarcodeReader.class,
KeyboardEmulatorBarcodeReader.class
};
public static void init(Context applicationContext) throws Exception { public static void init(Context applicationContext) throws Exception {
@@ -65,6 +67,18 @@ public class BarcodeManager {
} }
}); });
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext);
var additionalSettings = new ArrayList<Pair<String, Object>>();
var scanDelay = sharedPreferences.getString(MainSettingsFragment.KEY_TRIGGER_SCAN_DELAY, null);
var scanDelaySetting = new Pair<String, Object>(BarcodeSetting.P_TRIGGER_SCAN_DELAY, scanDelay);
additionalSettings.add(scanDelaySetting);
var scanMode = sharedPreferences.getString(MainSettingsFragment.KEY_TRIGGER_SCAN_MODE, null);
var scanModeSetting = new Pair<String, Object>(BarcodeSetting.P_TRIGGER_SCAN_MODE, scanMode);
additionalSettings.add(scanModeSetting);
BarcodeManager.changeSettings(additionalSettings);
}); });
} }
} }
@@ -81,8 +95,7 @@ public class BarcodeManager {
} }
public static boolean onKeyDown(int keyCode, KeyEvent keyEvent) { public static boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
if (mCurrentBarcodeInterface != null) if (mCurrentBarcodeInterface != null) mCurrentBarcodeInterface.onKeyEvent(keyEvent);
mCurrentBarcodeInterface.onKeyEvent(keyEvent);
return true; return true;
} }
@@ -123,16 +136,21 @@ public class BarcodeManager {
public static void disable() { public static void disable() {
mEnabled = false; mEnabled = false;
UtilityLogger.trace("Barcode reader disabled");
} }
public static void enable() { public static void enable() {
mEnabled = true; mEnabled = true;
UtilityLogger.trace("Barcode reader enabled");
} }
public static boolean isEnabled() { public static boolean isEnabled() {
return mEnabled; return mEnabled;
} }
public static void changeSettings(List<Pair<String, Object>> settings) {
mCurrentBarcodeInterface.changeSettings(settings);
}
public static boolean isKeyboardEmulator() { public static boolean isKeyboardEmulator() {
return mCurrentBarcodeInterface instanceof KeyboardEmulatorBarcodeReader; return mCurrentBarcodeInterface instanceof KeyboardEmulatorBarcodeReader;

View File

@@ -4,8 +4,11 @@ import android.content.Context;
import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.orhanobut.logger.AndroidLogAdapter; import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.DiskLogAdapter;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import java.io.File;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -36,8 +39,6 @@ public class AppContext {
} }
@Inject @Inject
public void init() { public void init() {
this.initUtilities(); this.initUtilities();
@@ -56,10 +57,10 @@ public class AppContext {
} }
private void initCrashlytics() { private void initCrashlytics() {
if(!BuildConfig.DEBUG) { if (!BuildConfig.DEBUG) {
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
if( SettingsManager.isInstanceAvailable() && if (SettingsManager.isInstanceAvailable() &&
(SettingsManager.i().getUserSession() != null && !UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB())) && (SettingsManager.i().getUserSession() != null && !UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB())) &&
(SettingsManager.i().getUser() != null && !UtilityString.isNullOrEmpty(SettingsManager.i().getUser().getFullname()))) { (SettingsManager.i().getUser() != null && !UtilityString.isNullOrEmpty(SettingsManager.i().getUser().getFullname()))) {
@@ -77,6 +78,11 @@ public class AppContext {
private void initLogger() { private void initLogger() {
Logger.addLogAdapter(new AndroidLogAdapter()); Logger.addLogAdapter(new AndroidLogAdapter());
File logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath());
int maxBytesSize = 5000;
Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize));
} }
} }

View File

@@ -39,7 +39,7 @@ public class MainContext {
try { try {
BarcodeManager.init(applicationContext); BarcodeManager.init(applicationContext);
} catch (Exception exception) { } catch (Exception exception) {
exception.printStackTrace();
} }
this.initDBData(() -> { this.initDBData(() -> {

View File

@@ -0,0 +1,10 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public final class EmptyLUException extends Exception {
public EmptyLUException() {
super(UtilityResources.getString(R.string.empty_lu));
}
}

View File

@@ -38,7 +38,7 @@ public class ExceptionsHandler implements Thread.UncaughtExceptionHandler {
@Override @Override
public void uncaughtException(final Thread thread, final Throwable ex) { public void uncaughtException(final Thread thread, final Throwable ex) {
try { try {
UtilityLogger.errorMe(new Exception(ex)); UtilityLogger.error(new Exception(ex));
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, "Exception Logger failed!", e); Log.e(TAG, "Exception Logger failed!", e);
MainApplication.exit(); MainApplication.exit();

View File

@@ -5,6 +5,6 @@ import it.integry.integrywmsnative.core.utility.UtilityResources;
public final class NoArtsFoundException extends Exception { public final class NoArtsFoundException extends Exception {
public NoArtsFoundException() { public NoArtsFoundException() {
super(UtilityResources.getString(R.string.no_result_from_barcode)); super(UtilityResources.getString(R.string.no_arts_found));
} }
} }

View File

@@ -49,7 +49,7 @@ public class BaseActivity extends AppCompatActivity {
public void onError(Exception ex) { public void onError(Exception ex) {
this.runOnUiThread(() -> { this.runOnUiThread(() -> {
this.closeProgress(); this.closeProgress();
UtilityExceptions.defaultException(this, ex, mCurrentProgress); UtilityExceptions.defaultException(this, ex);
BarcodeManager.enable(); BarcodeManager.enable();
}); });
} }

View File

@@ -76,7 +76,7 @@ public abstract class BaseFragment extends Fragment {
if (progressOpened) { if (progressOpened) {
this.progressOpened = false; this.progressOpened = false;
requireActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
mCurrentProgress.dismiss(); mCurrentProgress.dismissAllowingStateLoss();
}); });
} }
} }
@@ -84,7 +84,7 @@ public abstract class BaseFragment extends Fragment {
public void onError(Exception ex) { public void onError(Exception ex) {
requireActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
this.closeProgress(); this.closeProgress();
UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); UtilityExceptions.defaultException(getActivity(), ex);
BarcodeManager.enable(); BarcodeManager.enable();
}); });
} }

File diff suppressed because it is too large Load Diff

View File

@@ -88,6 +88,11 @@ public class MtbAart extends EntityBase {
private String marchio; private String marchio;
private Integer sezione; private Integer sezione;
private UntMisRifPesoEnum untMisRifPeso; private UntMisRifPesoEnum untMisRifPeso;
private BigDecimal qtaEsistente;
private BigDecimal qtaImpegnata;
private BigDecimal numCnfEsistente;
private BigDecimal numCnfImpegnata;
private List<MtbUntMis> mtbUntMis; private List<MtbUntMis> mtbUntMis;
@@ -819,4 +824,40 @@ public class MtbAart extends EntityBase {
this.untMisRifPeso = untMisRifPeso; this.untMisRifPeso = untMisRifPeso;
return this; return this;
} }
public BigDecimal getQtaEsistente() {
return qtaEsistente;
}
public MtbAart setQtaEsistente(BigDecimal qtaEsistente) {
this.qtaEsistente = qtaEsistente;
return this;
}
public BigDecimal getQtaImpegnata() {
return qtaImpegnata;
}
public MtbAart setQtaImpegnata(BigDecimal qtaImpegnata) {
this.qtaImpegnata = qtaImpegnata;
return this;
}
public BigDecimal getNumCnfEsistente() {
return numCnfEsistente;
}
public MtbAart setNumCnfEsistente(BigDecimal numCnfEsistente) {
this.numCnfEsistente = numCnfEsistente;
return this;
}
public BigDecimal getNumCnfImpegnata() {
return numCnfImpegnata;
}
public MtbAart setNumCnfImpegnata(BigDecimal numCnfImpegnata) {
this.numCnfImpegnata = numCnfImpegnata;
return this;
}
} }

View File

@@ -1,122 +0,0 @@
package it.integry.integrywmsnative.core.model;
import java.util.Date;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class MtbCols extends EntityBase {
private String dataCollo;
private String gestione;
private Integer idRiga;
private Integer numCollo;
private String serCollo;
private String codMdep;
private String dataMove;
private String modificatoDa;
private String posizione;
private String causale;
public MtbCols() {
type = "mtb_cols";
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
setModificatoDa(SettingsManager.i().getUser().getFullname());
//setDataMove(UtilityDate.getDateInstance());
}
public String getDataCollo() {
return dataCollo;
}
public MtbCols setDataCollo(String dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public String getGestione() {
return gestione;
}
public MtbCols setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Integer getIdRiga() {
return idRiga;
}
public MtbCols setIdRiga(Integer idRiga) {
this.idRiga = idRiga;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public MtbCols setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public MtbCols setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public String getCodMdep() {
return codMdep;
}
public MtbCols setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getDataMove() {
return dataMove;
}
public MtbCols setDataMove(String dataMove) {
this.dataMove = dataMove;
return this;
}
public MtbCols setDataMove(Date dataMove) {
this.dataMove = UtilityDate.formatDate(dataMove, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
return this;
}
public String getModificatoDa() {
return modificatoDa;
}
public MtbCols setModificatoDa(String modificatoDa) {
this.modificatoDa = modificatoDa;
return this;
}
public String getPosizione() {
return posizione;
}
public MtbCols setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public String getCausale() {
return causale;
}
public MtbCols setCausale(String causale) {
this.causale = causale;
return this;
}
}

View File

@@ -63,7 +63,6 @@ public class MtbColt extends EntityBase {
private BigDecimal altezzaCm; private BigDecimal altezzaCm;
private String codJcom; private String codJcom;
private List<MtbCols> mtbCols;
private MtbTCol mtbTCol; private MtbTCol mtbTCol;
private Boolean disablePrint; private Boolean disablePrint;
@@ -175,7 +174,7 @@ public class MtbColt extends EntityBase {
try { try {
dataColloD = getDataColloD(); dataColloD = getDataColloD();
} catch (Exception ex) { } catch (Exception ex) {
UtilityLogger.errorMe(ex); UtilityLogger.error(ex);
} }
if (dataColloD != null) { if (dataColloD != null) {
@@ -526,16 +525,6 @@ public class MtbColt extends EntityBase {
return this; return this;
} }
public List<MtbCols> getMtbCols() {
return mtbCols;
}
public MtbColt setMtbCols(List<MtbCols> mtbCols) {
this.mtbCols = mtbCols;
return this;
}
public Boolean getDisablePrint() { public Boolean getDisablePrint() {
return disablePrint == null ? false : disablePrint; return disablePrint == null ? false : disablePrint;
} }

View File

@@ -1,6 +1,5 @@
package it.integry.integrywmsnative.core.model; package it.integry.integrywmsnative.core.model;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
public class MtbDepoPosizione { public class MtbDepoPosizione {
@@ -19,7 +18,7 @@ public class MtbDepoPosizione {
return (MtbDepoPosizione) super.clone(); return (MtbDepoPosizione) super.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {
e.printStackTrace(); e.printStackTrace();
UtilityLogger.errorMe(e); UtilityLogger.error(e);
} }
return null; return null;

View File

@@ -0,0 +1,93 @@
package it.integry.integrywmsnative.core.model.dto;
import java.util.Date;
public class StatoArticoloDTO {
private String codMart;
private String partitaMag;
private Date dataScad;
private Integer ggScadPartita;
private Integer ggMax;
private Integer ggScadEffettivi;
private Integer ggUtili;
private Integer statoArt;
public String getCodMart() {
return codMart;
}
public StatoArticoloDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public StatoArticoloDTO setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public Date getDataScad() {
return dataScad;
}
public StatoArticoloDTO setDataScad(Date dataScad) {
this.dataScad = dataScad;
return this;
}
public Integer getGgScadPartita() {
return ggScadPartita;
}
public StatoArticoloDTO setGgScadPartita(Integer ggScadPartita) {
this.ggScadPartita = ggScadPartita;
return this;
}
public Integer getGgMax() {
return ggMax;
}
public StatoArticoloDTO setGgMax(Integer ggMax) {
this.ggMax = ggMax;
return this;
}
public Integer getGgScadEffettivi() {
return ggScadEffettivi;
}
public StatoArticoloDTO setGgScadEffettivi(Integer ggScadEffettivi) {
this.ggScadEffettivi = ggScadEffettivi;
return this;
}
public Integer getGgUtili() {
return ggUtili;
}
public StatoArticoloDTO setGgUtili(Integer ggUtili) {
this.ggUtili = ggUtili;
return this;
}
public Integer getStatoArt() {
return statoArt;
}
public StatoArticoloDTO setStatoArt(Integer statoArt) {
this.statoArt = statoArt;
return this;
}
}

View File

@@ -0,0 +1,26 @@
package it.integry.integrywmsnative.core.model.secondary;
public enum StatoPartitaMag {
IN_SCADENZA(1),
SCADUTO(2),
NON_IN_SCADENZA(3);
private final int text;
StatoPartitaMag(int text) {
this.text = text;
}
public int getText() {
return this.text;
}
public static StatoPartitaMag from(int text) {
for (StatoPartitaMag b : StatoPartitaMag.values()) {
if (b.text == text) return b;
}
return null;
}
}

View File

@@ -28,11 +28,11 @@ public class RESTBuilder {
} }
public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors) { public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors) {
return getService(service, host, port, addInterceptors, true, 30); return getService(service, host, port, addInterceptors, true, 60);
} }
public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors, boolean addEmsApi) { public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors, boolean addEmsApi) {
return getService(service, host, port, addInterceptors, addEmsApi, 30); return getService(service, host, port, addInterceptors, addEmsApi, 60);
} }
public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors, boolean addEmsApi, int timeout) { public static <T> T getService(final Class<T> service, String host, int port, boolean addInterceptors, boolean addEmsApi, int timeout) {

View File

@@ -14,6 +14,7 @@ import javax.inject.Singleton;
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.model.MtbGrup;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.core.utility.UtilityQuery;
@@ -32,11 +33,13 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
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);
articoloRESTConsumerService.getByBarcodeProd(barcodeProd).enqueue(new Callback<ServiceRESTResponse<MtbAart>>() { articoloRESTConsumerService.getByBarcodeProd(barcodeProd).enqueue(new Callback<>() {
@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, "getByBarcodeProd", (m) -> { analyzeAnswer(response, "getByBarcodeProd", (m) -> {
onComplete.run(response.body().getEntityList()); List<MtbAart> aartList = response.body().getEntityList();
aartList = aartList != null ? Stream.of(aartList).filter(x -> x.getFlagStato().equalsIgnoreCase("A")).toList() : null;
onComplete.run(aartList);
}, onFailed); }, onFailed);
} }
@@ -59,7 +62,7 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class); ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(joinedCods).enqueue(new Callback<ServiceRESTResponse<MtbAart>>() { articoloRESTConsumer.getByCodMart(joinedCods).enqueue(new Callback<>() {
@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) -> {
@@ -75,11 +78,28 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
} }
public void getStatoPartita(String codMart, String partitaMag, RunnableArgs<List<StatoArticoloDTO>> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getStatoPartita(codMart, partitaMag).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<StatoArticoloDTO>>> call, Response<ServiceRESTResponse<List<StatoArticoloDTO>>> response) {
analyzeAnswer(response, "getStatoPartita", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<StatoArticoloDTO>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void getByCodMart(String codMartToFind, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) { public void getByCodMart(String codMartToFind, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class); ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(codMartToFind).enqueue(new Callback<ServiceRESTResponse<MtbAart>>() { articoloRESTConsumer.getByCodMart(codMartToFind).enqueue(new Callback<>() {
@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) -> {

View File

@@ -1,7 +1,10 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import java.util.List;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.POST; import retrofit2.http.POST;
@@ -16,4 +19,7 @@ public interface ArticoloRESTConsumerService {
@GET("SM2getArticoloByCodMart") @GET("SM2getArticoloByCodMart")
Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Query("codMart") String barcodeProd); Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Query("codMart") String barcodeProd);
@GET("getProductLotStatus")
Call<ServiceRESTResponse<List<StatoArticoloDTO>>> getStatoPartita(@Query("codMart") String codMart, @Query("partitaMag") String partitaMag);
} }

View File

@@ -20,7 +20,7 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer {
IBarcodeCustomization barcodeCustomization = ClassRouter.getInstance(ClassRouter.PATH.BARCODE_CUSTOMIZATION); IBarcodeCustomization barcodeCustomization = ClassRouter.getInstance(ClassRouter.PATH.BARCODE_CUSTOMIZATION);
if(barcodeCustomization != null && barcodeCustomization.shouldForceToEan13(barcodeObj.getStringValue())){ if (barcodeCustomization != null && barcodeCustomization.shouldForceToEan13(barcodeObj.getStringValue())) {
Ean128Model ean128Model = new Ean128Model(); Ean128Model ean128Model = new Ean128Model();
ean128Model.Gtin = barcodeObj.getStringValue(); ean128Model.Gtin = barcodeObj.getStringValue();
onComplete.run(ean128Model); onComplete.run(ean128Model);
@@ -30,7 +30,7 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer {
String ean128 = barcodeObj.getStringValue().replaceAll("" + ((char) 29), "|"); String ean128 = barcodeObj.getStringValue().replaceAll("" + ((char) 29), "|");
BarcodeRESTConsumerService barcodeRESTConsumerService = RESTBuilder.getService(BarcodeRESTConsumerService.class); BarcodeRESTConsumerService barcodeRESTConsumerService = RESTBuilder.getService(BarcodeRESTConsumerService.class);
barcodeRESTConsumerService.decodeEan128(ean128).enqueue(new Callback<ServiceRESTResponse<Ean128Model>>() { barcodeRESTConsumerService.decodeEan128(ean128).enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<Ean128Model>> call, Response<ServiceRESTResponse<Ean128Model>> response) { public void onResponse(Call<ServiceRESTResponse<Ean128Model>> call, Response<ServiceRESTResponse<Ean128Model>> response) {
analyzeAnswer(response, "DecodeEan128", onComplete, onFailed); analyzeAnswer(response, "DecodeEan128", onComplete, onFailed);

View File

@@ -89,8 +89,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public void saveColli(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) { public void saveColli(List<MtbColt> mtbColtsToSave, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
for (MtbColt mtbColt : mtbColtsToSave) { for (MtbColt mtbColt : mtbColtsToSave) {
mtbColt.setMtbCols(null);
for (int i = 0; i < mtbColt.getMtbColr().size(); i++) { for (int i = 0; i < mtbColt.getMtbColr().size(); i++) {
mtbColt.getMtbColr().get(i) mtbColt.getMtbColr().get(i)
.setMtbAart(null) .setMtbAart(null)
@@ -326,7 +324,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<ServiceRESTResponse<MtbColt>>() { colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<MtbColt>> call, Response<ServiceRESTResponse<MtbColt>> response) { public void onResponse(Call<ServiceRESTResponse<MtbColt>> call, Response<ServiceRESTResponse<MtbColt>> response) {
analyzeAnswer(response, "GetBySSCC", mtbColt -> { analyzeAnswer(response, "GetBySSCC", mtbColt -> {
@@ -700,4 +698,50 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void confirmGiacenzaUL(MtbColt sourceMtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone();
sourceMtbColtClone.setMtbColr(new ObservableArrayList<>());
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.confirmGiacenzaUL(sourceMtbColtClone).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "confirmGiacenzaUL", data -> {
onComplete.run();
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
if (onFailed != null) onFailed.run(new Exception(t));
}
});
}
public void loadShipmentUlFromProductionUL(MtbColt mtbColt, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
HashMap<String, Object> params = new HashMap<>();
params.put("mtb_colr.gestione_rif", mtbColt.getGestione());
params.put("mtb_colr.ser_collo_rif", mtbColt.getSerCollo());
params.put("mtb_colr.num_collo_rif", mtbColt.getNumCollo());
params.put("mtb_colr.data_collo_rif", mtbColt.getDataColloD());
String whereCond = UtilityQuery.concatFieldsInWhereCond(params);
String query = "select distinct mtb_colt.*\n" +
"from mtb_colt\n" +
" left join mtb_colr on mtb_colt.gestione = mtb_colr.gestione and mtb_colt.data_collo = mtb_colr.data_collo and\n" +
" mtb_colt.ser_collo = mtb_colr.ser_collo and mtb_colt.num_collo = mtb_colr.num_collo\n" +
"where mtb_colt.gestione = 'V'" +
" AND " + whereCond;
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {
}.getType();
this.mSystemRESTConsumer.<ArrayList<MtbColt>>processSql(query, typeOfObjectsList, data -> {
onComplete.run(data.get(0));
}, onFailed);
}
} }

View File

@@ -46,4 +46,7 @@ public interface ColliMagazzinoRESTConsumerService {
@POST("wms/versamentoAutomaticoUL") @POST("wms/versamentoAutomaticoUL")
Call<ServiceRESTResponse<VersamentoAutomaticoULResponseDTO>> versamentoAutomaticoUL(@Body MtbColt mtbColt); Call<ServiceRESTResponse<VersamentoAutomaticoULResponseDTO>> versamentoAutomaticoUL(@Body MtbColt mtbColt);
@POST("wms/confirmGiacenzaUL")
Call<ServiceRESTResponse<Object>> confirmGiacenzaUL(@Body MtbColt mtbColt);
} }

View File

@@ -0,0 +1,51 @@
package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbDoct;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.LoadColliDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton
public class DocumentiRESTConsumer extends _BaseRESTConsumer {
public void createDocsFromColli(List<LoadColliDTO> listColli, RunnableArgs<List<DtbDoct>> onComplete, RunnableArgs<Exception> onFailed) {
DocumentiRESTConsumerService documentiRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
documentiRESTConsumerService.createDocsFromColli(listColli).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<DtbDoct>>> call, Response<ServiceRESTResponse<List<DtbDoct>>> response) {
analyzeAnswer(response, "createDocsFromColli", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<DtbDoct>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void createDocFromColli(LoadColliDTO loadColliDTO, RunnableArgs<DtbDoct> onComplete, RunnableArgs<Exception> onFailed) {
DocumentiRESTConsumerService documentiRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class);
documentiRESTConsumerService.createDocFromColli(loadColliDTO).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<DtbDoct>> call, Response<ServiceRESTResponse<DtbDoct>> response) {
analyzeAnswer(response, "createDocFromColli", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<DtbDoct>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@@ -0,0 +1,20 @@
package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.model.DtbDoct;
import it.integry.integrywmsnative.core.rest.model.LoadColliDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface DocumentiRESTConsumerService {
@POST("getDatiColliForDocs")
Call<ServiceRESTResponse<List<DtbDoct>>> createDocsFromColli(@Body List<LoadColliDTO> listColli);
@POST("createDocFromColli")
Call<ServiceRESTResponse<DtbDoct>> createDocFromColli(@Body LoadColliDTO listColli);
}

View File

@@ -61,7 +61,7 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<GestSetupDTO>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<GestSetupDTO>> call, Throwable t) {
Log.e("PrintCollo", t.toString()); Log.e("PrintCollo", t.toString());
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
if (onFailed != null) onFailed.run(new Exception(t)); if (onFailed != null) onFailed.run(new Exception(t));
} }
}); });
@@ -88,7 +88,7 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<List<StbGestSetup>>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<StbGestSetup>>> call, Throwable t) {
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
if (onFailed != null) onFailed.run(new Exception(t)); if (onFailed != null) onFailed.run(new Exception(t));
} }
}); });

View File

@@ -109,7 +109,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<List<PickingObjectDTO>>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<PickingObjectDTO>>> call, Throwable t) {
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });
@@ -174,7 +174,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) {
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });

View File

@@ -79,7 +79,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<GrigliaDTO>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<GrigliaDTO>> call, Throwable t) {
Log.e("getArticoliListino_pv", t.toString()); Log.e("getArticoliListino_pv", t.toString());
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });
@@ -130,7 +130,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Throwable t) { public void onFailure(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Throwable t) {
Log.e("saveOrdineTerminale_pv", t.toString()); Log.e("saveOrdineTerminale_pv", t.toString());
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });

View File

@@ -9,6 +9,7 @@ import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
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.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
@@ -51,7 +52,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) {
Log.e("GetAvailablePrinters", t.toString()); Log.e("GetAvailablePrinters", t.toString());
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });
@@ -59,10 +60,10 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
public void printCollo(MtbColt testataColloToPrint, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void printCollo(MtbColt testataColloToPrint, Runnable onComplete, RunnableArgs<Exception> onFailed) {
// if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
// onComplete.run(); onComplete.run();
// return; return;
// } }
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
Call<ServiceRESTResponse<Object>> callable = null; Call<ServiceRESTResponse<Object>> callable = null;
@@ -87,10 +88,10 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
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;
// } }
JasperDTO jasperDTO = new JasperDTO(); JasperDTO jasperDTO = new JasperDTO();
jasperDTO.setReportName(reportName); jasperDTO.setReportName(reportName);

View File

@@ -115,7 +115,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, final Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<String>>> call, final Throwable t) {
Log.e("ProfilesAvailable", t.toString()); Log.e("ProfilesAvailable", t.toString());
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
} }
}); });

View File

@@ -0,0 +1,182 @@
package it.integry.integrywmsnative.core.rest.model;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColt;
public class LoadColliDTO {
private String gestione;
private String codDtip;
private String codAnag;
private String codVdes;
private Date dataDoc;
private String serDoc;
private Integer numDoc;
private String codMdep;
private String calcPrz;
private boolean datiOrd;
private Date dataOrd;
private Integer numOrd;
private String flagEvasoForzato;
private Date dataVers;
private String note;
private boolean saveDoc = true;
private List<MtbColt> colli = new ArrayList<>();
public String getGestione() {
return gestione;
}
public LoadColliDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public String getCodDtip() {
return codDtip;
}
public LoadColliDTO setCodDtip(String codDtip) {
this.codDtip = codDtip;
return this;
}
public String getCodAnag() {
return codAnag;
}
public LoadColliDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodVdes() {
return codVdes;
}
public LoadColliDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public LoadColliDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public String getSerDoc() {
return serDoc;
}
public LoadColliDTO setSerDoc(String serDoc) {
this.serDoc = serDoc;
return this;
}
public Integer getNumDoc() {
return numDoc;
}
public LoadColliDTO setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
return this;
}
public String getCodMdep() {
return codMdep;
}
public LoadColliDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getCalcPrz() {
return calcPrz;
}
public LoadColliDTO setCalcPrz(String calcPrz) {
this.calcPrz = calcPrz;
return this;
}
public boolean isDatiOrd() {
return datiOrd;
}
public LoadColliDTO setDatiOrd(boolean datiOrd) {
this.datiOrd = datiOrd;
return this;
}
public Date getDataOrd() {
return dataOrd;
}
public LoadColliDTO setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public Integer getNumOrd() {
return numOrd;
}
public LoadColliDTO setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
public String getFlagEvasoForzato() {
return flagEvasoForzato;
}
public LoadColliDTO setFlagEvasoForzato(String flagEvasoForzato) {
this.flagEvasoForzato = flagEvasoForzato;
return this;
}
public Date getDataVers() {
return dataVers;
}
public LoadColliDTO setDataVers(Date dataVers) {
this.dataVers = dataVers;
return this;
}
public String getNote() {
return note;
}
public LoadColliDTO setNote(String note) {
this.note = note;
return this;
}
public boolean isSaveDoc() {
return saveDoc;
}
public LoadColliDTO setSaveDoc(boolean saveDoc) {
this.saveDoc = saveDoc;
return this;
}
public List<MtbColt> getColli() {
return colli;
}
public LoadColliDTO setColli(List<MtbColt> colli) {
this.colli = colli;
return this;
}
}

View File

@@ -45,6 +45,8 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
private String nomeAgente; private String nomeAgente;
private String codJfas; private String codJfas;
private List<AvailableClassMerc> availableClassMerc; private List<AvailableClassMerc> availableClassMerc;
private boolean ordTrasf;
public Integer getIdViaggio() { public Integer getIdViaggio() {
return idViaggio; return idViaggio;
@@ -56,7 +58,6 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
} }
public String getListino() { public String getListino() {
return listino; return listino;
} }
@@ -371,6 +372,14 @@ public class OrdineUscitaInevasoDTO extends OrdineInevasoDTO {
return this; return this;
} }
public boolean isOrdTrasf() {
return ordTrasf;
}
public OrdineUscitaInevasoDTO setOrdTrasf(boolean ordTrasf) {
this.ordTrasf = ordTrasf;
return this;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {

View File

@@ -27,6 +27,7 @@ public class SitArtOrdDTO {
private String codMsfa; private String codMsfa;
private String descrizioneMsfa; private String descrizioneMsfa;
private String untord; private String untord;
private BigDecimal qtaOmg;
private final HashMap<String, Object> extraInfo = new HashMap<>(); private final HashMap<String, Object> extraInfo = new HashMap<>();
@@ -222,4 +223,13 @@ public class SitArtOrdDTO {
this.untord = untord; this.untord = untord;
return this; return this;
} }
public BigDecimal getQtaOmg() {
return qtaOmg;
}
public SitArtOrdDTO setQtaOmg(BigDecimal qtaOmg) {
this.qtaOmg = qtaOmg;
return this;
}
} }

View File

@@ -50,6 +50,8 @@ public class DBSettingsModel {
private boolean flagPickLiberoAllowEmptyDest = false; private boolean flagPickLiberoAllowEmptyDest = false;
private boolean flagAskInfoAggiuntiveSpedizione = false; private boolean flagAskInfoAggiuntiveSpedizione = false;
private String filterFornitoreProd; private String filterFornitoreProd;
private String codDtipOrdTrasfV;
private boolean notifyLotStatus = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
@@ -384,4 +386,22 @@ public class DBSettingsModel {
this.filterFornitoreProd = filterFornitoreProd; this.filterFornitoreProd = filterFornitoreProd;
return this; return this;
} }
public String getCodDtipOrdTrasfV() {
return codDtipOrdTrasfV;
}
public DBSettingsModel setCodDtipOrdTrasfV(String codDtipOrdTrasfV) {
this.codDtipOrdTrasfV = codDtipOrdTrasfV;
return this;
}
public boolean isNotifyLotStatus() {
return notifyLotStatus;
}
public DBSettingsModel setNotifyLotStatus(boolean notifyLotStatus) {
this.notifyLotStatus = notifyLotStatus;
return this;
}
} }

View File

@@ -314,6 +314,10 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")
.setKeySection("FLAG_PRINT_PACKING_LIST_ON_CLOSE")); .setKeySection("FLAG_PRINT_PACKING_LIST_ON_CLOSE"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_PRINT_ETICHETTE_ON_CLOSE"));
stbGestSetupList.add(new StbGestSetup() stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")
@@ -322,6 +326,14 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SPEDIZIONE") .setSection("SPEDIZIONE")
.setKeySection("FLAG_ASK_INFO_AGGIUNTIVE")); .setKeySection("FLAG_ASK_INFO_AGGIUNTIVE"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("COD_DTIP_ORD_TRASF"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_NOTIFICA_STATO_PARTITA"));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
GestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> { GestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> {
@@ -353,6 +365,8 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class)); dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class));
dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class)); dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class));
dbSettingsModelIstance.setFilterFornitoreProd(getValueFromList(list, "PRODUZIONE", "FILTER_FORNTIORE_PROD", String.class)); dbSettingsModelIstance.setFilterFornitoreProd(getValueFromList(list, "PRODUZIONE", "FILTER_FORNTIORE_PROD", String.class));
dbSettingsModelIstance.setCodDtipOrdTrasfV(getValueFromList(list, "SPEDIZIONE", "COD_DTIP_ORD_TRASF", String.class));
dbSettingsModelIstance.setNotifyLotStatus(getValueFromList(list, "SPEDIZIONE", "FLAG_NOTIFICA_STATO_PARTITA", Boolean.class));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null) if (notePerdita != null)

View File

@@ -61,8 +61,8 @@ public class UpdatesManager {
String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"; String destination = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/";
var progressDialog = DialogProgressView.newInstance("Download", null, false); var progressDialogBuilder = new DialogProgressView("Download", null, false);
progressDialog.show(mContext.getSupportFragmentManager(), "tag"); progressDialogBuilder.show(mContext.getSupportFragmentManager(), "tag");
var fileDownloader = new FileDownloader() var fileDownloader = new FileDownloader()
@@ -70,13 +70,13 @@ public class UpdatesManager {
.setUrlString(downloadURL) .setUrlString(downloadURL)
.setOnProgressUpdate(progress -> { .setOnProgressUpdate(progress -> {
mContext.runOnUiThread(() -> { mContext.runOnUiThread(() -> {
progressDialog.setProgress(progress); progressDialogBuilder.setProgress(progress);
}); });
}) })
.setOnDownloadCompleted(destPath -> { .setOnDownloadCompleted(destPath -> {
mContext.runOnUiThread(() -> { mContext.runOnUiThread(() -> {
progressDialog.dismiss(); progressDialogBuilder.dismiss();
Uri fileLoc; Uri fileLoc;
Intent intent; Intent intent;

View File

@@ -130,7 +130,7 @@ public class UtilityBarcode {
private static String getEAN13CheckDigit(String ean) { private static String getEAN13CheckDigit(String ean) {
if (ean.length() != 12) { if (ean.length() != 12) {
UtilityLogger.errorMe(new Exception("Please provide an input string of 12 chars. Current lenght: " + ean.length())); UtilityLogger.error(new Exception("Please provide an input string of 12 chars. Current lenght: " + ean.length()));
return null; return null;
} }
long tot = 0; long tot = 0;

View File

@@ -37,7 +37,7 @@ public class UtilityDate {
try{ try{
return UtilityDate.recognizeDate(dateString); return UtilityDate.recognizeDate(dateString);
} catch (ParseException | DateNotRecognizedException | TimeNotRecognizedException pex){ } catch (ParseException | DateNotRecognizedException | TimeNotRecognizedException pex){
UtilityLogger.errorMe(pex); UtilityLogger.error(pex);
return null; return null;
} }
} }
@@ -99,7 +99,21 @@ public class UtilityDate {
public static Date getDateInstance() { public static Date getDateInstance() {
return getCalendarInstance().getTime(); return getDateInstance(false);
}
public static Date getDateInstance(boolean removeTime) {
var calendar = getCalendarInstance();
if(removeTime) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
}
return calendar.getTime();
} }
public static Calendar getCalendarInstance() { public static Calendar getCalendarInstance() {

View File

@@ -15,7 +15,6 @@ import it.integry.integrywmsnative.core.exception.InvalidConnectionException;
import it.integry.integrywmsnative.core.exception.InvalidLUException; import it.integry.integrywmsnative.core.exception.InvalidLUException;
import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException; import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException;
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 {
@@ -25,12 +24,6 @@ public class UtilityExceptions {
InvalidLUGestioneException.class, InvalidLUGestioneException.class,
InvalidLUException.class InvalidLUException.class
}; };
public static void defaultException(Context context, Exception ex, DialogProgressView progressDialog) {
defaultException(context, ex);
if (progressDialog != null && progressDialog.isVisible()) progressDialog.dismiss();
}
public static void defaultException(Context context, Exception ex) { public static void defaultException(Context context, Exception ex) {
defaultException(context, ex, false); defaultException(context, ex, false);
} }
@@ -68,7 +61,7 @@ public class UtilityExceptions {
Stream.of(FIREBASE_IGNORED_EXCEPTIONS).anyMatch(x -> x.isAssignableFrom(ex.getClass())); Stream.of(FIREBASE_IGNORED_EXCEPTIONS).anyMatch(x -> x.isAssignableFrom(ex.getClass()));
if (!BuildConfig.DEBUG && !toIgnore) { if (!BuildConfig.DEBUG && !toIgnore) {
if (sendEmail) UtilityLogger.errorMe(ex); if (sendEmail) UtilityLogger.error(ex);
FirebaseCrashlytics.getInstance().recordException(ex); FirebaseCrashlytics.getInstance().recordException(ex);
} }
} }

View File

@@ -3,48 +3,30 @@ package it.integry.integrywmsnative.core.utility;
import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UtilityLogger { public class UtilityLogger {
public static void logMe(String message) { public static void trace(String message) {
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); Logger.d(message, getPreviousStackTraceElement());
}
String caller = "UtilityLogger"; public static void info(String message) {
Logger.i(message);
for (int i = 0; i < stackTraceElements.length; i++) { }
if (stackTraceElements[i].getMethodName().equalsIgnoreCase("logMe")) {
caller = stackTraceElements[i + 1].getFileName() + "->" + stackTraceElements[i + 1].getMethodName();
}
}
public static void debug(String message) {
Logger.d(message); Logger.d(message);
} }
public static void errorMe(Exception ex) { public static void error(Exception ex) {
errorMe(ex, null, null, null); error(ex, "");
} }
public static void errorMe(Exception ex, String additionalText) { public static void error(Exception ex, String additionalText) {
errorMe(ex, additionalText, null, null); if (!BuildConfig.DEBUG) FirebaseCrashlytics.getInstance().recordException(ex);
}
public static void errorMe(Exception ex, String additionalText, Runnable onComplete, RunnableArgs<Exception> onFailed) { Logger.e(ex, additionalText);
if(!BuildConfig.DEBUG) FirebaseCrashlytics.getInstance().recordException(ex);
logMe(ex.getMessage());
// if ((!(ex instanceof SocketTimeoutException) && !(ex.getCause() instanceof SocketTimeoutException)) || // if ((!(ex instanceof SocketTimeoutException) && !(ex.getCause() instanceof SocketTimeoutException)) ||
// (!(ex instanceof SocketException) && !(ex.getCause() instanceof SocketException)) || // (!(ex instanceof SocketException) && !(ex.getCause() instanceof SocketException)) ||
@@ -82,4 +64,52 @@ public class UtilityLogger {
// } // }
} }
private static String getPreviousStackTraceElement() {
StackTraceElement[] stackTraceElementsArr = Thread.currentThread().getStackTrace();
String caller = "UtilityLogger";
StringBuilder callerNew = new StringBuilder();
int found = 0;
for (int i = 0; i < stackTraceElementsArr.length; i++) {
if(!stackTraceElementsArr[i].getClassName().startsWith("it.integry"))
continue;
if (stackTraceElementsArr[i].getMethodName().equalsIgnoreCase("getPreviousStackTraceElement")) {
found = i;
}
if (found > 0 && i >= found + 2) {
callerNew
.append(stackTraceElementsArr[i].getClassName())
.append("->")
.append(stackTraceElementsArr[i].getMethodName())
.append(":")
.append(stackTraceElementsArr[i].getLineNumber())
.append("\n");
}
}
return callerNew.length() > 0 ? callerNew.toString() : caller;
}
// public static void logMe(String message) {
// StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
//
// String caller = "UtilityLogger";
//
// for (int i = 0; i < stackTraceElements.length; i++) {
//
// if (stackTraceElements[i].getMethodName().equalsIgnoreCase("logMe")) {
// caller = stackTraceElements[i + 1].getFileName() + "->" + stackTraceElements[i + 1].getMethodName();
// }
//
// }
//
// Logger.d(message);
// }
} }

View File

@@ -35,6 +35,7 @@ public class UtilityNumber {
decimalFormat.setMaximumFractionDigits(decimal); decimalFormat.setMaximumFractionDigits(decimal);
decimalFormat.setDecimalFormatSymbols(otherSymbols); decimalFormat.setDecimalFormatSymbols(otherSymbols);
decimalFormat.setGroupingUsed(false); decimalFormat.setGroupingUsed(false);
decimalFormat.setMinimumFractionDigits(2);
return decimalFormat.format(floatValue); return decimalFormat.format(floatValue);
} }

View File

@@ -7,7 +7,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class UtilityProgress { public class UtilityProgress {
public static DialogProgressView createDefaultProgressDialog(FragmentActivity mContext) { public static DialogProgressView createDefaultProgressDialog(FragmentActivity mContext) {
var progress = DialogProgressView.newInstance(); var progress = DialogProgressView.newInstance(null, null, true);
progress.show(mContext.getSupportFragmentManager(), "tag"); progress.show(mContext.getSupportFragmentManager(), "tag");
return progress; return progress;
} }

View File

@@ -55,7 +55,7 @@ public class OrdiniAccettazioneRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) {
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });

View File

@@ -798,7 +798,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
if (ex instanceof InvalidPesoKGException) { if (ex instanceof InvalidPesoKGException) {
UtilityToast.showToast(ex.getMessage()); UtilityToast.showToast(ex.getMessage());
} else { } else {
UtilityExceptions.defaultException(this, ex, mCurrentProgress); UtilityExceptions.defaultException(this, ex);
} }
BarcodeManager.enable(); BarcodeManager.enable();

View File

@@ -319,17 +319,12 @@ public class AccettazionePickingViewModel {
} }
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
if (barcodeProd.length() == 14) {
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
String finalBarcodeProd = barcodeProd;
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) { if (mtbAartList != null && mtbAartList.size() > 0) {
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
} else { } else {
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd)); this.sendError(new NoResultFromBarcodeException(barcodeProd));
} }
}, this::sendError); }, this::sendError);

View File

@@ -43,7 +43,7 @@ public class AccettazionePickingRESTConsumer {
whereCondListMap.add(whereCondMap); whereCondListMap.add(whereCondMap);
} catch (Exception ex) { } catch (Exception ex) {
UtilityLogger.errorMe(ex); UtilityLogger.error(ex);
} }
}); });

View File

@@ -49,6 +49,7 @@ import it.integry.integrywmsnative.core.utility.UtilityContext;
import it.integry.integrywmsnative.databinding.ActivityMainBinding; import it.integry.integrywmsnative.databinding.ActivityMainBinding;
import it.integry.integrywmsnative.gest.login.LoginActivity; import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment; import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class MainActivity extends BaseActivity public class MainActivity extends BaseActivity
implements NavigationView.OnNavigationItemSelectedListener, IPoppableActivity { implements NavigationView.OnNavigationItemSelectedListener, IPoppableActivity {
@@ -70,12 +71,16 @@ public class MainActivity extends BaseActivity
@Inject @Inject
UpdatesManager updatesManager; UpdatesManager updatesManager;
@Inject
DialogProgressView mDialogProgressView;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
MainApplication.appComponent MainApplication.appComponent
.mainActivityComponent() .mainActivityComponent()
.create() .create()
.inject(this); .inject(this);

View File

@@ -241,18 +241,18 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
private void initGestMenu() { private void initGestMenu() {
int menuSpanCount = 2; int menuSpanCount = 2;
if(UtilityDimension.getDisplayInchs(this.getActivity()) > 8) menuSpanCount = 4; if (UtilityDimension.getDisplayInchs(this.getActivity()) > 8) menuSpanCount = 4;
else if(UtilityDimension.getDisplayInchs(this.getActivity()) > 6.5) menuSpanCount = 3; else if (UtilityDimension.getDisplayInchs(this.getActivity()) > 6.5) menuSpanCount = 3;
MenuConfiguration baseMenuConfiguration = new MenuConfiguration(); MenuConfiguration baseMenuConfiguration = new MenuConfiguration();
List<MenuConfiguration.MenuGroup> menuGroups = baseMenuConfiguration.getGroups(); List<MenuConfiguration.MenuGroup> menuGroups = baseMenuConfiguration.getGroups();
for(int i = 0; i < menuGroups.size(); i++) { for (int i = 0; i < menuGroups.size(); i++) {
try { try {
BaseMenuConfiguration.MenuGroup menuGroup = menuGroups.get(i); BaseMenuConfiguration.MenuGroup menuGroup = menuGroups.get(i);
if(menuService.isGroupEnabled(menuGroup)) { if (menuService.isGroupEnabled(menuGroup)) {
FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false); FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false);
@@ -261,8 +261,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
List<BaseMenuConfiguration.MenuItem> enableMenuItems = new ArrayList<>(); List<BaseMenuConfiguration.MenuItem> enableMenuItems = new ArrayList<>();
for(int j = 0; j < menuGroup.getItems().size(); j++) { for (int j = 0; j < menuGroup.getItems().size(); j++) {
if(menuService.isItemEnabled(menuGroup.getItems().get(j))) { if (menuService.isItemEnabled(menuGroup.getItems().get(j))) {
enableMenuItems.add(menuGroup.getItems().get(j)); enableMenuItems.add(menuGroup.getItems().get(j));
} }
} }

View File

@@ -171,10 +171,10 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
private void initRecyclerView() { private void initRecyclerView() {
mBindings.pickingLiberoMainList.setNestedScrollingEnabled(false); mBindings.pickingLiberoMainList.setNestedScrollingEnabled(false);
mBindings.pickingLiberoMainList.setHasFixedSize(true); mBindings.pickingLiberoMainList.setHasFixedSize(true);
mBindings.pickingLiberoMainList.setLayoutManager(new LinearLayoutManager(getActivity())); mBindings.pickingLiberoMainList.setLayoutManager(new LinearLayoutManager(requireActivity()));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL); SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireActivity(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider)); itemDecorator.setDrawable(ContextCompat.getDrawable(requireActivity(), R.drawable.divider));
mBindings.pickingLiberoMainList.addItemDecoration(itemDecorator); mBindings.pickingLiberoMainList.addItemDecoration(itemDecorator);
} }
@@ -277,7 +277,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
if (ex instanceof InvalidPesoKGException) { if (ex instanceof InvalidPesoKGException) {
UtilityToast.showToast(ex.getMessage()); UtilityToast.showToast(ex.getMessage());
} else { } else {
UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); UtilityExceptions.defaultException(getActivity(), ex);
} }
BarcodeManager.enable(); BarcodeManager.enable();

View File

@@ -200,12 +200,6 @@ public class PickingLiberoViewModel {
} }
private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Runnable onComplete) { private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Runnable onComplete) {
if (barcodeProd.length() == 14) {
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
String finalBarcodeProd = barcodeProd;
mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) { if (mtbAartList != null && mtbAartList.size() > 0) {
MtbAart articolo = mtbAartList.get(0); MtbAart articolo = mtbAartList.get(0);
@@ -217,11 +211,11 @@ public class PickingLiberoViewModel {
this.dispatchArt(articolo, ean128Model); this.dispatchArt(articolo, ean128Model);
onComplete.run(); onComplete.run();
} else { } else {
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd)); this.sendError(new NoResultFromBarcodeException(barcodeProd));
} }
} else { } else {
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd)); this.sendError(new NoResultFromBarcodeException(barcodeProd));
} }
}, this::sendError); }, this::sendError);

View File

@@ -287,7 +287,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
if (ex instanceof InvalidPesoKGException) { if (ex instanceof InvalidPesoKGException) {
UtilityToast.showToast(ex.getMessage()); UtilityToast.showToast(ex.getMessage());
} else { } else {
UtilityExceptions.defaultException(this, ex, mCurrentProgress); UtilityExceptions.defaultException(this, ex);
} }
BarcodeManager.enable(); BarcodeManager.enable();

View File

@@ -17,8 +17,8 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.exception.InvalidLUException; import it.integry.integrywmsnative.core.exception.InvalidLUException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener;
@@ -333,7 +333,7 @@ public class PickingResiViewModel {
searchArtFromUL(mtbColt, onComplete); searchArtFromUL(mtbColt, onComplete);
} else this.sendError(new InvalidLUException()); } else this.sendError(new InvalidLUException());
} else { } else {
this.sendError(new NoArtsFoundException()); this.sendError(new NoResultFromBarcodeException(SSCC));
} }
}, this::sendError); }, this::sendError);
@@ -417,7 +417,7 @@ public class PickingResiViewModel {
private void loadMatchedRows(List<WithdrawableDtbDocr> matchedRows) { private void loadMatchedRows(List<WithdrawableDtbDocr> matchedRows) {
if (matchedRows == null || matchedRows.size() == 0) { if (matchedRows == null || matchedRows.size() == 0) {
this.sendError(new NoArtsFoundException()); this.sendError(new NoResultFromBarcodeException());
} else if (matchedRows.size() == 1) { } else if (matchedRows.size() == 1) {
WithdrawableDtbDocr matchedItem = matchedRows.get(0); WithdrawableDtbDocr matchedItem = matchedRows.get(0);

View File

@@ -18,6 +18,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@@ -291,9 +292,10 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
} else { } else {
tmpList = mViewModel.getOrderList().getValue(); tmpList = mViewModel.getOrderList().getValue();
} }
this.mOrdiniInevasiMutableData.clear(); this.mOrdiniInevasiMutableData.clear();
this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(tmpList)); if (tmpList != null) {
this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(tmpList));
}
} }
private List<MainListProdOrdineProduzioneElencoListModel> convertDataModelToListModel(List<OrdineAccettazioneInevasoDTO> dataList) { private List<MainListProdOrdineProduzioneElencoListModel> convertDataModelToListModel(List<OrdineAccettazioneInevasoDTO> dataList) {
@@ -384,6 +386,11 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
private void initJtbComtCache(Runnable onComplete) { private void initJtbComtCache(Runnable onComplete) {
if (this.mViewModel.getOrderList().getValue() == null) {
this.jtbComtCache = new ArrayList<>();
onComplete.run();
return;
}
var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrderList().getValue())) var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrderList().getValue()))
.flatMap(x -> Stream.of(x.getCodJcom())) .flatMap(x -> Stream.of(x.getCodJcom()))
.toList(); .toList();

View File

@@ -55,7 +55,7 @@ public class ProdOrdineProduzioneRESTConsumer extends _BaseRESTConsumer {
@Override @Override
public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<SitArtOrdDTO>>> call, Throwable t) {
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.error(new Exception(t));
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });

View File

@@ -231,6 +231,7 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett
public void requestResources() { public void requestResources() {
this.onLoadingEnded(); this.onLoadingEnded();
BarcodeManager.disable(); BarcodeManager.disable();
this.runOnUiThread(() -> { this.runOnUiThread(() -> {
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il numero di risorse da allocare", this.hrNum.get(), "n. risorse", qta -> { DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il numero di risorse da allocare", this.hrNum.get(), "n. risorse", qta -> {
@@ -276,7 +277,7 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett
getSupportFragmentManager() getSupportFragmentManager()
.beginTransaction() .beginTransaction()
.add(R.id.frame_layout_container, .add(R.id.frame_layout_container,
ProdRecuperoMaterialeFragment.newInstance(mViewModel.lineaProd.getValue().getCodJfas(), DATA_KEY_FRAGMENT_LISTENER)) ProdRecuperoMaterialeFragment.newInstance(null, DATA_KEY_FRAGMENT_LISTENER))
.addToBackStack("ProdRecuperoMaterialeFragment") .addToBackStack("ProdRecuperoMaterialeFragment")
.commit(); .commit();

View File

@@ -10,7 +10,6 @@ import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List; import java.util.List;
@@ -43,11 +42,6 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled
private FragmentLineeProdBinding mBinding; private FragmentLineeProdBinding mBinding;
private ElevatedToolbar mToolbar; private ElevatedToolbar mToolbar;
private int barcodeScannerIstanceID = -1; private int barcodeScannerIstanceID = -1;
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
this.onLoadingStarted();
this.mViewModel.processBarcodeDTO(data);
};
public static ProdLineeProduzioneFragment newInstance() { public static ProdLineeProduzioneFragment newInstance() {
return new ProdLineeProduzioneFragment(); return new ProdLineeProduzioneFragment();
@@ -83,6 +77,11 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled
.setOnScanFailed(this::onError)); .setOnScanFailed(this::onError));
} }
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
this.onLoadingStarted();
this.mViewModel.processBarcodeDTO(data);
};
@Override @Override
public void setScrollToolbar(ElevatedToolbar toolbar) { public void setScrollToolbar(ElevatedToolbar toolbar) {
mToolbar = toolbar; mToolbar = toolbar;
@@ -98,11 +97,14 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled
private void initRecyclerView() { private void initRecyclerView() {
this.mViewModel.getProdLinesList().observe(getViewLifecycleOwner(), this::refreshLineeProd); this.mViewModel.getProdLinesList().observe(getViewLifecycleOwner(), this::refreshLineeProd);
LinesListAdapter prodLinesListAdapter = new LinesListAdapter(this.requireActivity(), this.mLinesObservableList);
prodLinesListAdapter.setEmptyView(this.mBinding.linesListEmptyView); LinesListAdapter prodLinesListAdapter = new LinesListAdapter(this.mLinesObservableList);
this.mBinding.linesMainList.setAdapter(prodLinesListAdapter); this.mBinding.linesMainList.setAdapter(prodLinesListAdapter);
this.mBinding.linesMainList.setLayoutManager(new LinearLayoutManager(this.requireActivity()));
prodLinesListAdapter.setOnItemClicked(this.mViewModel::onLineSelected); prodLinesListAdapter
.setOnItemClicked(this::selectLine)
.setEmptyView(this.mBinding.linesListEmptyView);
if (mToolbar != null) if (mToolbar != null)
mToolbar.setRecyclerView(this.mBinding.linesMainList); mToolbar.setRecyclerView(this.mBinding.linesMainList);
} }
@@ -136,6 +138,7 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled
public void selectLine(ProdLineStatusDTO dto) { public void selectLine(ProdLineStatusDTO dto) {
this.onLoadingEnded(); this.onLoadingEnded();
BarcodeManager.disable(); BarcodeManager.disable();
if (!dto.isStarted()) { if (!dto.isStarted()) {
this.requestResources(dto); this.requestResources(dto);
} else { } else {

View File

@@ -1,6 +1,5 @@
package it.integry.integrywmsnative.gest.prod_linee_produzione.ui; package it.integry.integrywmsnative.gest.prod_linee_produzione.ui;
import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -16,13 +15,11 @@ import it.integry.integrywmsnative.databinding.FragmentLineeProdMainListModelBin
import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO; import it.integry.integrywmsnative.gest.prod_linee_produzione.dto.ProdLineStatusDTO;
public class LinesListAdapter extends ExtendedRecyclerView<ProdLineStatusDTO, LinesListAdapter.SingleItemViewHolder> { public class LinesListAdapter extends ExtendedRecyclerView<ProdLineStatusDTO, LinesListAdapter.SingleItemViewHolder> {
private Context mContext;
private RunnableArgs<ProdLineStatusDTO> mOnItemClicked; private RunnableArgs<ProdLineStatusDTO> mOnItemClicked;
public LinesListAdapter(Context context, ObservableArrayList<ProdLineStatusDTO> myDataset) { public LinesListAdapter(ObservableArrayList<ProdLineStatusDTO> myDataset) {
super(myDataset); super(myDataset);
this.mContext = context;
} }
@NonNull @NonNull
@@ -38,6 +35,7 @@ public class LinesListAdapter extends ExtendedRecyclerView<ProdLineStatusDTO, Li
holder.binding.setListModel(line); holder.binding.setListModel(line);
holder.binding.executePendingBindings(); holder.binding.executePendingBindings();
holder.binding.getRoot().setOnClickListener(v -> { holder.binding.getRoot().setOnClickListener(v -> {
if (this.mOnItemClicked != null) if (this.mOnItemClicked != null)
this.mOnItemClicked.run(line); this.mOnItemClicked.run(line);
@@ -45,8 +43,9 @@ public class LinesListAdapter extends ExtendedRecyclerView<ProdLineStatusDTO, Li
} }
public void setOnItemClicked(RunnableArgs<ProdLineStatusDTO> onItemClicked) { public LinesListAdapter setOnItemClicked(RunnableArgs<ProdLineStatusDTO> onItemClicked) {
this.mOnItemClicked = onItemClicked; this.mOnItemClicked = onItemClicked;
return this;
} }
static class SingleItemViewHolder extends RecyclerView.ViewHolder { static class SingleItemViewHolder extends RecyclerView.ViewHolder {

View File

@@ -9,10 +9,8 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
@@ -88,7 +86,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_recupero_materiale, container, false); mBinding = FragmentProdRecuperoMaterialeBinding.inflate(inflater, container, false);
MainApplication.appComponent MainApplication.appComponent
.prodRecuperoMaterialeComponent() .prodRecuperoMaterialeComponent()
@@ -168,8 +166,6 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
private void initRecyclerView() { private void initRecyclerView() {
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList); this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList);
mBinding.prodRecuperoMaterialeMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
HistoryULsListAdapter adapter = new HistoryULsListAdapter(getActivity(), mHistoryULMutableData) HistoryULsListAdapter adapter = new HistoryULsListAdapter(getActivity(), mHistoryULMutableData)
.setOnItemClicked(data -> this.mViewModel.dispatchItem(data.getOriginalModel(), null)); .setOnItemClicked(data -> this.mViewModel.dispatchItem(data.getOriginalModel(), null));

View File

@@ -247,6 +247,7 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer {
.setCodCol(restDTO.getCodCol()) .setCodCol(restDTO.getCodCol())
.setCodTagl(restDTO.getCodTagl()) .setCodTagl(restDTO.getCodTagl())
.setCodJfas(restDTO.getCodJfas()) .setCodJfas(restDTO.getCodJfas())
.setDescrizioneArt(restDTO.getDescrizioneArt())
.setDescrizioneFase(restDTO.getDescrizioneFase()) .setDescrizioneFase(restDTO.getDescrizioneFase())
.setQtaCol(qtaColTot) .setQtaCol(qtaColTot)
.setNumCnf(numCnfColTot) .setNumCnf(numCnfColTot)

View File

@@ -15,6 +15,7 @@ import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.ProdRecuperoMaterialeListHeaderBinding; import it.integry.integrywmsnative.databinding.ProdRecuperoMaterialeListHeaderBinding;
import it.integry.integrywmsnative.databinding.ProdRecuperoMaterialeListItemBinding; import it.integry.integrywmsnative.databinding.ProdRecuperoMaterialeListItemBinding;
@@ -99,7 +100,7 @@ public class HistoryULsListAdapter extends ExtendedSectionedRecyclerView<History
holder.binding.numCollo.setText(String.valueOf(ul.getNumCollo())); holder.binding.numCollo.setText(String.valueOf(ul.getNumCollo()));
holder.binding.partitaMag.setText("(" + ul.getPartitaMag() + ")"); holder.binding.partitaMag.setText("(" + ul.getPartitaMag() + ")");
holder.binding.qtaVersata.setText(String.valueOf(ul.getQtaVersata())); holder.binding.qtaVersata.setText(UtilityNumber.decimalToString(ul.getQtaVersata(), 2));
holder.binding.untMisQtaVersata.setText(String.valueOf(ul.getUntMisVersata())); holder.binding.untMisQtaVersata.setText(String.valueOf(ul.getUntMisVersata()));
holder.binding.getRoot().setOnClickListener(v -> { holder.binding.getRoot().setOnClickListener(v -> {

View File

@@ -63,6 +63,8 @@ public class ProdRientroMerceFragment extends BaseFragment implements
return new ProdRientroMerceFragment(); return new ProdRientroMerceFragment();
} }
@Override @Override
public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) { public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);

View File

@@ -18,6 +18,7 @@ import androidx.lifecycle.MutableLiveData;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.harrysoft.androidbluetoothserial.BluetoothManager; import com.harrysoft.androidbluetoothserial.BluetoothManager;
@@ -43,12 +44,14 @@ import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderDetailBinding; import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderDetailBinding;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment; import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdDTO; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdDTO;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdView; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdView;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCView;
/** /**
* A simple {@link Fragment} subclass. * A simple {@link Fragment} subclass.
@@ -76,6 +79,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
private BluetoothManager bluetoothManager; private BluetoothManager bluetoothManager;
private BluetoothSerialDevice mConnectedBluetoothDevice; private BluetoothSerialDevice mConnectedBluetoothDevice;
private String mLatestCodTcol;
public ObservableField<BigDecimal> sumLUNumber = new ObservableField<>(BigDecimal.ZERO); public ObservableField<BigDecimal> sumLUNumber = new ObservableField<>(BigDecimal.ZERO);
@@ -182,6 +186,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
@Override @Override
public void onDetach() { public void onDetach() {
mLatestCodTcol = null;
if (mConnectedBluetoothDevice != null) if (mConnectedBluetoothDevice != null)
bluetoothManager.close(); bluetoothManager.close();
@@ -207,13 +212,28 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
AtomicBigDecimal sumColli = new AtomicBigDecimal(BigDecimal.ZERO); AtomicBigDecimal sumColli = new AtomicBigDecimal(BigDecimal.ZERO);
AtomicBigDecimal sumNet = new AtomicBigDecimal(BigDecimal.ZERO); AtomicBigDecimal sumNet = new AtomicBigDecimal(BigDecimal.ZERO);
AtomicBigDecimal sumGross = new AtomicBigDecimal(BigDecimal.ZERO); AtomicBigDecimal sumGross = new AtomicBigDecimal(BigDecimal.ZERO);
AtomicBigDecimal sumQtaCol = new AtomicBigDecimal(BigDecimal.ZERO);
Stream.of(mtbColts) Stream.of(mtbColts)
.forEach(x -> Stream.of(x.getMtbColr()).forEach(y -> { .forEach(x -> Stream.of(x.getMtbColr()).forEach(y -> {
sumColli.getAndAdd(y.getNumCnf()); sumColli.getAndAdd(y.getNumCnf());
sumNet.getAndAdd(y.getPesoNettoKg()); sumNet.getAndAdd(y.getPesoNettoKg());
sumGross.getAndAdd(y.getPesoLordoKg()); sumGross.getAndAdd(y.getPesoLordoKg());
sumQtaCol.getAndAdd(y.getQtaCol());
})); }));
ComparatorCompat<MtbColt> c = ComparatorCompat
.chain(
new ComparatorCompat<MtbColt>((x, y) -> x.getDataVersD().compareTo(y.getDataVersD()))
)
.reversed();
MtbColt lastUl = Stream.of(mtbColts).sorted(c).findFirstOrElse(null);
if (lastUl != null && !UtilityString.isNullOrEmpty(lastUl.getCodTcol())) {
mLatestCodTcol = lastUl.getCodTcol();
}
currentOrder.getValue().setQtaTrasferite(sumQtaCol.get());
this.progress.set(currentOrder.getValue().getProgress());
sumColliNumber.set(sumColli.get()); sumColliNumber.set(sumColli.get());
sumGrossKG.set(sumGross.get()); sumGrossKG.set(sumGross.get());
progress.set(currentOrder.getValue().getProgress()); progress.set(currentOrder.getValue().getProgress());
@@ -229,7 +249,17 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
} }
@Override @Override
public void onDataSaved() { public void onDataSaved(MtbColt mtbColt) {
String codJcom = currentOrder.getValue().getCodJcom();
DialogPrintUlSSCCView.newInstance(codJcom, mtbColt, result -> {
if (result.isFlagPrintShipmentLabel() || result.isFlagPrintProductionLabel()) {
this.mViewModel.printSavedMtbColt(result);
} else {
this.mViewModel.refreshMtbColts();
}
})
.show(requireActivity().getSupportFragmentManager(), "DialogPrintUlSSCC");
} }
@@ -237,7 +267,12 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
public void addULButtonClick() { public void addULButtonClick() {
this.onLoadingStarted(); this.onLoadingStarted();
String codProd = this.currentOrder.getValue().getCodProd(); OrdineLavorazioneDTO currentOrder = this.currentOrder.getValue();
if (currentOrder == null) {
this.onError(new Exception("Nessun ordine rilevato!"));
return;
}
String codProd = currentOrder.getCodProd();
mArticoloRESTConsumer.getByCodMart(codProd, mtbAart -> { mArticoloRESTConsumer.getByCodMart(codProd, mtbAart -> {
String sql = "SELECT TOP 1 * " + String sql = "SELECT TOP 1 * " +
@@ -246,9 +281,9 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
" * " + " * " +
" FROM dtb_ord_steps " + " FROM dtb_ord_steps " +
" WHERE cod_jfas IS NOT NULL " + " WHERE cod_jfas IS NOT NULL " +
" AND gestione = " + UtilityDB.valueToString(this.currentOrder.getValue().getGestione()) + " AND gestione = " + UtilityDB.valueToString(currentOrder.getGestione()) +
" AND num_ord = " + UtilityDB.valueToString(this.currentOrder.getValue().getNumOrd()) + " AND num_ord = " + UtilityDB.valueToString(currentOrder.getNumOrd()) +
" AND data_ord = " + UtilityDB.valueToString(this.currentOrder.getValue().getDataOrdD()) + " AND data_ord = " + UtilityDB.valueToString(currentOrder.getDataOrdD()) +
" ) tmp " + " ) tmp " +
"WHERE data_iniz IS NOT NULL " + "WHERE data_iniz IS NOT NULL " +
" AND (data_fine IS NULL OR last_step = id_step) " + " AND (data_fine IS NULL OR last_step = id_step) " +
@@ -259,15 +294,24 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
this.onLoadingEnded(); this.onLoadingEnded();
String codTcol = currentOrder.getCodTcolUl();
if (UtilityString.isNullOrEmpty(codTcol)) {
if (!UtilityString.isNullOrEmpty(mLatestCodTcol)) {
codTcol = mLatestCodTcol;
} else {
codTcol = mtbAart.getCodTcolUl();
}
}
DialogInputLUProdDTO dialogInputLUProdDTO = new DialogInputLUProdDTO() DialogInputLUProdDTO dialogInputLUProdDTO = new DialogInputLUProdDTO()
.setMtbAart(mtbAart) .setMtbAart(mtbAart)
.setNumCnf(this.currentOrder.getValue().getColliPedana()) .setNumCnf(currentOrder.getColliPedana())
.setQtaCnf(mtbAart.getQtaCnf()) .setQtaCnf(mtbAart.getQtaCnf())
.setQtaTot(this.currentOrder.getValue().getColliPedana().multiply(mtbAart.getQtaCnf())) .setQtaTot(currentOrder.getColliPedana().multiply(mtbAart.getQtaCnf()))
.setPartitaMag(this.currentOrder.getValue().getPartitaMag()) .setPartitaMag(currentOrder.getPartitaMag())
.setDataScad(this.currentOrder.getValue().getDataScadD()) .setDataScad(currentOrder.getDataScadD())
.setCodJfasParent(this.currentOrder.getValue().getCodJfas()) .setCodJfasParent(currentOrder.getCodJfas())
.setCodTcol(this.currentOrder.getValue().getCodTcolUl()) .setCodTcol(codTcol)
.setSuggestedCodJfas(dtbOrdStep != null && dtbOrdStep.size() > 0 ? dtbOrdStep.get(0).getCodJfas() : null); .setSuggestedCodJfas(dtbOrdStep != null && dtbOrdStep.size() > 0 ? dtbOrdStep.get(0).getCodJfas() : null);

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
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.gest.prod_rientro_merce.order_detail.rest.ProdRientroMerceOrderDetailRESTConsumer; import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.ProdRientroMerceOrderDetailRESTConsumer;
@@ -17,8 +18,9 @@ public class ProdRientroMerceOrderDetailModule {
@Provides @Provides
ProdRientroMerceOrderDetailViewModel provideProdRientroMerceOrderDetailViewModel( ProdRientroMerceOrderDetailViewModel provideProdRientroMerceOrderDetailViewModel(
ProdRientroMerceOrderDetailRESTConsumer prodRientroMerceOrderDetailRESTConsumer, ProdRientroMerceOrderDetailRESTConsumer prodRientroMerceOrderDetailRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
return new ProdRientroMerceOrderDetailViewModel(prodRientroMerceOrderDetailRESTConsumer, colliMagazzinoRESTConsumer); PrinterRESTConsumer printerRESTConsumer) {
return new ProdRientroMerceOrderDetailViewModel(prodRientroMerceOrderDetailRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer);
} }
} }

View File

@@ -6,32 +6,42 @@ import com.annimon.stream.Optional;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportType;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.ProdRientroMerceOrderDetailRESTConsumer; import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.ProdRientroMerceOrderDetailRESTConsumer;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto.ImportColliDaProduzioneRequestDTO; import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto.ImportColliDaProduzioneRequestDTO;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.dto.PrintUlDTO;
public class ProdRientroMerceOrderDetailViewModel { public class ProdRientroMerceOrderDetailViewModel {
public MutableLiveData<List<MtbColt>> mtbColtsOfOrder = new MutableLiveData<>(); public final MutableLiveData<List<MtbColt>> mtbColtsOfOrder = new MutableLiveData<>();
private OrdineLavorazioneDTO currentOrder; private OrdineLavorazioneDTO currentOrder;
private final ProdRientroMerceOrderDetailRESTConsumer mProdRientroMerceOrderDetailRESTConsumer; private final ProdRientroMerceOrderDetailRESTConsumer mProdRientroMerceOrderDetailRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final PrinterRESTConsumer mPrinterRESTConsumer;
private Listener mListener; private Listener mListener;
@Inject @Inject
public ProdRientroMerceOrderDetailViewModel(ProdRientroMerceOrderDetailRESTConsumer prodRientroMerceOrderDetailRESTConsumer, public ProdRientroMerceOrderDetailViewModel(ProdRientroMerceOrderDetailRESTConsumer prodRientroMerceOrderDetailRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer) {
this.mProdRientroMerceOrderDetailRESTConsumer = prodRientroMerceOrderDetailRESTConsumer; this.mProdRientroMerceOrderDetailRESTConsumer = prodRientroMerceOrderDetailRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mPrinterRESTConsumer = printerRESTConsumer;
} }
public void setOrder(OrdineLavorazioneDTO order) { public void setOrder(OrdineLavorazioneDTO order) {
@@ -40,7 +50,7 @@ public class ProdRientroMerceOrderDetailViewModel {
refreshMtbColts(); refreshMtbColts();
} }
private void refreshMtbColts() { public void refreshMtbColts() {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
this.mtbColtsOfOrder.postValue(null); this.mtbColtsOfOrder.postValue(null);
@@ -81,12 +91,9 @@ public class ProdRientroMerceOrderDetailViewModel {
.setPesoNetto(pickedQuantityDTO.getPesoNetto()); .setPesoNetto(pickedQuantityDTO.getPesoNetto());
this.mProdRientroMerceOrderDetailRESTConsumer.importColloDaProduzione(importColliDaProduzioneRequestDTO, mtbColtSaved -> { this.mProdRientroMerceOrderDetailRESTConsumer.importColloDaProduzione(importColliDaProduzioneRequestDTO, mtbColtSaved -> {
synchronized (this.mtbColtsOfOrder) { synchronized (this.mtbColtsOfOrder) {
refreshMtbColts(); this.mListener.onDataSaved(mtbColtSaved);
} }
this.sendOnLoadingEnded();
}, this::sendError); }, this::sendError);
@@ -136,9 +143,39 @@ public class ProdRientroMerceOrderDetailViewModel {
if (this.mListener != null) mListener.onError(ex); if (this.mListener != null) mListener.onError(ex);
} }
public void printSavedMtbColt(PrintUlDTO result) {
if (result.isFlagPrintProductionLabel()) {
this.startPrint(result.getMtbColt(), ReportType.ETICHETTA_SSCC_LAVORAZIONE, currentOrder.getCodAnag());
} else {
this.loadShipmentUlFromProductionUL(result.getMtbColt(), mtbColt -> {
this.startPrint(mtbColt, ReportType.ETICHETTA_SSCC_SPEDIZIONE, mtbColt.getCodAnag());
}, this::sendError);
}
}
private void loadShipmentUlFromProductionUL(MtbColt productionUL, RunnableArgs<MtbColt> onLoad, RunnableArgs<Exception> onError) {
this.mColliMagazzinoRESTConsumer.loadShipmentUlFromProductionUL(productionUL, onLoad, onError);
}
private void startPrint(MtbColt mtbColt, ReportType reportType, String codAnag) {
HashMap<String, Object> params = new HashMap<>();
params.put("gestione", mtbColt.getGestione());
params.put("ser_collo", mtbColt.getSerCollo());
params.put("num_collo", mtbColt.getNumCollo());
params.put("data_collo", UtilityDate.formatDate(mtbColt.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH));
this.mPrinterRESTConsumer.printReportType(
reportType,
SettingsManager.i().getUserSession().getDepo().getCodMdep(),
codAnag,
params,
this::refreshMtbColts,
this::sendError);
}
public interface Listener extends ILoadingListener { public interface Listener extends ILoadingListener {
void onDataSaved(); void onDataSaved(MtbColt mtbColt);
void onError(Exception ex); void onError(Exception ex);

View File

@@ -15,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.ComparatorCompat; import com.annimon.stream.ComparatorCompat;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -116,7 +117,9 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
private List<ProdRientroMerceOrderListModel> convertDataModelToListModel(List<OrdineLavorazioneDTO> dataList) { private List<ProdRientroMerceOrderListModel> convertDataModelToListModel(List<OrdineLavorazioneDTO> dataList) {
ComparatorCompat<OrdineLavorazioneDTO> comparator = ComparatorCompat ComparatorCompat<OrdineLavorazioneDTO> comparator = ComparatorCompat
.comparing(OrdineLavorazioneDTO::getCodJfas) .comparing(OrdineLavorazioneDTO::getCodAnag)
.thenComparing(ComparatorCompat.comparing(ordineLavorazioneDTO -> ordineLavorazioneDTO.getDescCommessa() != null ? ordineLavorazioneDTO.getDescCommessa() : "zzzzzzzz"))
.thenComparing(ComparatorCompat.comparing(ordineLavorazioneDTO -> ordineLavorazioneDTO.getDataConsCommessaD() != null ? String.valueOf(ordineLavorazioneDTO.getDataConsCommessaD().getTime()) : "999999999999")).reversed()
.thenComparing(ComparatorCompat.comparing(ordineLavorazioneDTO -> ordineLavorazioneDTO.getDataOrd() != null ? ordineLavorazioneDTO.getDataOrd() : "zzzzzzzz")).reversed() .thenComparing(ComparatorCompat.comparing(ordineLavorazioneDTO -> ordineLavorazioneDTO.getDataOrd() != null ? ordineLavorazioneDTO.getDataOrd() : "zzzzzzzz")).reversed()
.thenComparing(ComparatorCompat.comparing(OrdineLavorazioneDTO::getNumOrd)); .thenComparing(ComparatorCompat.comparing(OrdineLavorazioneDTO::getNumOrd));
@@ -140,7 +143,7 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
break; break;
} }
listModel.setGroupTitle(x.getCodJfas()); listModel.setGroupTitle(x.getRagSocAnag());
if (!UtilityString.isNullOrEmpty(x.getDataConsCommessa())) { if (!UtilityString.isNullOrEmpty(x.getDataConsCommessa())) {
listModel.setPreDescription("Consegna: " + UtilityDate.formatDate(x.getDataConsCommessaD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); listModel.setPreDescription("Consegna: " + UtilityDate.formatDate(x.getDataConsCommessaD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
@@ -157,7 +160,21 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
listModel.setRightDescription(x.getCodJcom() != null ? (x.getDescCommessa() + " (" + x.getCodJcom() + ")") : ""); listModel.setRightDescription(x.getCodJcom() != null ? (x.getDescCommessa() + " (" + x.getCodJcom() + ")") : "");
listModel.setProgress(x.getProgress()); listModel.setProgress(x.getProgress());
listModel.setRightSubDescription(x.getNumCnf().stripTrailingZeros().toPlainString() + " COL"); int numPedane = x.getNumCnf().divide(x.getColliPedana(), 0, RoundingMode.DOWN).intValue();
int numCnf = x.getNumCnf().remainder(x.getColliPedana()).intValue();
String qtaOrdLabel = "";
if (numPedane > 0) {
qtaOrdLabel += numPedane + "UL x " + x.getColliPedana().stripTrailingZeros().toPlainString() + " COL";
if (numCnf > 0) {
qtaOrdLabel += " + ";
}
}
if (numCnf > 0) {
qtaOrdLabel += numCnf + " COL";
}
// listModel.setRightSubDescription(x.getNumCnf().stripTrailingZeros().toPlainString() + " COL");
listModel.setRightSubDescription(qtaOrdLabel);
/*try { /*try {
listModel.setRightSubDescription(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); listModel.setRightSubDescription(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
} catch (Exception ex) { } catch (Exception ex) {

View File

@@ -42,7 +42,7 @@ import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.Versamento
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ui.ChooseOrdsLavFromListAdapter; import it.integry.integrywmsnative.gest.prod_versamento_materiale.ui.ChooseOrdsLavFromListAdapter;
import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView;
@@ -197,7 +197,7 @@ public class ProdVersamentoMaterialeFragment extends BaseFragment implements Pro
} }
private void choosePosition() { private void choosePosition() {
DialogAskPositionOfLU.makeBase(requireActivity(), true, (status, mtbDepoPosizione) -> { DialogAskPositionOfLUView.makeBase(true, (status, mtbDepoPosizione) -> {
if (status == DialogConsts.Results.ABORT) { if (status == DialogConsts.Results.ABORT) {
popMe(); popMe();
@@ -205,7 +205,7 @@ public class ProdVersamentoMaterialeFragment extends BaseFragment implements Pro
mViewModel.setPosizione(mtbDepoPosizione); mViewModel.setPosizione(mtbDepoPosizione);
} }
}, this::onError).show(); }, this::onError).show(requireActivity().getSupportFragmentManager(), "tag");
} }

View File

@@ -10,7 +10,6 @@ import android.widget.Toast;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.ravikoradiya.liveadapter.LiveAdapter; import com.ravikoradiya.liveadapter.LiveAdapter;
@@ -34,7 +33,6 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding;
import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding; import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListModel;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.DialogAskAction; import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
@@ -53,8 +51,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
@Inject @Inject
PVOrdineAcquistoEditViewModel mViewModel; PVOrdineAcquistoEditViewModel mViewModel;
private final ObservableArrayList<OrdineAcquistoArtListModel> mArticoliMutableData = new ObservableArrayList<>();
public static Intent newInstance(Context context, Ordine ordine) { public static Intent newInstance(Context context, Ordine ordine) {
Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class); Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class);

View File

@@ -117,6 +117,27 @@ public class PVOrdineAcquistoEditViewModel {
this.mArticoli.postValue(newList); this.mArticoli.postValue(newList);
} }
public void saveArticoli(List<ArticoloOrdine> articoli) {
var newList = this.mArticoli.getValue();
if (newList == null) {
newList = new ArrayList<>();
}
for (ArticoloOrdine articolo : articoli) {
setBgTint(articolo);
var alreadySavedItem = Stream.of(newList)
.filter(x -> Objects.equals(x.getCodMart(), articolo.getCodMart()))
.findFirst();
if (alreadySavedItem.isPresent()) newList.remove(alreadySavedItem.get());
newList.add(articolo);
}
this.mArticoli.postValue(newList);
}
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
this.checkArticolo( this.checkArticolo(
@@ -225,8 +246,7 @@ public class PVOrdineAcquistoEditViewModel {
}); });
if (!articoliToSave.isEmpty()) { if (!articoliToSave.isEmpty()) {
mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, () -> { mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, () -> {
Stream.of(articoliToSave).forEach(this::saveArticolo); this.saveArticoli(articoliToSave);
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
}, this::sendError); }, this::sendError);

View File

@@ -53,9 +53,7 @@ public class OrdineAcquistoPvHelper {
mGrigliaRepository.saveGriglia(griglia, id -> { mGrigliaRepository.saveGriglia(griglia, id -> {
saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, grigliaResult -> { saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSaved, onFail);
onSaved.run(grigliaResult);
}, onFail);
}, onFail); }, onFail);
}); });
}, onFail); }, onFail);

View File

@@ -57,13 +57,13 @@ import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, RettificaGiacenzeViewModel.Listener, BottomSheetMtbColrEditView.Listener { public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFragment, ILifecycleFragment, RettificaGiacenzeViewModel.Listener, BottomSheetMtbColrEditView.Listener {
@@ -157,8 +157,8 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
mBinding.rettificaGiacenzeMainList.setHasFixedSize(true); mBinding.rettificaGiacenzeMainList.setHasFixedSize(true);
mBinding.rettificaGiacenzeMainList.setLayoutManager(new LinearLayoutManager(getActivity())); mBinding.rettificaGiacenzeMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL); SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireActivity(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider)); itemDecorator.setDrawable(ContextCompat.getDrawable(requireActivity(), R.drawable.divider));
mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator); mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator);
} }
@@ -215,9 +215,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
this.onLoadingStarted(); this.onLoadingStarted();
this.mViewModel.processBarcodeDTO(data, () -> { this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded);
this.onLoadingEnded();
});
}; };
@@ -288,8 +286,9 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
} }
@Override @Override
public void onArtListLoaded(ArrayList<MtbAart> artList) { public void onArtListLoaded(ArrayList<MtbAart> artList, RunnableArgs<MtbAart> onArtChoosed) {
DialogChooseArtFromListaArts.make(getActivity(), artList, mtbAart -> mViewModel.dispatchArt(mtbAart, null)).show(); new DialogChooseArtFromListaArtsView(artList, onArtChoosed)
.show(requireActivity().getSupportFragmentManager(), "tag");
} }
@Override @Override
@@ -300,7 +299,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
} else { } else {
onComplete.run(mtbColt, created); onComplete.run(mtbColt, created);
} }
}).show(getActivity().getSupportFragmentManager(), "tag"); }).show(requireActivity().getSupportFragmentManager(), "tag");
} }
@Override @Override
@@ -336,14 +335,13 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
@Override @Override
public void onError(Exception ex) { public void onError(Exception ex) {
this.onLoadingEnded(); this.onLoadingEnded();
BarcodeManager.enable();
if (ex instanceof InvalidPesoKGException) { if (ex instanceof InvalidPesoKGException) {
UtilityToast.showToast(ex.getMessage()); UtilityToast.showToast(ex.getMessage());
} else { } else {
UtilityExceptions.defaultException(requireActivity(), ex, mCurrentProgress); UtilityExceptions.defaultException(requireActivity(), ex);
} }
BarcodeManager.enable();
} }
@Override @Override
@@ -353,6 +351,10 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
BigDecimal initialNumCnf, BigDecimal initialNumCnf,
BigDecimal initialQtaCnf, BigDecimal initialQtaCnf,
BigDecimal initialQtaTot, BigDecimal initialQtaTot,
BigDecimal totalQtaInWarehouse,
BigDecimal totalNumCnfInWarehouse,
BigDecimal totalQtaCommitted,
BigDecimal totalNumCnfCommitted,
BigDecimal totalQtaToBeTaken, BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken, BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken, BigDecimal qtaCnfToBeTaken,
@@ -368,6 +370,10 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
.setInitialNumCnf(initialNumCnf) .setInitialNumCnf(initialNumCnf)
.setInitialQtaCnf(initialQtaCnf) .setInitialQtaCnf(initialQtaCnf)
.setInitialQtaTot(initialQtaTot) .setInitialQtaTot(initialQtaTot)
.setTotalQtaInWarehouse(totalQtaInWarehouse)
.setTotalNumCnfInWarehouse(totalNumCnfInWarehouse)
.setTotalQtaCommitted(totalQtaCommitted)
.setTotalNumCnfCommitted(totalNumCnfCommitted)
.setTotalQtaToBeTaken(totalQtaToBeTaken) .setTotalQtaToBeTaken(totalQtaToBeTaken)
.setTotalNumCnfToBeTaken(totalNumCnfToBeTaken) .setTotalNumCnfToBeTaken(totalNumCnfToBeTaken)
.setQtaCnfToBeTaken(qtaCnfToBeTaken) .setQtaCnfToBeTaken(qtaCnfToBeTaken)
@@ -464,15 +470,15 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
null, null,
R.string.button_ignore_print, R.string.button_ignore_print,
onComplete) onComplete)
.show(getActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), "tag");
} }
@Override @Override
public void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete) { public void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete) {
DialogYesNo.make(getActivity(), "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> { new DialogYesNoView(null, "Vuoi cambiare la posizione della UL corrente?", result -> {
switch (result) { switch (result) {
case YES: case YES:
DialogAskPositionOfLU.makeBase(getActivity(), false, (status, mtbDepoPosizione) -> { DialogAskPositionOfLUView.makeBase(false, (status, mtbDepoPosizione) -> {
if (status == DialogConsts.Results.ABORT) { if (status == DialogConsts.Results.ABORT) {
onComplete.run(false, null); onComplete.run(false, null);
} else { } else {
@@ -482,19 +488,24 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
onComplete.run(true, null); onComplete.run(true, null);
} }
} }
}, this::onError).show(); }, this::onError)
.show(requireActivity().getSupportFragmentManager(), "tag");
break; break;
case NO: case NO:
onComplete.run(false, null); onComplete.run(false, null);
break; break;
} }
}).show(); }).show(requireActivity().getSupportFragmentManager(), "tag");
} }
@Override @Override
public void onPreDestroy(Runnable onComplete) { public void onPreDestroy(Runnable onComplete) {
BarcodeManager.removeCallback(barcodeScannerIstanceID); if (mViewModel.getCurrentMtbColt() != null)
mViewModel.closeLU(false); mViewModel.closeLU(false);
else {
BarcodeManager.removeCallback(barcodeScannerIstanceID);
onComplete.run();
}
} }
} }

View File

@@ -21,7 +21,6 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintL
import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbCols;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
@@ -77,7 +76,6 @@ public class RettificaGiacenzeViewModel {
this.mDefaultCausale = defaultCausale; this.mDefaultCausale = defaultCausale;
this.mCurrentCodMdep = currentCodMdep; this.mCurrentCodMdep = currentCodMdep;
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
this.mRettificaGiacenzeRESTConsumer.loadListaFornitori(fornitori -> { this.mRettificaGiacenzeRESTConsumer.loadListaFornitori(fornitori -> {
@@ -105,11 +103,6 @@ public class RettificaGiacenzeViewModel {
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
// if (UtilityBarcode.isEanPeso(barcodeScanDTO)) {
// //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
// this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
//
// } else
if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEan128(barcodeScanDTO, onComplete); this.executeEtichettaEan128(barcodeScanDTO, onComplete);
@@ -126,21 +119,26 @@ public class RettificaGiacenzeViewModel {
mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
String barcodeProd = null; String barcodeProd = null;
String codMart = null;
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc; if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin; if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if (!UtilityString.isNullOrEmpty(ean128Model.Content)) if (!UtilityString.isNullOrEmpty(ean128Model.Content))
barcodeProd = ean128Model.Content; barcodeProd = ean128Model.Content;
if (!UtilityString.isNullOrEmpty(ean128Model.Internal1))
codMart = ean128Model.Internal1;
if (!UtilityString.isNullOrEmpty(barcodeProd)) { if (!UtilityString.isNullOrEmpty(barcodeProd)) {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) { if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1); barcodeProd = barcodeProd.substring(1);
} }
PickDataDTO pickDataDTO = PickDataDTO.fromEan128(ean128Model); PickDataDTO pickDataDTO = PickDataDTO.fromEan128(ean128Model);
this.loadArticolo(barcodeProd, pickDataDTO, onComplete); this.loadArticolo(barcodeProd, pickDataDTO, onComplete);
} else if (!UtilityString.isNullOrEmpty(codMart)) {
this.searchArtInt(codMart, onComplete);
} else { } else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto //EAN 128 non completo o comunque mancano i riferimenti al prodotto
onComplete.run(); onComplete.run();
@@ -149,18 +147,13 @@ public class RettificaGiacenzeViewModel {
} }
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
if (barcodeProd.length() == 14) {
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
String finalBarcodeProd = barcodeProd;
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (onComplete != null) onComplete.run(); if (onComplete != null) onComplete.run();
if (mtbAartList != null && mtbAartList.size() > 0) { if (mtbAartList != null && mtbAartList.size() > 0) {
this.dispatchArt(mtbAartList.get(0), pickData); this.dispatchArt(mtbAartList.get(0), pickData);
} else { } else {
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd)); this.sendError(new NoResultFromBarcodeException(barcodeProd));
} }
}, this::sendError); }, this::sendError);
@@ -196,10 +189,24 @@ public class RettificaGiacenzeViewModel {
return; return;
} }
RunnableArgs<MtbAart> dispatchArtRunnable = mtbAart -> {
var matchRows = Stream.of(this.mCurrentMtbColt.getMtbColr())
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()))
.toList();
if (matchRows.size() != 1) {
dispatchArt(mtbAart, null);
} else {
dispatchRowEdit(matchRows.get(0));
}
};
if (artsList.size() == 1) { if (artsList.size() == 1) {
dispatchArt(artsList.get(0), null); dispatchArtRunnable.run(artsList.get(0));
} else { } else {
this.sendOnArtListLoaded(new ArrayList<>(artsList)); this.sendOnArtListLoaded(new ArrayList<>(artsList), dispatchArtRunnable);
} }
} }
@@ -291,6 +298,10 @@ public class RettificaGiacenzeViewModel {
initialNumCnf, initialNumCnf,
initialQtaCnf, initialQtaCnf,
initialQtaTot, initialQtaTot,
mtbAart.getQtaEsistente(),
mtbAart.getNumCnfEsistente(),
mtbAart.getQtaImpegnata(),
mtbAart.getNumCnfImpegnata(),
qtaColDaPrelevare, qtaColDaPrelevare,
numCnfDaPrelevare, numCnfDaPrelevare,
qtaCnfDaPrelevare, qtaCnfDaPrelevare,
@@ -444,18 +455,7 @@ public class RettificaGiacenzeViewModel {
private void saveCausaleRettificaGiacenze(Runnable onComplete) { private void saveCausaleRettificaGiacenze(Runnable onComplete) {
final MtbCols mtbCols = new MtbCols() this.mColliMagazzinoRESTConsumer.confirmGiacenzaUL(mCurrentMtbColt, onComplete, this::sendError);
.setCausale(this.mDefaultCausale);
mtbCols.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(null);
cloneMtbColt.setMtbCols(new ArrayList<>());
cloneMtbColt.getMtbCols().add(mtbCols);
this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, mtbColt -> onComplete.run(), this::sendError);
} }
private void savePosizione(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) { private void savePosizione(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
@@ -507,33 +507,41 @@ public class RettificaGiacenzeViewModel {
public void dispatchRowEdit(MtbColr mtbColrToUpdate) { public void dispatchRowEdit(MtbColr mtbColrToUpdate) {
final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() this.mRettificaGiacenzeRESTConsumer.searchArtInt(mtbColrToUpdate.getMtbAart().getCodMart(), newMtbAartList -> {
.setMtbAart(mtbColrToUpdate.getMtbAart());
this.sendOnItemDispatched( var newMtbAart = newMtbAartList.get(0);
pickingObjectDTO,
pickingObjectDTO.getMtbAart(), final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
mtbColrToUpdate.getNumCnf(), .setMtbAart(newMtbAart);
mtbColrToUpdate.getQtaCnf(),
mtbColrToUpdate.getQtaCol(), this.sendOnItemDispatched(
null, pickingObjectDTO,
null, pickingObjectDTO.getMtbAart(),
null, mtbColrToUpdate.getNumCnf(),
mtbColrToUpdate.getPartitaMag(), mtbColrToUpdate.getQtaCnf(),
mtbColrToUpdate.getDataScadPartitaD(), mtbColrToUpdate.getQtaCol(),
false, newMtbAart.getQtaEsistente(), newMtbAart.getNumCnfEsistente(),
false, newMtbAart.getQtaImpegnata(), newMtbAart.getNumCnfImpegnata(),
true, null,
(pickedQuantityDTO, shouldCloseLU) -> { null,
null,
mtbColrToUpdate.getPartitaMag(),
mtbColrToUpdate.getDataScadPartitaD(),
false,
false,
true,
(pickedQuantityDTO, shouldCloseLU) -> {
this.saveEditedRow(mtbColrToUpdate,
pickedQuantityDTO.getNumCnf(),
pickedQuantityDTO.getQtaCnf(),
pickedQuantityDTO.getQtaTot(),
pickedQuantityDTO.getPartitaMag(),
pickedQuantityDTO.getDataScad(),
shouldCloseLU);
});
}, this::sendError);
this.saveEditedRow(mtbColrToUpdate,
pickedQuantityDTO.getNumCnf(),
pickedQuantityDTO.getQtaCnf(),
pickedQuantityDTO.getQtaTot(),
pickedQuantityDTO.getPartitaMag(),
pickedQuantityDTO.getDataScad(),
shouldCloseLU);
});
} }
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
@@ -670,8 +678,8 @@ public class RettificaGiacenzeViewModel {
} }
private void sendOnArtListLoaded(ArrayList<MtbAart> artList) { private void sendOnArtListLoaded(ArrayList<MtbAart> artList, RunnableArgs<MtbAart> onArtChoosed) {
if (this.mListener != null) mListener.onArtListLoaded(artList); if (this.mListener != null) mListener.onArtListLoaded(artList, onArtChoosed);
} }
private void sendOnLUOpenRequest(RunnableArgss<MtbColt, Boolean> onComplete) { private void sendOnLUOpenRequest(RunnableArgss<MtbColt, Boolean> onComplete) {
@@ -699,6 +707,10 @@ public class RettificaGiacenzeViewModel {
BigDecimal initialNumCnf, BigDecimal initialNumCnf,
BigDecimal initialQtaCnf, BigDecimal initialQtaCnf,
BigDecimal initialQtaTot, BigDecimal initialQtaTot,
BigDecimal totalQtaInWarehouse,
BigDecimal totalNumCnfInWarehouse,
BigDecimal totalQtaCommitted,
BigDecimal totalNumCnfCommitted,
BigDecimal totalQtaToBeTaken, BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken, BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken, BigDecimal qtaCnfToBeTaken,
@@ -713,6 +725,10 @@ public class RettificaGiacenzeViewModel {
initialNumCnf, initialNumCnf,
initialQtaCnf, initialQtaCnf,
initialQtaTot, initialQtaTot,
totalQtaInWarehouse,
totalNumCnfInWarehouse,
totalQtaCommitted,
totalNumCnfCommitted,
totalQtaToBeTaken, totalQtaToBeTaken,
totalNumCnfToBeTaken, totalNumCnfToBeTaken,
qtaCnfToBeTaken, qtaCnfToBeTaken,
@@ -751,7 +767,7 @@ public class RettificaGiacenzeViewModel {
void onFornitoriLoaded(ArrayList<FornitoreDTO> fornitoriList); void onFornitoriLoaded(ArrayList<FornitoreDTO> fornitoriList);
void onArtListLoaded(ArrayList<MtbAart> artList); void onArtListLoaded(ArrayList<MtbAart> artList, RunnableArgs<MtbAart> onArtChoosed);
void onLUOpenRequest(RunnableArgss<MtbColt, Boolean> onComplete); void onLUOpenRequest(RunnableArgss<MtbColt, Boolean> onComplete);
@@ -768,6 +784,10 @@ public class RettificaGiacenzeViewModel {
BigDecimal initialNumCnf, BigDecimal initialNumCnf,
BigDecimal initialQtaCnf, BigDecimal initialQtaCnf,
BigDecimal initialQtaTot, BigDecimal initialQtaTot,
BigDecimal totalQtaInWarehouse,
BigDecimal totalNumCnfInWarehouse,
BigDecimal totalQtaCommitted,
BigDecimal totalNumCnfCommitted,
BigDecimal totalQtaToBeTaken, BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken, BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken, BigDecimal qtaCnfToBeTaken,

View File

@@ -12,6 +12,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore; import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
@@ -41,7 +42,7 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
" WHERE mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + " WHERE mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) +
" AND mtb_lisa.cod_mart = mtb_aart.cod_mart " + " AND mtb_lisa.cod_mart = mtb_aart.cod_mart " +
" AND mtb_lisa.cod_mart = mtb_part.cod_mart " + " AND mtb_lisa.cod_mart = mtb_part.cod_mart " +
" AND mtb_part.cod_mdep = '01' " + " AND mtb_part.cod_mdep = '" + SettingsManager.i().getUserSession().getDepo().getCodMdep() + "' " +
" AND (mtb_aart.descrizione_estesa LIKE '%" + codArtForOrDescr + "%' OR cod_art_for LIKE '%" + codArtForOrDescr + "%') " + " AND (mtb_aart.descrizione_estesa LIKE '%" + codArtForOrDescr + "%' OR cod_art_for LIKE '%" + codArtForOrDescr + "%') " +
" ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa"; " ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa";
@@ -55,13 +56,19 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs<ArrayList<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) { public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs<ArrayList<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT DISTINCT mtb_aart.* " + String sql = "SELECT DISTINCT mtb_aart.*," +
"FROM mtb_aart " + " qta_esistente, " +
"LEFT OUTER JOIN mvw_barcode on mtb_aart.cod_mart = mvw_barcode.cod_mart " + " qta_imp_cli + qta_imp_lav AS qta_impegnata, " +
"WHERE CASE" + " num_esistente AS num_cnf_esistente, " +
" num_imp_cli + num_imp_lav AS num_cnf_impegnata " +
" FROM mtb_aart " +
" LEFT OUTER JOIN mvw_barcode on mtb_aart.cod_mart = mvw_barcode.cod_mart " +
" LEFT OUTER JOIN mtb_part mp on mtb_aart.cod_mart = mp.cod_mart " +
" AND mp.cod_mdep = '" + SettingsManager.i().getUserSession().getDepo().getCodMdep() + "'" +
" WHERE CASE" +
" WHEN LEN(mvw_barcode.cod_barre) > 13 THEN mvw_barcode.cod_barre " + " WHEN LEN(mvw_barcode.cod_barre) > 13 THEN mvw_barcode.cod_barre " +
" ELSE Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre " + " ELSE Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre " +
"END LIKE '%' + CASE " + " END LIKE '%' + CASE " +
" WHEN LEN('" + codMartOrBarcodeOrDescr + "') > 13 THEN '" + codMartOrBarcodeOrDescr + "' " + " WHEN LEN('" + codMartOrBarcodeOrDescr + "') > 13 THEN '" + codMartOrBarcodeOrDescr + "' " +
" ELSE Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" + " ELSE Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" +
" END " + " END " +

View File

@@ -7,6 +7,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference; import androidx.preference.ListPreference;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceFragmentCompat;
@@ -17,7 +18,9 @@ import com.harrysoft.androidbluetoothserial.BluetoothManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import it.integry.barcode_base_android_library.model.BarcodeSetting;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityResources;
@@ -26,6 +29,8 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
private final ArrayList<Runnable> onPreDestroyList = new ArrayList<>(); private final ArrayList<Runnable> onPreDestroyList = new ArrayList<>();
public static final String KEY_PALLET_BT_DEVICE = "pallet_scale_bt_device"; public static final String KEY_PALLET_BT_DEVICE = "pallet_scale_bt_device";
public static final String KEY_TRIGGER_SCAN_MODE = "TRIG_SCAN_MODE";
public static final String KEY_TRIGGER_SCAN_DELAY = "TRIG_SCAN_DELAY";
private Collection<BluetoothDevice> btPairedDevices; private Collection<BluetoothDevice> btPairedDevices;
@@ -39,11 +44,30 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
setPreferencesFromResource(R.xml.app_preferences, rootKey); setPreferencesFromResource(R.xml.app_preferences, rootKey);
var palletScaleBtDeviceListPref = (ListPreference) findPreference(KEY_PALLET_BT_DEVICE); var palletScaleBtDeviceListPref = (ListPreference) findPreference(KEY_PALLET_BT_DEVICE);
var triggerScanDelayPref = (EditTextPreference) findPreference(KEY_TRIGGER_SCAN_DELAY);
var triggerScanModeListPref = (ListPreference) findPreference(KEY_TRIGGER_SCAN_MODE);
setListPreferenceData(palletScaleBtDeviceListPref); setListPreferenceData(palletScaleBtDeviceListPref);
palletScaleBtDeviceListPref.setOnPreferenceChangeListener(this); palletScaleBtDeviceListPref.setOnPreferenceChangeListener(this);
triggerScanDelayPref.setOnPreferenceChangeListener(this);
triggerScanDelayPref.setSummary(triggerScanDelayPref.getText());
loadScanModePreferences();
triggerScanModeListPref.setOnPreferenceChangeListener(this);
triggerScanModeListPref.setSummary(triggerScanModeListPref.getValue());
} }
protected void loadScanModePreferences() {
var triggerScanModeListPref = (ListPreference) findPreference(KEY_TRIGGER_SCAN_MODE);
if (triggerScanModeListPref != null) {
var scanModes = BarcodeSetting.getTriggerScanModes();
triggerScanModeListPref.setEntries(scanModes);
triggerScanModeListPref.setEntryValues(scanModes);
triggerScanModeListPref.setOnPreferenceChangeListener(this);
}
}
protected void setListPreferenceData(ListPreference lp) { protected void setListPreferenceData(ListPreference lp) {
BluetoothManager bluetoothManager = BluetoothManager.getInstance(); BluetoothManager bluetoothManager = BluetoothManager.getInstance();
if (bluetoothManager == null) { if (bluetoothManager == null) {
@@ -54,7 +78,7 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
btPairedDevices = bluetoothManager.getPairedDevicesList(); btPairedDevices = bluetoothManager.getPairedDevicesList();
if(!Stream.of(btPairedDevices).anyMatch(x -> x.getAddress().equalsIgnoreCase(lp.getValue()))) { if (!Stream.of(btPairedDevices).anyMatch(x -> x.getAddress().equalsIgnoreCase(lp.getValue()))) {
lp.setValue(null); lp.setValue(null);
} }
@@ -106,6 +130,16 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
final var palletScaleBtDeviceListPref = (ListPreference) preference; final var palletScaleBtDeviceListPref = (ListPreference) preference;
updatePalletBtDeviceSummary(palletScaleBtDeviceListPref, (String) newValue); updatePalletBtDeviceSummary(palletScaleBtDeviceListPref, (String) newValue);
break; break;
case KEY_TRIGGER_SCAN_DELAY:
final var scanDelayPref = (EditTextPreference) preference;
scanDelayPref.setSummary((String) newValue);
updateBarcodeScannerSettings();
break;
case KEY_TRIGGER_SCAN_MODE:
final var scanTriggerMode = (ListPreference) preference;
scanTriggerMode.setSummary((String) newValue);
updateBarcodeScannerSettings();
break;
} }
// Set result so knows to refresh itself // Set result so knows to refresh itself
@@ -113,6 +147,14 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
return true; return true;
} }
private void updateBarcodeScannerSettings() {
try {
BarcodeManager.init(requireContext());
} catch (Exception e) {
e.printStackTrace();
}
}
private void updatePalletBtDeviceSummary(ListPreference listPref, String btDeviceAddress) { private void updatePalletBtDeviceSummary(ListPreference listPref, String btDeviceAddress) {
String btDeviceName = Stream.of(btPairedDevices) String btDeviceName = Stream.of(btPairedDevices)

View File

@@ -68,17 +68,18 @@ import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialog; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialog;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso; import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLuView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
public class SpedizioneActivity extends BaseActivity implements SpedizioneViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener { public class SpedizioneActivity extends BaseActivity implements SpedizioneViewModel.Listener, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener {
@@ -178,8 +179,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
mFlagShowCodForn = customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE); mFlagShowCodForn = customConfiguration != null ? customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE) : true;
mDivideByGrpMerc = customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC); mDivideByGrpMerc = customConfiguration != null ? customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC) : false;
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
mEnableQuantityReset = sharedPreferences.getBoolean("picking_uscita_enable_quantity_reset", true); mEnableQuantityReset = sharedPreferences.getBoolean("picking_uscita_enable_quantity_reset", true);
@@ -196,7 +197,10 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
this.initBarcodeReader(); this.initBarcodeReader();
this.initRecyclerView(); this.initRecyclerView();
closeOrderButtonEnabled.set(SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose() || SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()); closeOrderButtonEnabled.set(SettingsManager.iDB().isFlagPrintEtichetteOnOrderClose()
|| SettingsManager.iDB().isFlagPrintPackingListOnOrderClose()
|| (this.isOrdTrasf() && !UtilityString.isNullOrEmpty(SettingsManager.iDB().getCodDtipOrdTrasfV()))
);
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
@@ -220,6 +224,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
useQtaOrd); useQtaOrd);
} }
private boolean isOrdTrasf() {
return mTestateOrdini != null && !mTestateOrdini.isEmpty() && Stream.of(mTestateOrdini)
.map(OrdineUscitaInevasoDTO::isOrdTrasf)
.withoutNulls()
.distinctBy(x -> x)
.findFirst()
.get();
}
@Override @Override
public boolean onSupportNavigateUp() { public boolean onSupportNavigateUp() {
onBackPressed(); onBackPressed();
@@ -342,6 +356,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
spedizioneListModel.setUntMis(x.getMtbAart().getUntMis()); spedizioneListModel.setUntMis(x.getMtbAart().getUntMis());
} }
BigDecimal qtaOmg = x.getSitArtOrdDTO().getQtaOmg();
if (qtaOmg != null && qtaOmg.compareTo(BigDecimal.ZERO) > 0) {
spedizioneListModel.setFreeQuantity(String.format(getString(R.string.ord_ven_qta_omaggio), qtaOmg.stripTrailingZeros().toPlainString(), spedizioneListModel.getUntMis()));
}
spedizioneListModel.setOriginalModel(x); spedizioneListModel.setOriginalModel(x);
spedizioneListModels.add(spedizioneListModel); spedizioneListModels.add(spedizioneListModel);
} else { } else {
@@ -703,9 +722,15 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
@Override @Override
public void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) { public void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) {
DialogInputPeso.make(this, codTcol, netWeightKG, grossWeightKG, (newCodTcol, newNetWeight, newGrossWeight) -> { // DialogInputPesoView.make(this, codTcol, netWeightKG, grossWeightKG, (newCodTcol, newNetWeight, newGrossWeight) -> {
onComplete.run(newCodTcol, netWeightKG, grossWeightKG); // onComplete.run(newCodTcol, netWeightKG, grossWeightKG);
}).show(); // }).show();
new DialogInputPesoLuView(null, new BigDecimal(50), new BigDecimal(55), (newCodTcol, newNetWeight, newGrossWeight) -> {
// onComplete.run(newCodTcol, netWeightKG, grossWeightKG);
})
.show(getSupportFragmentManager(), "tag");
} }
@Override @Override
@@ -772,25 +797,26 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
} }
@Override @Override
public void onItemDispatched(PickingObjectDTO pickingObjectDTO, public void onFullItemDispatched(PickingObjectDTO pickingObjectDTO,
MtbAart mtbAart, MtbAart mtbAart,
BigDecimal initialNumCnf, BigDecimal initialNumCnf,
BigDecimal initialQtaCnf, BigDecimal initialQtaCnf,
BigDecimal initialQtaTot, BigDecimal initialQtaTot,
BigDecimal totalQtaOrd, BigDecimal totalQtaOrd,
BigDecimal totalNumCnfOrd, BigDecimal totalNumCnfOrd,
BigDecimal qtaCnfOrd, BigDecimal qtaCnfOrd,
BigDecimal totalQtaToBeTaken, BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken, BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken, BigDecimal qtaCnfToBeTaken,
BigDecimal totalQtaAvailable, BigDecimal totalQtaAvailable,
BigDecimal totalNumCnfAvailable, BigDecimal totalNumCnfAvailable,
BigDecimal qtaCnfAvailable, BigDecimal qtaCnfAvailable,
String partitaMag, String partitaMag,
Date dataScad, Date dataScad,
boolean canOverflowOrderQuantity, boolean canOverflowOrderQuantity,
boolean canPartitaMagBeChanged, boolean canPartitaMagBeChanged,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) { RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
.setMtbAart(mtbAart) .setMtbAart(mtbAart)
.setInitialNumCnf(initialNumCnf) .setInitialNumCnf(initialNumCnf)
@@ -809,7 +835,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.setDataScad(dataScad) .setDataScad(dataScad)
.setCanOverflowOrderQuantity(canOverflowOrderQuantity) .setCanOverflowOrderQuantity(canOverflowOrderQuantity)
.setCanLUBeClosed(true) .setCanLUBeClosed(true)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged); .setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setStatoPartitaMag(pickingObjectDTO.getStatoArticoloDTO())
.setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus());
if (!mDialogInputQuantityV2View.isVisible()) if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View mDialogInputQuantityV2View
@@ -834,23 +862,23 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
@Override @Override
public void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete) { public void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete) {
DialogYesNo.make(this, "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> { new DialogYesNoView(null, "Vuoi cambiare la posizione della UL corrente?", result -> {
switch (result) { switch (result) {
case YES: case YES:
DialogAskPositionOfLU.makeBase(this, false, (status, mtbDepoPosizione) -> { DialogAskPositionOfLUView.makeBase(false, (status, mtbDepoPosizione) -> {
if (status == DialogConsts.Results.ABORT) { if (status == DialogConsts.Results.ABORT) {
onComplete.run(false, null); onComplete.run(false, null);
} else { } else {
onComplete.run(true, mtbDepoPosizione); onComplete.run(true, mtbDepoPosizione);
} }
}, this::onError).show(); }, this::onError).show(getSupportFragmentManager(), "tag");
break; break;
case NO: case NO:
onComplete.run(false, null); onComplete.run(false, null);
break; break;
} }
}).show(); }).show(getSupportFragmentManager(), "tag");
} }
public void askShouldPrintPackingList(PrintOrderCloseDTO printOrderCloseDTO, RunnableArgs<PrintOrderCloseDTO> onComplete) { public void askShouldPrintPackingList(PrintOrderCloseDTO printOrderCloseDTO, RunnableArgs<PrintOrderCloseDTO> onComplete) {
@@ -899,6 +927,19 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
} }
@Override
public void onCreateDocsRequest() {
new DialogYesNoView("Chiusura ordine", "Vuoi creare i documenti per gli ordini selezionati?", result -> {
this.mViewmodel.onCreateDocsAnswered(result);
}).show(this.getSupportFragmentManager(), "tag");
}
@Override
public void onChooseArtRequest(List<MtbAart> artsList, RunnableArgs<MtbAart> onComplete) {
new DialogChooseArtFromListaArtsView(artsList, onComplete)
.show(getSupportFragmentManager(), "tag");
}
@Override @Override
public void onOrderClosed() { public void onOrderClosed() {
this.onLoadingEnded(); this.onLoadingEnded();

View File

@@ -6,6 +6,7 @@ import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
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.DocumentiRESTConsumer;
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;
@@ -20,8 +21,8 @@ public class SpedizioneModule {
} }
@Provides @Provides
SpedizioneViewModel providesSpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer) { SpedizioneViewModel providesSpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, DocumentiRESTConsumer documentiRESTConsumer) {
return new SpedizioneViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, posizioniRESTConsumer); return new SpedizioneViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, posizioniRESTConsumer, documentiRESTConsumer);
} }
} }

View File

@@ -9,6 +9,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
public class PickingObjectDTO implements Cloneable { public class PickingObjectDTO implements Cloneable {
@@ -18,6 +19,7 @@ public class PickingObjectDTO implements Cloneable {
private List<MtbColt> mtbColts; private List<MtbColt> mtbColts;
private PickDataDTO tempPickData; private PickDataDTO tempPickData;
private StatoArticoloDTO statoArticoloDTO;
private MtbColt refMtbColt; private MtbColt refMtbColt;
private List<MtbColr> withdrawMtbColrs = new ArrayList<>(); private List<MtbColr> withdrawMtbColrs = new ArrayList<>();
@@ -100,4 +102,13 @@ public class PickingObjectDTO implements Cloneable {
this.withdrawMtbColrs = withdrawMtbColrs; this.withdrawMtbColrs = withdrawMtbColrs;
return this; return this;
} }
public StatoArticoloDTO getStatoArticoloDTO() {
return statoArticoloDTO;
}
public PickingObjectDTO setStatoArticoloDTO(StatoArticoloDTO statoArticoloDTO) {
this.statoArticoloDTO = statoArticoloDTO;
return this;
}
} }

View File

@@ -143,6 +143,13 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
holder.mBinding.subdescrizione2.setText(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione2()) ? null : Html.fromHtml(pickingObjectDTO.getSubDescrizione2())); holder.mBinding.subdescrizione2.setText(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione2()) ? null : Html.fromHtml(pickingObjectDTO.getSubDescrizione2()));
holder.mBinding.subdescrizione2.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione2()) ? View.GONE : View.VISIBLE); holder.mBinding.subdescrizione2.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione2()) ? View.GONE : View.VISIBLE);
if (!UtilityString.isNullOrEmpty(pickingObjectDTO.getFreeQuantity())) {
holder.mBinding.freeQty.setText(Html.fromHtml(pickingObjectDTO.getFreeQuantity()));
holder.mBinding.freeQty.setVisibility(View.VISIBLE);
} else {
holder.mBinding.freeQty.setVisibility(View.GONE);
}
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaEvasa())); holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaEvasa()));
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaTot())); holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaTot()));

View File

@@ -22,6 +22,7 @@ public class SpedizioneListModel implements Cloneable {
private BigDecimal qtaEvasa; private BigDecimal qtaEvasa;
private BigDecimal qtaTot; private BigDecimal qtaTot;
private String untMis; private String untMis;
private String freeQuantity;
private boolean active; private boolean active;
@@ -164,4 +165,13 @@ public class SpedizioneListModel implements Cloneable {
this.mSourceMtbColr = sourceMtbColr; this.mSourceMtbColr = sourceMtbColr;
return this; return this;
} }
public String getFreeQuantity() {
return freeQuantity;
}
public SpedizioneListModel setFreeQuantity(String freeQuantity) {
this.freeQuantity = freeQuantity;
return this;
}
} }

View File

@@ -29,13 +29,13 @@ public class FilterChipView extends Chip {
this.defaultChipBackgroundColor = getChipBackgroundColor(); this.defaultChipBackgroundColor = getChipBackgroundColor();
this.defaultChipTextColor = getTextColors(); this.defaultChipTextColor = getTextColors();
setShapeAppearanceModel( // setShapeAppearanceModel(
getShapeAppearanceModel() // getShapeAppearanceModel()
.withCornerSize(4) // .withCornerSize(4)
.toBuilder() // .toBuilder()
.build()); // .build());
//
setChipMinHeight(getChipMinHeight() * 1.25f); // setChipMinHeight(getChipMinHeight() * 1.25f);
setOnCloseIconClickListener(v -> { setOnCloseIconClickListener(v -> {
if (onResetClicked != null) onResetClicked.run(); if (onResetClicked != null) onResetClicked.run();

View File

@@ -64,7 +64,7 @@ public abstract class BottomSheetFragmentBaseView extends ConstraintLayout {
public void expand() { public void expand() {
if(this.mBottomSheetBehavior == null) { if(this.mBottomSheetBehavior == null) {
UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); UtilityLogger.error(new BottomSheetFragmentViewNotInitializedException());
return; return;
} }
@@ -73,7 +73,7 @@ public abstract class BottomSheetFragmentBaseView extends ConstraintLayout {
public void collapse() { public void collapse() {
if(this.mBottomSheetBehavior == null) { if(this.mBottomSheetBehavior == null) {
UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); UtilityLogger.error(new BottomSheetFragmentViewNotInitializedException());
return; return;
} }
@@ -91,7 +91,7 @@ public abstract class BottomSheetFragmentBaseView extends ConstraintLayout {
public State getState() { public State getState() {
if(this.mBottomSheetBehavior == null) { if(this.mBottomSheetBehavior == null) {
UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); UtilityLogger.error(new BottomSheetFragmentViewNotInitializedException());
return null; return null;
} }

View File

@@ -61,7 +61,7 @@ public class BottomSheetMtbColrEditView extends BottomSheetFragmentBaseView {
@Override @Override
public void expand() { public void expand() {
if(this.mViewModel.getMtbColr() == null) { if(this.mViewModel.getMtbColr() == null) {
UtilityLogger.errorMe(new NullMtbColrException()); UtilityLogger.error(new NullMtbColrException());
return; return;
} }

View File

@@ -1,18 +1,16 @@
package it.integry.integrywmsnative.view.dialogs; package it.integry.integrywmsnative.view.dialogs;
import android.graphics.Color; import android.app.Dialog;
import android.graphics.drawable.ColorDrawable;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.DialogFragment; import androidx.fragment.app.DialogFragment;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
@@ -29,36 +27,53 @@ public class DialogProgressView extends DialogFragment {
private boolean indeterminateProgress; private boolean indeterminateProgress;
public static DialogProgressView newInstance(String title, String subtitle, boolean indeterminate) { public static DialogProgressView newInstance(String title, String subtitle, boolean indeterminate) {
return new DialogProgressView() return new DialogProgressView(title, subtitle, indeterminate);
.setIndeterminateProgress(indeterminate)
.setTitle(title)
.setSubtitle(subtitle);
} }
public static DialogProgressView newInstance() { public static DialogProgressView newInstance() {
return newInstance(null, null, true); return newInstance(null, null, true);
} }
@Nullable public DialogProgressView(String title, String subtitle, boolean indeterminate) {
@Override this.setTitle(title);
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { this.setSubtitle(subtitle);
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, container, false); this.setIndeterminateProgress(indeterminate);
setCancelable(false);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mBindings.setTitle(UtilityString.isNullOrEmpty(title) ? requireActivity().getString(R.string.loading) : title);
mBindings.setSubtitle(subtitle);
mBindings.progressBar.setIndeterminate(isIndeterminateProgress());
if(!isIndeterminateProgress()){
mBindings.progressBar.setMax(100);
}
return mBindings.getRoot();
} }
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
mBindings = DialogProgressBinding.inflate(LayoutInflater.from(requireContext()));
mBindings.setTitle(UtilityString.isNullOrEmpty(title) ? requireContext().getString(R.string.loading) : title);
if (!UtilityString.isNullOrEmpty(subtitle)) mBindings.setSubtitle(subtitle);
mBindings.progressBar.setIndeterminate(isIndeterminateProgress());
if (!isIndeterminateProgress()) mBindings.progressBar.setMax(100);
var alertDialog = new MaterialAlertDialogBuilder(requireContext())
.setView(mBindings.getRoot())
.setCancelable(false)
.create();
alertDialog.setCanceledOnTouchOutside(false);
return alertDialog;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSubtitle() {
return subtitle;
}
public void setSubtitle(String subtitle) {
this.subtitle = subtitle;
}
public boolean isIndeterminateProgress() { public boolean isIndeterminateProgress() {
return indeterminateProgress; return indeterminateProgress;
@@ -69,17 +84,6 @@ public class DialogProgressView extends DialogFragment {
return this; return this;
} }
public DialogProgressView setTitle(String title) {
this.title = title;
return this;
}
public DialogProgressView setSubtitle(String subtitle) {
this.subtitle = subtitle;
return this;
}
public void setProgress(int progress) { public void setProgress(int progress) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mBindings.progressBar.setProgress(progress, true); mBindings.progressBar.setProgress(progress, true);

View File

@@ -1,223 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.ask_position_of_lu;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.widget.TextView;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import com.google.android.material.textfield.TextInputLayout;
import java.util.ArrayList;
import java.util.List;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.databinding.DialogAskPositionOfLuBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
public class DialogAskPositionOfLU {
private Context mContext;
private DialogAskPositionOfLuBinding mBinding;
private boolean mCheckForLineaProd;
private MtbDepoPosizione currentMtbDepoPosizione;
private Dialog mDialog;
private RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete;
private RunnableArgs<Exception> onFailed;
private TextInputLayout livelloTextInputLayout;
private boolean completedFlow = false;
public static Dialog makeBase(final Context context, boolean checkForLineaProd, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
return new DialogAskPositionOfLU(context, checkForLineaProd, onComplete, onFailed).mDialog;
}
private DialogAskPositionOfLU(Context context, boolean checkForLineaProd, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
mContext = context;
mCheckForLineaProd = checkForLineaProd;
this.onComplete = onComplete;
this.onFailed = onFailed;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_position_of_lu, null, false);
mBinding.setMContext(mContext);
List<Integer> views = new ArrayList<>();
views.add(R.layout.dialog_ask_position_of_lu__page1);
views.add(R.layout.dialog_ask_position_of_lu__page2);
DialogAskPositionOfLUAdapter adapter = new DialogAskPositionOfLUAdapter(mContext, views);
mBinding.viewpager.setAdapter(adapter);
mBinding.viewpager.beginFakeDrag();
mDialog = new Dialog(mContext);
mDialog.setContentView(mBinding.getRoot());
mDialog.setCanceledOnTouchOutside(false);
// mDialog.setCancelable(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
UtilityDialog.setTo90PercentWidth(mContext, mDialog);
mDialog.setOnShowListener(dialog -> {
((AppCompatTextView) adapter.getPage(0).findViewById(R.id.description_text)).setText(mCheckForLineaProd ? R.string.ask_production_line_of_lu_message : R.string.ask_position_of_lu_message);
adapter.getPage(1).findViewById(R.id.button_confirm).setOnClickListener(v -> {
String levelNumber = ((TextView)adapter.getPage(1).findViewById(R.id.level_number)).getText().toString();
onLevelConfirm(levelNumber);
});
adapter.getPage(1).findViewById(R.id.button_abort).setOnClickListener(v -> {
onLevelAbort();
});
livelloTextInputLayout = adapter.getPage(1).findViewById(R.id.level_number_layout);
livelloTextInputLayout.getEditText().addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(livelloTextInputLayout.getEditText().getText() != null) {
validateLevel(livelloTextInputLayout.getEditText().getText().toString());
} else resetLevelError();
}
@Override
public void afterTextChanged(Editable s) {
}
});
});
setupBarcode();
}
private void askLivello() {
mBinding.viewpager.setCurrentItem(1, true);
}
private boolean isOnLivelloPage() {
return mBinding.viewpager.getCurrentItem() == 1;
}
private void setupBarcode() {
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
mDialog.setOnDismissListener(dialog -> {
BarcodeManager.removeCallback(barcodeIstanceID);
if(!completedFlow) onComplete.run(DialogConsts.Results.ABORT, null);
});
BarcodeManager.enable();
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
if(!isOnLivelloPage()) {
if (UtilityBarcode.isEtichettaPosizione(data)) {
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue());
currentMtbDepoPosizione = foundPosizione;
if (!mCheckForLineaProd && !currentMtbDepoPosizione.isFlagLineaProduzione() && UtilityPosizione.isPosizioneWithLivello(foundPosizione)) {
askLivello();
BarcodeManager.enable();
} else {
completedFlow = true;
if(onComplete != null) onComplete.run(DialogConsts.Results.YES, foundPosizione);
mDialog.dismiss();
BarcodeManager.enable();
}
} else {
BarcodeManager.enable();
}
} else {
BarcodeManager.enable();
}
};
private void onLevelConfirm(String levelString) {
String newPosizione = currentMtbDepoPosizione.getPosizione().substring(0, currentMtbDepoPosizione.getPosizione().length()-1);
newPosizione += levelString;
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(newPosizione);
if(foundPosizione != null) {
resetLevelError();
completedFlow = true;
if(onComplete != null) onComplete.run(DialogConsts.Results.YES, foundPosizione);
mDialog.dismiss();
} else {
setLevelError(mContext.getResources().getString(R.string.not_valid));
}
}
private void validateLevel(String levelString) {
String newPosizione = currentMtbDepoPosizione.getPosizione().substring(0, currentMtbDepoPosizione.getPosizione().length()-1);
newPosizione += levelString;
if(UtilityPosizione.getFromCache(newPosizione) != null) {
resetLevelError();
} else setLevelError(mContext.getResources().getString(R.string.not_valid));
}
private void setLevelError(String message){
livelloTextInputLayout.setErrorEnabled(true);
livelloTextInputLayout.setError(message);
livelloTextInputLayout.setErrorIconDrawable(null);
}
private void resetLevelError() {
livelloTextInputLayout.setError(null);
}
private void onLevelAbort() {
completedFlow = true;
onComplete.run(DialogConsts.Results.ABORT, null);
mDialog.dismiss();
}
}

View File

@@ -0,0 +1,234 @@
package it.integry.integrywmsnative.view.dialogs.ask_position_of_lu;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.textfield.TextInputLayout;
import java.util.ArrayList;
import java.util.List;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.databinding.DialogAskPositionOfLuBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
public class DialogAskPositionOfLUView extends BaseDialogFragment implements DialogInterface.OnShowListener {
private DialogAskPositionOfLuBinding mBindings;
private DialogAskPositionOfLUAdapter viewpagerAdapter;
private int mBarcodeScannerIstanceID;
private boolean mCheckForLineaProd;
private MtbDepoPosizione currentMtbDepoPosizione;
private RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete;
private RunnableArgs<Exception> onFailed;
private TextInputLayout livelloTextInputLayout;
private boolean completedFlow = false;
public static DialogAskPositionOfLUView makeBase(boolean checkForLineaProd, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
return new DialogAskPositionOfLUView(checkForLineaProd, onComplete, onFailed);
}
private DialogAskPositionOfLUView(boolean checkForLineaProd, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
super();
this.mCheckForLineaProd = checkForLineaProd;
this.onComplete = onComplete;
this.onFailed = onFailed;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.initBarcode();
mBindings = DialogAskPositionOfLuBinding.inflate(LayoutInflater.from(requireActivity()), null, false);
mBindings.setLifecycleOwner(this);
List<Integer> views = new ArrayList<>();
views.add(R.layout.dialog_ask_position_of_lu__page1);
views.add(R.layout.dialog_ask_position_of_lu__page2);
viewpagerAdapter = new DialogAskPositionOfLUAdapter(requireContext(), views);
mBindings.viewpager.setAdapter(viewpagerAdapter);
mBindings.viewpager.beginFakeDrag();
var alertDialog = new MaterialAlertDialogBuilder(requireContext())
.setView(mBindings.getRoot())
.setCancelable(false)
.create();
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setOnShowListener(this);
return alertDialog;
}
@Override
public void onStart() {
super.onStart();
if(getDialog() != null) {
getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
}
}
@Override
public void onShow(DialogInterface dialog) {
((AppCompatTextView) viewpagerAdapter.getPage(0)
.findViewById(R.id.description_text))
.setText(mCheckForLineaProd ? R.string.ask_production_line_of_lu_message : R.string.ask_position_of_lu_message);
viewpagerAdapter.getPage(1).findViewById(R.id.button_confirm).setOnClickListener(v -> {
String levelNumber = ((TextView) viewpagerAdapter.getPage(1).findViewById(R.id.level_number)).getText().toString();
onLevelConfirm(levelNumber);
});
viewpagerAdapter.getPage(1).findViewById(R.id.button_abort).setOnClickListener(v -> {
onLevelAbort();
});
livelloTextInputLayout = viewpagerAdapter.getPage(1).findViewById(R.id.level_number_layout);
livelloTextInputLayout.getEditText().addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (livelloTextInputLayout.getEditText().getText() != null) {
validateLevel(livelloTextInputLayout.getEditText().getText().toString());
} else resetLevelError();
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
private void askLivello() {
mBindings.viewpager.setCurrentItem(1, true);
}
private boolean isOnLivelloPage() {
return mBindings.viewpager.getCurrentItem() == 1;
}
private void initBarcode() {
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessfull)
.setOnScanFailed(this::onError));
BarcodeManager.enable();
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
if (!completedFlow) onComplete.run(DialogConsts.Results.ABORT, null);
super.onDismiss(dialog);
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
if (!isOnLivelloPage()) {
if (UtilityBarcode.isEtichettaPosizione(data)) {
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue());
currentMtbDepoPosizione = foundPosizione;
if (!mCheckForLineaProd && !currentMtbDepoPosizione.isFlagLineaProduzione() && UtilityPosizione.isPosizioneWithLivello(foundPosizione)) {
askLivello();
BarcodeManager.enable();
} else {
completedFlow = true;
if (onComplete != null)
onComplete.run(DialogConsts.Results.YES, foundPosizione);
dismiss();
BarcodeManager.enable();
}
} else {
BarcodeManager.enable();
}
} else {
BarcodeManager.enable();
}
};
private void onLevelConfirm(String levelString) {
String newPosizione = currentMtbDepoPosizione.getPosizione().substring(0, currentMtbDepoPosizione.getPosizione().length() - 1);
newPosizione += levelString;
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(newPosizione);
if (foundPosizione != null) {
resetLevelError();
completedFlow = true;
if (onComplete != null) onComplete.run(DialogConsts.Results.YES, foundPosizione);
dismiss();
} else {
setLevelError(requireContext().getResources().getString(R.string.not_valid));
}
}
private void validateLevel(String levelString) {
String newPosizione = currentMtbDepoPosizione.getPosizione().substring(0, currentMtbDepoPosizione.getPosizione().length() - 1);
newPosizione += levelString;
if (UtilityPosizione.getFromCache(newPosizione) != null) {
resetLevelError();
} else setLevelError(requireContext().getResources().getString(R.string.not_valid));
}
private void setLevelError(String message) {
livelloTextInputLayout.setErrorEnabled(true);
livelloTextInputLayout.setError(message);
livelloTextInputLayout.setErrorIconDrawable(null);
}
private void resetLevelError() {
livelloTextInputLayout.setError(null);
}
private void onLevelAbort() {
completedFlow = true;
onComplete.run(DialogConsts.Results.ABORT, null);
dismiss();
}
}

View File

@@ -1,68 +1,115 @@
package it.integry.integrywmsnative.view.dialogs.base; package it.integry.integrywmsnative.view.dialogs.base;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.InputType; import android.text.InputType;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil; import androidx.annotation.NonNull;
import androidx.databinding.ObservableField;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogInputGeneralBinding; import it.integry.integrywmsnative.databinding.DialogInputGeneralContentBinding;
/** /**
* Created by GiuseppeS on 22/03/2018. * Created by GiuseppeS on 22/03/2018.
*/ */
public class DialogSimpleInputHelper { public class DialogSimpleInputHelper extends MaterialAlertDialogBuilder {
private static Dialog makeBase(Context mContext, String titleText, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick, Integer inputType) { public final ObservableField<String> inputValue = new ObservableField<>();
Dialog dialog = new Dialog(mContext);
DialogSimpleInputViewModel viewModel = new DialogSimpleInputViewModel(dialog);
public DialogSimpleInputHelper(@NonNull Context context, String titleText, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick, Integer inputType) {
super(context);
DialogInputGeneralBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.dialog_input_general, null, false); var dialogBindings = DialogInputGeneralContentBinding.inflate(LayoutInflater.from(context));
viewModel dialogBindings.setView(this);
.setOnPositive(() -> {
onPositiveClick.run(mBinding.generalInput.getText().toString()); dialogBindings.executePendingBindings();
})
.setOnNegative(onNegativeClick);
mBinding.setViewmodel(viewModel); this.setTitle(titleText);
// this.setMessage("Inserisci la nuova quantità residua dell'ordine");
//Title VIEW this.setView(dialogBindings.getRoot());
this.setCancelable(true);
mBinding.titleText.setText(titleText);
if (!UtilityString.isNullOrEmpty(hintText)) { if (!UtilityString.isNullOrEmpty(hintText)) {
mBinding.generalInput.setHint(hintText); dialogBindings.generalInputText.setHint(hintText);
} }
if (!UtilityString.isNullOrEmpty(defaultTextValue)) { if (!UtilityString.isNullOrEmpty(defaultTextValue)) {
mBinding.generalInput.setText(defaultTextValue); dialogBindings.generalInputText.setText(defaultTextValue);
} }
if (inputType != null) { if (inputType != null) {
mBinding.generalInput.setInputType(InputType.TYPE_CLASS_NUMBER); dialogBindings.generalInputText.setInputType(InputType.TYPE_CLASS_NUMBER);
} }
//Content View
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(false);
dialog.setContentView(mBinding.getRoot());
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
UtilityDialog.setTo90PercentWidth(mContext, dialog);
return dialog; this.setPositiveButton("Ok", (dialog, which) -> {
if(onPositiveClick != null) onPositiveClick.run(this.inputValue.get());
});
this.setNegativeButton("Annulla", (dialog, which) -> {
if(onNegativeClick != null) onNegativeClick.run();
});
} }
public static Dialog makeInputDialog(Context mContext, String title, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick) { private static DialogSimpleInputHelper makeBase(Context mContext, String titleText, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick, Integer inputType) {
DialogSimpleInputHelper dialogSimpleInputHelper = new DialogSimpleInputHelper(
mContext,
titleText,
defaultTextValue,
hintText,
onPositiveClick,
onNegativeClick,
inputType
);
return dialogSimpleInputHelper;
// Dialog dialog = new Dialog(mContext);
// DialogSimpleInputViewModel viewModel = new DialogSimpleInputViewModel(dialog);
//
//
// DialogInputGeneralBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.dialog_input_general, null, false);
// viewModel
// .setOnPositive(() -> {
//
// onPositiveClick.run(mBinding.generalInput.getText().toString());
// })
// .setOnNegative(onNegativeClick);
//
// mBinding.setViewmodel(viewModel);
//
// //Title VIEW
// mBinding.titleText.setText(titleText);
//
// if (!UtilityString.isNullOrEmpty(hintText)) {
// mBinding.generalInput.setHint(hintText);
// }
//
// if (!UtilityString.isNullOrEmpty(defaultTextValue)) {
// mBinding.generalInput.setText(defaultTextValue);
// }
// if (inputType != null) {
// mBinding.generalInput.setInputType(InputType.TYPE_CLASS_NUMBER);
// }
// //Content View
// dialog.setCancelable(true);
// dialog.setCanceledOnTouchOutside(false);
// dialog.setContentView(mBinding.getRoot());
// dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
// UtilityDialog.setTo90PercentWidth(mContext, dialog);
//
// return dialog;
}
public static DialogSimpleInputHelper makeInputDialog(Context mContext, String title, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick) {
return makeBase(mContext, return makeBase(mContext,
title, title,
@@ -75,7 +122,7 @@ public class DialogSimpleInputHelper {
} }
public static Dialog makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick) { public static DialogSimpleInputHelper makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick) {
return makeBase(mContext, return makeBase(mContext,
title, title,
@@ -87,7 +134,7 @@ public class DialogSimpleInputHelper {
} }
public static Dialog makeInputDialog(Context mContext, String title, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick, Integer inputType) { public static DialogSimpleInputHelper makeInputDialog(Context mContext, String title, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick, Integer inputType) {
return makeBase(mContext, return makeBase(mContext,
title, title,
@@ -100,7 +147,7 @@ public class DialogSimpleInputHelper {
} }
public static Dialog makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick, Integer inputType) { public static DialogSimpleInputHelper makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick, Integer inputType) {
return makeBase(mContext, return makeBase(mContext,
title, title,

View File

@@ -1,15 +1,12 @@
package it.integry.integrywmsnative.view.dialogs.base; package it.integry.integrywmsnative.view.dialogs.base;
import android.content.Context; import android.app.Dialog;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.text.Spanned; import android.text.Spanned;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
@@ -19,7 +16,8 @@ import androidx.annotation.StringRes;
import androidx.appcompat.widget.LinearLayoutCompat; import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.core.content.res.ResourcesCompat; import androidx.core.content.res.ResourcesCompat;
import androidx.databinding.DataBindingUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.HashMap; import java.util.HashMap;
@@ -66,7 +64,8 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
private final HashMap<String, String> mHashmapContent; private final HashMap<String, String> mHashmapContent;
private final Runnable mOnPositiveClick; private final Runnable mOnPositiveClick;
private final Runnable mOnNegativeClick; private final Runnable mOnNegativeClick;
private final @StringRes Integer mRNeutralButtonString; private final @StringRes
Integer mRNeutralButtonString;
private final Runnable mOnNeutralClick; private final Runnable mOnNeutralClick;
@@ -76,13 +75,12 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
private DialogBaseBinding mBindings; private DialogBaseBinding mBindings;
private Context mContext;
public static DialogSimpleMessageView newInstance(@NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap<String, String> hashmapContent , Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) { public static DialogSimpleMessageView newInstance(@NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) {
return new DialogSimpleMessageView(type, titleText, messageText, hashmapContent, onPositiveClick, onNegativeClick, rNeutralButtonString, onNeutralClick); return new DialogSimpleMessageView(type, titleText, messageText, hashmapContent, onPositiveClick, onNegativeClick, rNeutralButtonString, onNeutralClick);
} }
private DialogSimpleMessageView(@NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap<String, String> hashmapContent , Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) { private DialogSimpleMessageView(@NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) {
super(); super();
this.mType = type; this.mType = type;
@@ -99,57 +97,79 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
UtilityDialog.setTo90PercentWidth(this.mContext, this); UtilityDialog.setTo90PercentWidth(this.requireContext(), this);
} }
@Nullable @NonNull
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = getActivity(); mBindings = DialogBaseBinding.inflate(LayoutInflater.from(requireContext()), null, false);
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_base, container, false);
mBindings.setView(this); mBindings.setView(this);
mBindings.setLifecycleOwner(this); mBindings.setLifecycleOwner(this);
getDialog().setCanceledOnTouchOutside(false); this.initContent();
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
var alertDialogBuilder = new MaterialAlertDialogBuilder(requireContext())
.setView(mBindings.getRoot())
.setCancelable(false);
if (isPositiveVisible())
alertDialogBuilder.setPositiveButton(getPositiveButtonText(), (dialog, which) -> {
if(this.mOnPositiveClick != null) this.mOnPositiveClick.run();
});
if (isNeutralVisible())
alertDialogBuilder.setNeutralButton(getNeutralButtonText(), (dialog, which) -> {
this.mOnNeutralClick.run();
});
if (isNegativeVisible())
alertDialogBuilder.setNegativeButton(getNegativeButtonText(), (dialog, which) -> {
this.mOnNegativeClick.run();
});
var alertDialog = alertDialogBuilder.create();
alertDialog.setCanceledOnTouchOutside(false);
return alertDialog;
}
private void initContent() {
int colorBackgroundTitle = -1; int colorBackgroundTitle = -1;
Drawable titleIconRes = null; Drawable titleIconRes = null;
switch (mType) { switch (mType) {
case INFO: case INFO:
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.light_blue_300); colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.colorPrimary);
titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_info_78dp, null); titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_info_78dp, null);
break; break;
case SUCCESS: case SUCCESS:
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.green_300); colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.green_300);
titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_done_white_24dp, null); titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_done_white_24dp, null);
break; break;
case WARNING: case WARNING:
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.yellow_600); colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.yellow_600);
titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_warning_white_24dp, null); titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_warning_white_24dp, null);
break; break;
case ERROR: case ERROR:
colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.red_300); colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.red_300);
titleIconRes = ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_mood_bad_24dp, null); titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_mood_bad_24dp, null);
break; break;
} }
this.positiveButtonText = mContext.getText(R.string.ok).toString(); this.positiveButtonText = requireContext().getText(R.string.ok).toString();
this.negativeButtonText = mContext.getText(R.string.no).toString(); this.negativeButtonText = requireContext().getText(R.string.no).toString();
//Title VIEW //Title VIEW
mBindings.titleText.setText(mTitleText); mBindings.titleText.setText(mTitleText);
ColorStateList colorStateList = ColorStateList.valueOf(Color.WHITE); ColorStateList colorStateList = ColorStateList.valueOf(colorBackgroundTitle);
mBindings.titleIcon.setImageTintList(colorStateList); mBindings.titleIcon.setImageTintList(colorStateList);
mBindings.titleIcon.setImageDrawable(titleIconRes); mBindings.titleIcon.setImageDrawable(titleIconRes);
mBindings.titleContainer.setBackgroundColor(colorBackgroundTitle); // mBindings.titleContainer.setBackgroundColor(colorBackgroundTitle);
//Content View //Content View
mBindings.descriptionText.setText(mMessageText); mBindings.descriptionText.setText(mMessageText);
@@ -161,20 +181,20 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
String currentKey = mHashmapContent.keySet().toArray()[i].toString(); String currentKey = mHashmapContent.keySet().toArray()[i].toString();
String currentValue = mHashmapContent.get(currentKey); String currentValue = mHashmapContent.get(currentKey);
RelativeLayout singleMapContent = (RelativeLayout) inflater.inflate(R.layout.dialog_custom_content_hashmap_viewmodel, hashMapContainer); RelativeLayout singleMapContent = (RelativeLayout) LayoutInflater.from(requireContext()).inflate(R.layout.dialog_custom_content_hashmap_viewmodel, hashMapContainer);
((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_key)).setText(currentKey); ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_key)).setText(currentKey);
((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_value)).setText(currentValue); ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_value)).setText(currentValue);
hashMapContainer.addView(singleMapContent); hashMapContainer.addView(singleMapContent);
} }
} else {
hashMapContainer.setVisibility(View.GONE);
} }
return mBindings.getRoot();
} }
public boolean isPositiveVisible() { public boolean isPositiveVisible() {
return mOnPositiveClick != null; return mOnPositiveClick != null || (!isNeutralVisible() && !isNegativeVisible());
} }
public boolean isNeutralVisible() { public boolean isNeutralVisible() {
@@ -191,7 +211,7 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
} }
public String getNeutralButtonText() { public String getNeutralButtonText() {
return mRNeutralButtonString != null && mRNeutralButtonString != -1 ? mContext.getText(mRNeutralButtonString).toString() : null; return mRNeutralButtonString != null && mRNeutralButtonString != -1 ? requireContext().getText(mRNeutralButtonString).toString() : null;
} }
public String getNegativeButtonText() { public String getNegativeButtonText() {
@@ -200,17 +220,17 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
public void onPositiveClick() { public void onPositiveClick() {
dismiss(); dismiss();
if(mOnPositiveClick != null) mOnPositiveClick.run(); if (mOnPositiveClick != null) mOnPositiveClick.run();
} }
public void onNeutralClick() { public void onNeutralClick() {
dismiss(); dismiss();
if(mOnNeutralClick != null) mOnNeutralClick.run(); if (mOnNeutralClick != null) mOnNeutralClick.run();
} }
public void onNegativeClick() { public void onNegativeClick() {
dismiss(); dismiss();
if(mOnNegativeClick != null) mOnNegativeClick.run(); if (mOnNegativeClick != null) mOnNegativeClick.run();
} }
public static DialogSimpleMessageView makeInfoDialog(String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) { public static DialogSimpleMessageView makeInfoDialog(String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {

View File

@@ -1,81 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.basket_lu;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.databinding.DialogBasketLuBinding;
import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1.DialogBasketLU_Page1_ViewModel;
import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2.DialogBasketLU_Page2_ViewModel;
public class DialogBasketLU {
private Context mContext;
private Dialog mDialog;
private DialogBasketLuBinding mBinding;
private RunnableArgs<MtbColt> mOnComplete;
public static Dialog make(final Context context, RunnableArgs<MtbColt> onComplete) {
return new DialogBasketLU(context, onComplete).mDialog;
}
private DialogBasketLU(Context context, RunnableArgs<MtbColt> onComplete) {
mContext = context;
mOnComplete = onComplete;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_basket_lu, null, false);
mDialog = new Dialog(context);
mDialog.setContentView(mBinding.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
UtilityDialog.setTo90PercentWidth(context, mDialog);
this.initViewPager();
}
private void initViewPager() {
List<Map.Entry<Integer, Class<?>>> views = new ArrayList<>();
views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page1, DialogBasketLU_Page1_ViewModel.class));
views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page2, DialogBasketLU_Page2_ViewModel.class));
DialogBasketLU_ViewPagerAdapter viewPagerAdapter = new DialogBasketLU_ViewPagerAdapter(mContext, views);
mBinding.viewpager.setAdapter(viewPagerAdapter);
mBinding.viewpager.beginFakeDrag();
mBinding.viewpager.addOnPageChangeListener(viewPagerAdapter);
mBinding.viewpager.setEnabled(false);
mDialog.setOnShowListener(v -> {
viewPagerAdapter.getViewModel(R.layout.dialog_basket_lu__page2).setOnConfirmClickListener(data -> {
MtbColt mtbColt = (MtbColt) data;
mOnComplete.run(mtbColt);
mDialog.dismiss();
});
});
}
}

View File

@@ -0,0 +1,75 @@
package it.integry.integrywmsnative.view.dialogs.basket_lu;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.databinding.DialogBasketLuBinding;
import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1.DialogBasketLU_Page1_ViewModel;
import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2.DialogBasketLU_Page2_ViewModel;
public class DialogBasketLUView extends BaseDialogFragment {
private final RunnableArgs<MtbColt> mOnComplete;
private DialogBasketLuBinding mBindings;
public DialogBasketLUView(RunnableArgs<MtbColt> onComplete) {
mOnComplete = onComplete;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
mBindings = DialogBasketLuBinding.inflate(LayoutInflater.from(requireContext()), null, false);
var alertDialog = new MaterialAlertDialogBuilder(requireContext())
.setView(mBindings.getRoot())
.setCancelable(false)
.create();
alertDialog.setCanceledOnTouchOutside(false);
this.initViewPager(alertDialog);
return alertDialog;
}
private void initViewPager(Dialog dialog) {
List<Map.Entry<Integer, Class<?>>> views = new ArrayList<>();
views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page1, DialogBasketLU_Page1_ViewModel.class));
views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page2, DialogBasketLU_Page2_ViewModel.class));
DialogBasketLU_ViewPagerAdapter viewPagerAdapter = new DialogBasketLU_ViewPagerAdapter(requireContext(), views);
mBindings.viewpager.setAdapter(viewPagerAdapter);
mBindings.viewpager.beginFakeDrag();
mBindings.viewpager.addOnPageChangeListener(viewPagerAdapter);
mBindings.viewpager.setEnabled(false);
dialog.setOnShowListener(v -> {
viewPagerAdapter.getViewModel(R.layout.dialog_basket_lu__page2).setOnConfirmClickListener(data -> {
MtbColt mtbColt = (MtbColt) data;
mOnComplete.run(mtbColt);
dialog.dismiss();
});
});
}
}

View File

@@ -1,80 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class DialogChooseArtFromListaArts {
private Context currentContext;
private Dialog mDialog;
private DialogChooseArtFromListaArtsAdapter currentAdapter;
private RunnableArgs<MtbAart> mOnItemChoosed;
public static Dialog make(final Context context, List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
return new DialogChooseArtFromListaArts(context, listaArts, onItemChoosed).mDialog;
}
private DialogChooseArtFromListaArts(Context context, List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
currentContext = context;
mOnItemChoosed = onItemChoosed;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
DialogChooseArtFromListaArtBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_art_from_lista_art, null, false);
mDialog = new Dialog(context);
mDialog.setContentView(bindings.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
UtilityDialog.setTo90PercentWidth(context, mDialog);
initRecyclerView(bindings, listaArts);
}
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbAart> dataset) {
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(currentContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
currentAdapter = new DialogChooseArtFromListaArtsAdapter(currentContext, dataset, onItemClicked);
binding.dialogChooseArtFromListaArtMainList.setAdapter(currentAdapter);
}
private IRecyclerItemClicked<MtbAart> onItemClicked = (item, position) -> {
if(mOnItemChoosed != null) {
mOnItemChoosed.run(item);
}
mDialog.dismiss();
};
}

View File

@@ -0,0 +1,73 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class DialogChooseArtFromListaArtsView extends DialogFragment {
private final List<MtbAart> mListaArts;
private final RunnableArgs<MtbAart> mOnItemChoosed;
public DialogChooseArtFromListaArtsView(List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
super();
this.mListaArts = listaArts;
this.mOnItemChoosed = onItemChoosed;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
var binding = DialogChooseArtFromListaArtBinding.inflate(LayoutInflater.from(requireContext()));
initRecyclerView(binding, mListaArts);
var alertDialog = new MaterialAlertDialogBuilder(requireContext())
.setView(binding.getRoot())
.setCancelable(false)
.create();
alertDialog.setCanceledOnTouchOutside(false);
return alertDialog;
}
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbAart> dataset) {
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(requireContext()));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider));
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
DialogChooseArtFromListaArtsAdapter mCurrentAdapter = new DialogChooseArtFromListaArtsAdapter(requireContext(), dataset,
((item, position) -> {
if (mOnItemChoosed != null) {
mOnItemChoosed.run(item);
}
dismiss();
}));
binding.dialogChooseArtFromListaArtMainList.setAdapter(mCurrentAdapter);
}
}

View File

@@ -207,7 +207,10 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment {
.filter(x -> { .filter(x -> {
String codMart = x.getMtbColr().getMtbAart().getCodMart().toLowerCase(); String codMart = x.getMtbColr().getMtbAart().getCodMart().toLowerCase();
String descrizioneArt = x.getMtbColr().getMtbAart().getDescrizioneEstesa().toLowerCase(); String descrizioneArt = x.getMtbColr().getMtbAart().getDescrizioneEstesa().toLowerCase();
String diacod = x.getMtbColr().getMtbAart().getDiacod().toLowerCase(); String diacod = x.getMtbColr().getMtbAart().getDiacod();
if (!UtilityString.isNullOrEmpty(diacod)) {
diacod = diacod.toLowerCase();
}
return ((codMart.startsWith(finalNewText) || return ((codMart.startsWith(finalNewText) ||
codMart.endsWith(finalNewText) || codMart.endsWith(finalNewText) ||
@@ -217,10 +220,10 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment {
descrizioneArt.endsWith(finalNewText) || descrizioneArt.endsWith(finalNewText) ||
descrizioneArt.contains(finalNewText) || descrizioneArt.contains(finalNewText) ||
descrizioneArt.equalsIgnoreCase(finalNewText)) || descrizioneArt.equalsIgnoreCase(finalNewText)) ||
(diacod.startsWith(finalNewText) || (!UtilityString.isNullOrEmpty(diacod) && (diacod.startsWith(finalNewText) ||
diacod.endsWith(finalNewText) || diacod.endsWith(finalNewText) ||
diacod.contains(finalNewText) || diacod.contains(finalNewText) ||
diacod.equalsIgnoreCase(finalNewText))) && diacod.equalsIgnoreCase(finalNewText)))) &&
!x.isHidden(); !x.isHidden();
}) })
.toList(); .toList();
@@ -305,15 +308,10 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment {
private void loadArticolo(String barcodeProd, Ean128Model ean128Model) { private void loadArticolo(String barcodeProd, Ean128Model ean128Model) {
if (barcodeProd.length() == 14) {
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
String finalBarcodeProd = barcodeProd;
this.articoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { this.articoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) { if (mtbAartList != null && mtbAartList.size() > 0) {
this.mBindings.mainSearch.setQuery(finalBarcodeProd, false); this.mBindings.mainSearch.setQuery(barcodeProd, false);
this.searchArtInList(mtbAartList.get(0), ean128Model); this.searchArtInList(mtbAartList.get(0), ean128Model);

View File

@@ -1,4 +1,4 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr; package it.integry.integrywmsnative.view.dialogs.choose_batch_lot.choose_art_from_lista_mtb_colr;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;

View File

@@ -1,4 +1,4 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr; package it.integry.integrywmsnative.view.dialogs.choose_batch_lot.choose_art_from_lista_mtb_colr;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;

View File

@@ -131,7 +131,7 @@ public class InfoAggiuntiveLUDialog extends BaseDialogFragment implements InfoAg
codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo); codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo);
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter); mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
if (currentMtbTCol != null && !UtilityString.isNullOrEmpty(currentMtbColt.getCodTcol()) && UtilityString.isNullOrEmpty(this.selectedMtbTcol.get())) { if (currentMtbColt != null && !UtilityString.isNullOrEmpty(currentMtbColt.getCodTcol()) && UtilityString.isNullOrEmpty(this.selectedMtbTcol.get())) {
MtbTCol tipoPedana = Stream.of(tipiCollo).filter(x -> x.getCodTcol().equalsIgnoreCase(currentMtbColt.getCodTcol())).findFirstOrElse(null); MtbTCol tipoPedana = Stream.of(tipiCollo).filter(x -> x.getCodTcol().equalsIgnoreCase(currentMtbColt.getCodTcol())).findFirstOrElse(null);
if (tipoPedana != null) { if (tipoPedana != null) {
this.selectedMtbTcol.set(tipoPedana.getCodTcol() + " - " + tipoPedana.getDescrizione()); this.selectedMtbTcol.set(tipoPedana.getCodTcol() + " - " + tipoPedana.getDescrizione());

View File

@@ -1,135 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.input_peso_lu;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.widget.ArrayAdapter;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.FragmentActivity;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogInputPesoLuBinding;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class DialogInputPeso {
private final FragmentActivity mContext;
private final DialogInputPesoLuBinding mBindings;
private final DialogInputPesoViewModel mViewModel;
private final Dialog currentDialog;
private List<MtbTCol> codTcolList = null;
private ArrayAdapter<String> codTcolArrayAdapter = null;
public static Dialog make(final FragmentActivity context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
return new DialogInputPeso(context, codTcol, netWeight, grossWeight, onDialogDismiss).currentDialog;
}
private DialogInputPeso(final FragmentActivity context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
this.mContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_peso_lu, null, false);
currentDialog = new Dialog(context);
currentDialog.setContentView(mBindings.getRoot());
currentDialog.setCanceledOnTouchOutside(false);
currentDialog.setCancelable(false);
currentDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mViewModel = new DialogInputPesoViewModel();
mViewModel.codTcol.set(codTcol);
mViewModel.netWeight.set(UtilityNumber.decimalToString(netWeight));
mViewModel.grossWeight.set(UtilityNumber.decimalToString(grossWeight));
mBindings.setViewModel(mViewModel);
mBindings.buttonConfirm.setOnClickListener(v -> {
currentDialog.dismiss();
String newCodTcol = null;
if(mViewModel.codTcol.get() != null) {
Optional<MtbTCol> newCodTcolOptional = Stream.of(codTcolList)
.filter(x -> (x.getCodTcol() + " - " + x.getDescrizione()).equalsIgnoreCase(mViewModel.codTcol.get()))
.findSingle();
if(newCodTcolOptional.isPresent()) newCodTcol = newCodTcolOptional.get().getCodTcol();
}
BigDecimal netWeightDecimal = new BigDecimal(mViewModel.netWeight.get());
BigDecimal grossWeightDecimal = new BigDecimal(mViewModel.grossWeight.get());
onDialogDismiss.run(newCodTcol, netWeightDecimal, grossWeightDecimal);
});
this.init();
}
private void init() {
final DialogProgressView progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
MagazzinoRESTConsumer.getTipiColloStatic(codTcols -> {
this.codTcolList = codTcols;
List<String> codTcolDescriptions = Stream.of(codTcols)
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
.toList();
if(mViewModel.codTcol.get() != null) {
Optional<String> newCodTcol = Stream.of(codTcols)
.filter(x -> x.getCodTcol().equalsIgnoreCase(mViewModel.codTcol.get()))
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
.findSingle();
if(newCodTcol.isPresent()) mViewModel.codTcol.set(newCodTcol.get());
}
codTcolArrayAdapter = new ArrayAdapter(mContext, R.layout.array_adapter_single_item);
codTcolArrayAdapter.addAll(codTcolDescriptions);
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
progressDialog.dismiss();
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
});
}
public class DialogInputPesoViewModel {
public BindableString codTcol = new BindableString();
public BindableString netWeight = new BindableString();
public BindableString grossWeight = new BindableString();
}
}

View File

@@ -0,0 +1,116 @@
package it.integry.integrywmsnative.view.dialogs.input_peso_lu;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.ArrayAdapter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.math.BigDecimal;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.databinding.DialogInputPesoLuBinding;
public class DialogInputPesoLuView extends DialogFragment {
private DialogInputPesoLuBinding mBindings;
private RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss;
public BindableString codTcol = new BindableString();
public BindableString netWeight = new BindableString();
public BindableString grossWeight = new BindableString();
private List<MtbTCol> codTcolList = null;
private ArrayAdapter<String> codTcolArrayAdapter = null;
public DialogInputPesoLuView(String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
this.onDialogDismiss = onDialogDismiss;
this.codTcol.set(codTcol);
this.netWeight.set(UtilityNumber.decimalToString(netWeight));
this.grossWeight.set(UtilityNumber.decimalToString(grossWeight));
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
mBindings = DialogInputPesoLuBinding.inflate(LayoutInflater.from(requireContext()), null, false);
mBindings.setView(this);
this.init();
var alertDialog = new MaterialAlertDialogBuilder(requireContext())
.setView(mBindings.getRoot())
.setCancelable(false)
.setPositiveButton(R.string.confirm, (dialog, which) -> {
String newCodTcol = null;
if(codTcol.get() != null) {
Optional<MtbTCol> newCodTcolOptional = Stream.of(codTcolList)
.filter(x -> (x.getCodTcol() + " - " + x.getDescrizione()).equalsIgnoreCase(codTcol.get()))
.findSingle();
if(newCodTcolOptional.isPresent()) newCodTcol = newCodTcolOptional.get().getCodTcol();
}
BigDecimal netWeightDecimal = new BigDecimal(netWeight.get());
BigDecimal grossWeightDecimal = new BigDecimal(grossWeight.get());
onDialogDismiss.run(newCodTcol, netWeightDecimal, grossWeightDecimal);
})
.create();
alertDialog.setCanceledOnTouchOutside(false);
return alertDialog;
}
private void init() {
// final DialogProgressView progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
MagazzinoRESTConsumer.getTipiColloStatic(codTcols -> {
this.codTcolList = codTcols;
List<String> codTcolDescriptions = Stream.of(codTcols)
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
.toList();
if(codTcol.get() != null) {
Optional<String> newCodTcol = Stream.of(codTcols)
.filter(x -> x.getCodTcol().equalsIgnoreCase(codTcol.get()))
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
.findSingle();
if(newCodTcol.isPresent()) codTcol.set(newCodTcol.get());
}
codTcolArrayAdapter = new ArrayAdapter(requireContext(), R.layout.array_adapter_single_item);
codTcolArrayAdapter.addAll(codTcolDescriptions);
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
// progressDialog.dismiss();
}, ex -> {
UtilityExceptions.defaultException(requireContext(), ex);
});
}
}

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