diff --git a/.gitignore b/.gitignore
index 39fb081a..00dcad77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,151 @@
+### Android ###
+# Built application files
+*.apk
+*.ap_
+*.aab
+# Files for the ART/Dalvik VM
+*.dex
+# Java class files
+*.class
+# Generated files
+bin/
+gen/
+out/
+release/
+# Gradle files
+.gradle/
+build/
+# Local configuration file (sdk path, etc)
+local.properties
+# Proguard folder generated by Eclipse
+proguard/
+# Log Files
+*.log
+# Android Studio Navigation editor temp files
+.navigation/
+# Android Studio captures folder
+captures/
+# IntelliJ
*.iml
-.gradle
-/local.properties
-/.idea/workspace.xml
-/.idea/libraries
-.DS_Store
-/build
-/captures
+.idea/workspace.xml
+.idea/tasks.xml
+.idea/gradle.xml
+.idea/assetWizardSettings.xml
+.idea/dictionaries
+.idea/libraries
+# Android Studio 3 in .gitignore file.
+.idea/caches
+.idea/modules.xml
+# Comment next line if keeping position of elements in Navigation Editor is relevant for you
+.idea/navEditor.xml
+# Keystore files
+# Uncomment the following lines if you do not want to check your keystore files in.
+#*.jks
+#*.keystore
+# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
+# Google Services (e.g. APIs or Firebase)
+# google-services.json
+# Freeline
+freeline.py
+freeline/
+freeline_project_description.json
+# fastlane
+fastlane/report.xml
+fastlane/Preview.html
+fastlane/screenshots
+fastlane/test_output
+fastlane/readme.md
+# Version control
+vcs.xml
+# lint
+lint/intermediates/
+lint/generated/
+lint/outputs/
+lint/tmp/
+# lint/reports/
+### Android Patch ###
+gen-external-apklibs
+output.json
+# Replacement of .externalNativeBuild directories introduced
+# with Android Studio 3.5.
+.cxx/
+### AndroidStudio ###
+# Covers files to be ignored for android development using Android Studio.
+# Built application files
+# Files for the ART/Dalvik VM
+# Java class files
+# Generated files
+# Gradle files
+.gradle
+# Signing files
+.signing/
+# Local configuration file (sdk path, etc)
+# Proguard folder generated by Eclipse
+# Log Files
+# Android Studio
+/*/build/
+/*/local.properties
+/*/out
+/*/*/build
+/*/*/production
+*.ipr
+*~
+*.swp
+# Android Patch
+# External native build folder generated in Android Studio 2.2 and later
+# NDK
+obj/
+# IntelliJ IDEA
+*.iws
+/out/
+# User-specific configurations
+.idea/caches/
+.idea/libraries/
+.idea/shelf/
+.idea/.name
+.idea/compiler.xml
+.idea/copyright/profiles_settings.xml
+.idea/encodings.xml
+.idea/misc.xml
+.idea/scopes/scope_settings.xml
+.idea/vcs.xml
+.idea/jsLibraryMappings.xml
+.idea/datasources.xml
+.idea/dataSources.ids
+.idea/sqlDataSources.xml
+.idea/dynamic.xml
+.idea/uiDesigner.xml
+# OS-specific files
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+# Legacy Eclipse project files
+.classpath
+.project
+.cproject
+.settings/
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+# Package Files #
+*.war
+*.ear
+# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
+hs_err_pid*
+## Plugin-specific files:
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+# JIRA plugin
+atlassian-ide-plugin.xml
+# Mongo Explorer plugin
+.idea/mongoSettings.xml
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+### AndroidStudio Patch ###
+!/gradle/wrapper/gradle-wrapper.jar
diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
deleted file mode 100644
index 96beb22f..00000000
--- a/.idea/assetWizardSettings.xml
+++ /dev/null
@@ -1,165 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
deleted file mode 100644
index 4be17c62..00000000
Binary files a/.idea/caches/build_file_checksums.ser and /dev/null differ
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index b557e853..ae78c113 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,33 +1,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
deleted file mode 100644
index 9aa69d84..00000000
--- a/.idea/dbnavigator.xml
+++ /dev/null
@@ -1,456 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
deleted file mode 100644
index 15a15b21..00000000
--- a/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
deleted file mode 100644
index b2777067..00000000
--- a/.idea/gradle.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 10118312..00000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 131e7827..00000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/app.xml b/.idea/runConfigurations/app.xml
index bf2ef1a7..b854e408 100644
--- a/.idea/runConfigurations/app.xml
+++ b/.idea/runConfigurations/app.xml
@@ -6,7 +6,7 @@
-
+
@@ -14,7 +14,7 @@
-
+
@@ -43,7 +43,7 @@
-
+
diff --git a/.idea/runConfigurations/app_saporiveri_pv.xml b/.idea/runConfigurations/app_saporiveri_pv.xml
new file mode 100644
index 00000000..75269e92
--- /dev/null
+++ b/.idea/runConfigurations/app_saporiveri_pv.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1ddf..00000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index c81850be..0295e055 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 93
- def appVersionName = '1.8.6'
+ def appVersionCode = 94
+ def appVersionName = '1.9.0'
signingConfigs {
release {
@@ -83,7 +83,7 @@ android {
abortOnError false
}
- dynamicFeatures = [":dynamic__base",":dynamic_vgalimenti",":dynamic_ime",":dynamic_frudis"]
+ dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv"]
}
@@ -95,16 +95,16 @@ dependencies {
})
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.orhanobut:logger:2.2.0'
- implementation 'com.google.firebase:firebase-core:17.2.0'
+ implementation 'com.google.firebase:firebase-core:17.2.1'
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.google.firebase:firebase-perf:19.0.1'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-beta01'
- implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta3'
implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'androidx.recyclerview:recyclerview:1.1.0-beta05'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0-rc01'
implementation 'androidx.preference:preference:1.1.0'
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
@@ -113,6 +113,7 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-runtime:2.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.1.0'
+ implementation 'org.apache.commons:commons-text:1.6'
//kapt "androidx.lifecycle:lifecycle-compiler:2.0.0"
implementation 'com.danielpuiu:ghostfish:2.0.0'
annotationProcessor "com.danielpuiu:ghostfish-compiler:2.0.0"
@@ -141,14 +142,21 @@ dependencies {
implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3'
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
+ //SQLite ROOM
+ def room_version = "2.2.1"
+
+ implementation "androidx.room:room-runtime:$room_version"
+ annotationProcessor "androidx.room:room-compiler:$room_version"
+
//AppUpdate
implementation 'com.github.javiersantos:AppUpdater:2.7'
//Barcode
implementation project(':pointmobilescannerlibrary')
implementation project(':zebrascannerlibrary')
- implementation project(path: ':barcode_base_library')
+ implementation project(path: ':barcode_base_android_library')
implementation project(path: ':honeywellscannerlibrary')
+ implementation project(':keyobardemulatorscannerlibrary')
}
repositories {
mavenCentral()
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e72614ee..9c827172 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,6 +18,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
+
appDb.clearAllTables()).start();
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java
index 477cd90c..da5608bf 100644
--- a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java
@@ -15,6 +15,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.core.context.MainContext;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.PermissionsHelper;
@@ -22,7 +23,7 @@ import it.integry.integrywmsnative.databinding.ActivitySplashBinding;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
-public class SplashActivity extends AppCompatActivity {
+public class SplashActivity extends BaseActivity {
private ActivitySplashBinding mBinding;
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java
index 5f6efa2d..e3bf14d4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java
@@ -26,7 +26,8 @@ public class CommonConst {
public static class Mail {
public static String[] forErrorsDebug = {
- "g.scorrano@integry.it"
+ "g.scorrano@integry.it",
+ "v.castellana@integry.it"
};
public static String[] forErrors = {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeCallbackDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeCallbackDTO.java
index a8b03bae..624f4b3c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeCallbackDTO.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeCallbackDTO.java
@@ -1,7 +1,7 @@
package it.integry.integrywmsnative.core.barcode_reader;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
public class BarcodeCallbackDTO {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java
index 4b8c5f2f..a66082b7 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/barcode_reader/BarcodeManager.java
@@ -1,6 +1,6 @@
package it.integry.integrywmsnative.core.barcode_reader;
-import android.content.Context;
+import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
@@ -8,11 +8,12 @@ import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
+import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
+import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
-import it.integry.plugins.barcode_base_library.exception.BarcodeAdapterNotFoundException;
-import it.integry.plugins.barcode_base_library.interfaces.BarcodeReaderInterface;
+import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader;
import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader;
import it.integry.zebrascannerlibrary.ZebraBarcodeReader;
@@ -29,7 +30,8 @@ public class BarcodeManager {
private static Class extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{
PointMobileBarcodeReader.class,
ZebraBarcodeReader.class,
- HoneyWellBarcodeReader.class
+ HoneyWellBarcodeReader.class,
+ KeyboardEmulatorBarcodeReader.class
};
@@ -55,7 +57,7 @@ public class BarcodeManager {
} catch (Exception e) {
- UtilityLogger.errorMe(e);
+ UtilityExceptions.defaultException(context,e);
}
}
@@ -97,6 +99,11 @@ public class BarcodeManager {
}
+ public static boolean onKeyDown(int keyCode, KeyEvent keyEvent){
+ mCurrentBarcodeInterface.onKeyEvent(keyEvent);
+ return true;
+ }
+
public static BarcodeReaderInterface getCurrentBarcodeInterface() {
return mCurrentBarcodeInterface;
}
@@ -146,4 +153,5 @@ public class BarcodeManager {
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
index 81277197..c0a37a6b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
@@ -8,7 +8,7 @@ import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavo
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
-import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.UltimiArriviFornitoreFragment;
+import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java
new file mode 100644
index 00000000..39dd708d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java
@@ -0,0 +1,51 @@
+package it.integry.integrywmsnative.core.data_store.db;
+
+import android.content.Context;
+
+import androidx.room.Database;
+import androidx.room.Room;
+import androidx.room.RoomDatabase;
+import androidx.room.TypeConverters;
+
+import it.integry.integrywmsnative.core.data_store.db.converter.DateConverter;
+import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
+import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
+import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
+import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+
+@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 1, exportSchema = false)
+@TypeConverters({
+ DateConverter.class
+})
+public abstract class AppDatabase extends RoomDatabase {
+
+ private static volatile AppDatabase INSTANCE;
+
+ public abstract ArticoloGrigliaDao articoloGrigliaDao();
+
+ public abstract GrigliaDao grigliaDao();
+
+ public abstract OrdineDao ordineDao();
+
+ public abstract ArticoloOrdineDao articoloOrdineDao();
+
+ public static AppDatabase getDatabase(final Context context) {
+ if (INSTANCE == null) {
+ synchronized (AppDatabase.class) {
+ if (INSTANCE == null) {
+ INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
+ AppDatabase.class, "integry_wms")
+ .fallbackToDestructiveMigration()
+ .build();
+ }
+ }
+ }
+ return INSTANCE;
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/converter/DateConverter.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/converter/DateConverter.java
new file mode 100644
index 00000000..60629f13
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/converter/DateConverter.java
@@ -0,0 +1,17 @@
+package it.integry.integrywmsnative.core.data_store.db.converter;
+
+import androidx.room.TypeConverter;
+
+import java.util.Date;
+
+public class DateConverter {
+ @TypeConverter
+ public static Date fromTimestamp(Long value) {
+ return value == null ? null : new Date(value);
+ }
+
+ @TypeConverter
+ public static Long dateToTimestamp(Date date) {
+ return date == null ? null : date.getTime();
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java
new file mode 100644
index 00000000..0a83e2df
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java
@@ -0,0 +1,36 @@
+package it.integry.integrywmsnative.core.data_store.db.dao;
+
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
+
+@Dao
+public interface ArticoloGrigliaDao {
+ @Query("SELECT * from articoli_griglia")
+ List getAll();
+ @Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia")
+ Integer getIdArticoloByGrigliaAndCodMart(int idGriglia, String codMart);
+
+ @Insert
+ void insertAll(List articoli);
+ @Insert
+ Long insert(ArticoloGriglia articolo);
+ @Update
+ void updateAll(List articoli);
+ @Update
+ void update(ArticoloGriglia articolo);
+
+ @Query("SELECT * FROM articoli_griglia WHERE bar_code = :barcode AND id_griglia = :idGriglia LIMIT 1")
+ ArticoloGriglia findArticoloByBarcodeAndGriglia(String barcode, int idGriglia);
+
+ @Query("SELECT * FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia LIMIT 1")
+ ArticoloGriglia findArticoloByCodMartAndGriglia(String codMart, int idGriglia);
+
+ @Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan )AND id_griglia = :idGriglia LIMIT 1")
+ ArticoloGriglia findArticoloByScanAndGriglia(String scan, int idGriglia);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java
new file mode 100644
index 00000000..fee0cfb1
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloOrdineDao.java
@@ -0,0 +1,53 @@
+package it.integry.integrywmsnative.core.data_store.db.dao;
+
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+
+@Dao
+public interface ArticoloOrdineDao {
+
+ @Query("SELECT * from articoli_ordine")
+ List getAll();
+
+ @Insert
+ void insertAll(List toInsert);
+
+ @Insert
+ void insert(ArticoloOrdine articolo);
+
+ @Query("SELECT * FROM articoli_ordine where bar_code = :barcode and id_ordine = :ordine LIMIT 1")
+ ArticoloOrdine findArticoloByOrdineAndBarcode(int ordine, String barcode);
+
+
+ @Update
+ void updateAll(List toUpdate);
+
+ @Update
+ void update(ArticoloOrdine articolo);
+
+ @Query("SELECT * FROM articoli_ordine where id_ordine = :ordineId")
+ List findArticoliByOrdine(int ordineId);
+
+ @Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1")
+ ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart);
+
+ @Query( " SELECT articoli_ordine.* " +
+ " FROM articoli_ordine " +
+ " LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " +
+ " WHERE " +
+ " (" +
+ " articoli_ordine.bar_code = :barcode" +
+ " OR articoli_griglia.bar_code = :barcode" +
+ " )" +
+ " AND articoli_ordine.id_ordine = :ordineId " +
+ " LIMIT 1")
+ ArticoloOrdine findArticoloByBarcodeAndOrdine(int ordineId, String barcode);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/GrigliaDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/GrigliaDao.java
new file mode 100644
index 00000000..8cdf61ed
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/GrigliaDao.java
@@ -0,0 +1,40 @@
+package it.integry.integrywmsnative.core.data_store.db.dao;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
+
+@Dao
+public interface GrigliaDao {
+ @Query("SELECT * from griglie")
+ List getAll();
+
+ @Query("SELECT *, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id")
+ GrigliaWrapper findByCodAlis(String codAlis);
+
+ @Insert
+ long insert(Griglia griglia);
+
+ @Update
+ void update(Griglia griglia);
+
+ @Insert
+ void insertAll(Griglia... griglie);
+
+ @Update
+ void updateAll(Griglia... griglie);
+
+ @Delete
+ void delete(Griglia griglia);
+
+ @Query("SELECT * from griglie where griglia_id = :idGriglia")
+ Griglia findGrigliaById(int idGriglia);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java
new file mode 100644
index 00000000..f4484d6f
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java
@@ -0,0 +1,30 @@
+package it.integry.integrywmsnative.core.data_store.db.dao;
+
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
+
+@Dao
+public interface OrdineDao {
+ @Query("SELECT * from ordini ")
+ List getAll();
+
+ @Query("SELECT ordini.*, griglie.* from ordini inner join griglie ON id_griglia = griglie.griglia_id where ordini.transmitted = 1")
+ List getAllTrasnmitted();
+
+ @Query("SELECT ordini.*, count(articolo_ordine_id) as countArticoli from ordini left join articoli_ordine ON ordini.ordine_id = articoli_ordine.id_ordine where ordini.transmitted = 0 and ordini.id_griglia = :idGriglia group by ordini.ordine_id")
+ List getAllOpenOrdersByGriglia(int idGriglia);
+
+ @Insert
+ Long insert(Ordine ordine);
+
+ @Update
+ void update(Ordine ordine);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java
new file mode 100644
index 00000000..5d1d42df
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java
@@ -0,0 +1,167 @@
+package it.integry.integrywmsnative.core.data_store.db.entity;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.ForeignKey;
+import androidx.room.Index;
+import androidx.room.PrimaryKey;
+
+import java.util.Date;
+
+@Entity(
+ tableName = "articoli_griglia",
+ indices = {
+ @Index(value = "id_griglia"),
+ },
+ foreignKeys = {
+ @ForeignKey(
+ entity = Griglia.class,
+ parentColumns = "griglia_id",
+ childColumns = "id_griglia",
+ onDelete = ForeignKey.CASCADE
+ )
+ }
+)
+public class ArticoloGriglia {
+ @PrimaryKey(autoGenerate = true)
+ @ColumnInfo(name = "articolo_griglia_id")
+ private int articoloGrigliaId;
+
+ @ColumnInfo(name = "cod_mart")
+ private String codMart;
+
+ @ColumnInfo(name = "descrizione")
+ private String descrizione;
+
+ @ColumnInfo(name = "unt_mis")
+ private String untMis;
+
+ @ColumnInfo(name = "qta_cnf")
+ private float qtaCnf;
+
+ @ColumnInfo(name = "bar_code")
+ private String barCode;
+
+ @ColumnInfo(name = "merce_da_ric")
+ private float merceDaRic;
+
+ @ColumnInfo(name = "media_sett")
+ private float mediaSett;
+
+ @ColumnInfo(name = "flag_qta_multipla")
+ private String flagQtaMultipla;
+
+ @ColumnInfo(name = "qta_min_ordinabile")
+ private float qtaMinOrdinabile;
+
+ @ColumnInfo(name = "id_griglia")
+ private int idGriglia;
+
+ public int getArticoloGrigliaId() {
+ return articoloGrigliaId;
+ }
+
+ public void setArticoloGrigliaId(int articoloGrigliaId) {
+ this.articoloGrigliaId = articoloGrigliaId;
+ }
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public void setCodMart(String codMart) {
+ this.codMart = codMart;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public void setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ }
+
+ public String getUntMis() {
+ return untMis;
+ }
+
+ public void setUntMis(String untMis) {
+ this.untMis = untMis;
+ }
+
+ public float getQtaCnf() {
+ return qtaCnf;
+ }
+
+ public void setQtaCnf(float qtaCnf) {
+ this.qtaCnf = qtaCnf;
+ }
+
+ public String getBarCode() {
+ return barCode;
+ }
+
+ public void setBarCode(String barCode) {
+ this.barCode = barCode;
+ }
+
+ public float getMerceDaRic() {
+ return merceDaRic;
+ }
+
+ public void setMerceDaRic(float merceDaRic) {
+ this.merceDaRic = merceDaRic;
+ }
+
+ public float getMediaSett() {
+ return mediaSett;
+ }
+
+ public void setMediaSett(float mediaSett) {
+ this.mediaSett = mediaSett;
+ }
+
+ public String getFlagQtaMultipla() {
+ return flagQtaMultipla;
+ }
+
+ public void setFlagQtaMultipla(String flagQtaMultipla) {
+ this.flagQtaMultipla = flagQtaMultipla;
+ }
+
+ public float getQtaMinOrdinabile() {
+ return qtaMinOrdinabile;
+ }
+
+ public void setQtaMinOrdinabile(float qtaMinOrdinabile) {
+ this.qtaMinOrdinabile = qtaMinOrdinabile;
+ }
+
+ public int getIdGriglia() {
+ return idGriglia;
+ }
+
+ public void setIdGriglia(int idGriglia) {
+ this.idGriglia = idGriglia;
+ }
+
+ public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
+ ArticoloOrdine articolo = new ArticoloOrdine();
+
+ articolo.setIdOrdine(ordine.getOrdineId());
+
+ articolo.setBarCode(this.getBarCode());
+ articolo.setCodMart(this.getCodMart());
+ articolo.setMediaSett(this.getMediaSett());
+ articolo.setFlagQtaMultipla(this.getFlagQtaMultipla());
+ articolo.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
+ articolo.setMerceDaRic(this.getMerceDaRic());
+ articolo.setQtaCnf(this.getQtaCnf());
+ articolo.setUntMis(this.getUntMis());
+ articolo.setDescrizione(this.getDescrizione());
+ articolo.setDataIns(new Date());
+ articolo.setQtaOrd(0);
+
+ return articolo;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java
new file mode 100644
index 00000000..6b0c8f16
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java
@@ -0,0 +1,170 @@
+package it.integry.integrywmsnative.core.data_store.db.entity;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.ForeignKey;
+import androidx.room.Index;
+import androidx.room.PrimaryKey;
+
+import java.util.Date;
+
+@Entity(
+ tableName = "articoli_ordine",
+ indices = {
+ @Index(value = "id_ordine"),
+ @Index(value = {"id_ordine","cod_mart"}, unique = true)
+ },
+ foreignKeys = {
+ @ForeignKey(
+ entity = Ordine.class,
+ parentColumns = "ordine_id",
+ childColumns = "id_ordine",
+ onDelete = ForeignKey.CASCADE
+ )
+ }
+ )
+public class ArticoloOrdine {
+ @PrimaryKey(autoGenerate = true)
+ @ColumnInfo(name = "articolo_ordine_id")
+ private int articoloOrdineId;
+
+ @ColumnInfo(name = "cod_mart")
+ private String codMart;
+
+ @ColumnInfo(name = "descrizione")
+ private String descrizione;
+
+ @ColumnInfo(name = "unt_mis")
+ private String untMis;
+
+ @ColumnInfo(name = "qta_cnf")
+ private float qtaCnf;
+
+ @ColumnInfo(name = "bar_code")
+ private String barCode;
+
+ @ColumnInfo(name = "merce_da_ric")
+ private float merceDaRic;
+
+ @ColumnInfo(name = "media_sett")
+ private float mediaSett;
+
+ @ColumnInfo(name = "flag_qta_multipla")
+ private String flagQtaMultipla;
+
+ @ColumnInfo(name = "qta_min_ordinabile")
+ private float qtaMinOrdinabile;
+
+ @ColumnInfo(name = "id_ordine")
+ private int idOrdine;
+
+ @ColumnInfo(name = "qta_ord")
+ private float qtaOrd;
+
+ @ColumnInfo(name = "data_ins")
+ private Date dataIns;
+
+ public int getArticoloOrdineId() {
+ return articoloOrdineId;
+ }
+
+ public void setArticoloOrdineId(int articoloOrdineId) {
+ this.articoloOrdineId = articoloOrdineId;
+ }
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public void setCodMart(String codMart) {
+ this.codMart = codMart;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public void setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ }
+
+ public String getUntMis() {
+ return untMis;
+ }
+
+ public void setUntMis(String untMis) {
+ this.untMis = untMis;
+ }
+
+ public float getQtaCnf() {
+ return qtaCnf;
+ }
+
+ public void setQtaCnf(float qtaCnf) {
+ this.qtaCnf = qtaCnf;
+ }
+
+ public String getBarCode() {
+ return barCode;
+ }
+
+ public void setBarCode(String barCode) {
+ this.barCode = barCode;
+ }
+
+ public float getMerceDaRic() {
+ return merceDaRic;
+ }
+
+ public void setMerceDaRic(float merceDaRic) {
+ this.merceDaRic = merceDaRic;
+ }
+
+ public float getMediaSett() {
+ return mediaSett;
+ }
+
+ public void setMediaSett(float mediaSett) {
+ this.mediaSett = mediaSett;
+ }
+
+ public String getFlagQtaMultipla() {
+ return flagQtaMultipla;
+ }
+
+ public void setFlagQtaMultipla(String flagQtaMultipla) {
+ this.flagQtaMultipla = flagQtaMultipla;
+ }
+
+ public float getQtaMinOrdinabile() {
+ return qtaMinOrdinabile;
+ }
+
+ public void setQtaMinOrdinabile(float qtaMinOrdinabile) {
+ this.qtaMinOrdinabile = qtaMinOrdinabile;
+ }
+
+ public int getIdOrdine() {
+ return idOrdine;
+ }
+
+ public void setIdOrdine(int idOrdine) {
+ this.idOrdine = idOrdine;
+ }
+
+ public float getQtaOrd() {
+ return qtaOrd;
+ }
+
+ public void setQtaOrd(float qtaOrd) {
+ this.qtaOrd = qtaOrd;
+ }
+
+ public Date getDataIns() {
+ return dataIns;
+ }
+
+ public void setDataIns(Date dataIns) {
+ this.dataIns = dataIns;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java
new file mode 100644
index 00000000..093507c0
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java
@@ -0,0 +1,67 @@
+package it.integry.integrywmsnative.core.data_store.db.entity;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.Ignore;
+import androidx.room.Index;
+import androidx.room.PrimaryKey;
+
+@Entity(tableName ="griglie",
+ indices = {
+ @Index(value = "cod_alis", unique = true)
+ }
+)
+public class Griglia {
+ @PrimaryKey(autoGenerate = true)
+ @ColumnInfo(name = "griglia_id")
+ private int grigliaId;
+ @ColumnInfo(name = "cod_alis")
+ private String codAlis;
+ @ColumnInfo(name = "descr_lisa")
+ private String descrLisa;
+ @ColumnInfo(name = "descr_depo")
+ private String descrDepo;
+ @Ignore
+ private int countArticoli = 0;
+
+
+ public int getGrigliaId() {
+ return grigliaId;
+ }
+
+ public void setGrigliaId(int grigliaId) {
+ this.grigliaId = grigliaId;
+ }
+
+ public String getCodAlis() {
+ return codAlis;
+ }
+
+ public void setCodAlis(String codAlis) {
+ this.codAlis = codAlis;
+ }
+
+ public String getDescrLisa() {
+ return descrLisa;
+ }
+
+ public void setDescrLisa(String descrLisa) {
+ this.descrLisa = descrLisa;
+ }
+
+ public String getDescrDepo() {
+ return descrDepo;
+ }
+
+ public void setDescrDepo(String descrDepo) {
+ this.descrDepo = descrDepo;
+ }
+
+ public int getCountArticoli() {
+ return countArticoli;
+ }
+
+ public void setCountArticoli(int countArticoli) {
+ this.countArticoli = countArticoli;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java
new file mode 100644
index 00000000..ae68bda0
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java
@@ -0,0 +1,151 @@
+package it.integry.integrywmsnative.core.data_store.db.entity;
+
+import androidx.annotation.Nullable;
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.Ignore;
+import androidx.room.PrimaryKey;
+
+import java.util.Date;
+
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+
+@Entity(tableName = "ordini")
+
+public class Ordine {
+
+ @PrimaryKey(autoGenerate = true)
+ @ColumnInfo(name = "ordine_id")
+ private int ordineId;
+
+ @ColumnInfo(name = "data_ins")
+ private Date dataIns;
+
+ @ColumnInfo(name = "annotazioni")
+ private String annotazioni;
+
+ @ColumnInfo(name = "transmitted")
+ private boolean transmitted = false;
+
+ @ColumnInfo(name = "transmission_date")
+ @Nullable
+ private Date transmissionDate;
+
+ @ColumnInfo(name = "gestione")
+ @Nullable
+ private String gestione;
+
+ @ColumnInfo(name = "data_ord")
+ @Nullable
+ private Date dataOrd;
+
+ @ColumnInfo(name = "num_ord")
+ @Nullable
+ private Integer numOrd;
+
+ @ColumnInfo(name = "cod_mdep")
+ @Nullable
+ private String codMdep;
+
+ @Ignore
+ private int countArticoli = 0;
+
+ @ColumnInfo(name = "id_griglia")
+ private int idGriglia;
+
+ public int getOrdineId() {
+ return ordineId;
+ }
+
+ public void setOrdineId(int ordineId) {
+ this.ordineId = ordineId;
+ }
+
+ public Date getDataIns() {
+ return dataIns;
+ }
+
+ public void setDataIns(Date dataIns) {
+ this.dataIns = dataIns;
+ }
+
+ public String getAnnotazioni() {
+ return annotazioni;
+ }
+
+ public void setAnnotazioni(String annotazioni) {
+ this.annotazioni = annotazioni;
+ }
+
+ public int getIdGriglia() {
+ return idGriglia;
+ }
+
+ public void setIdGriglia(int idGriglia) {
+ this.idGriglia = idGriglia;
+ }
+
+ public boolean isTransmitted() {
+ return transmitted;
+ }
+
+ public void setTransmitted(boolean transmitted) {
+ this.transmitted = transmitted;
+ }
+
+ @Nullable
+ public Date getTransmissionDate() {
+ return transmissionDate;
+ }
+
+ public void setTransmissionDate(@Nullable Date transmissionDate) {
+ this.transmissionDate = transmissionDate;
+ }
+
+ public int getCountArticoli() {
+ return countArticoli;
+ }
+
+ public void setCountArticoli(int countArticoli) {
+ this.countArticoli = countArticoli;
+ }
+
+ @Nullable
+ public String getGestione() {
+ return gestione;
+ }
+
+ public void setGestione(@Nullable String gestione) {
+ this.gestione = gestione;
+ }
+
+ @Nullable
+ public Date getDataOrd() {
+ return dataOrd;
+ }
+
+ public void setDataOrd(@Nullable Date dataOrd) {
+ this.dataOrd = dataOrd;
+ }
+
+ @Nullable
+ public Integer getNumOrd() {
+ return numOrd;
+ }
+
+ public void setNumOrd(@Nullable Integer numOrd) {
+ this.numOrd = numOrd;
+ }
+
+ @Nullable
+ public String getCodMdep() {
+ return codMdep;
+ }
+
+ public void setCodMdep(@Nullable String codMdep) {
+ this.codMdep = codMdep; }
+
+ public void setDataOrdS(String dataOrd) {
+ setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd));
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliGrigliaRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliGrigliaRepository.java
new file mode 100644
index 00000000..7929014a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliGrigliaRepository.java
@@ -0,0 +1,79 @@
+package it.integry.integrywmsnative.core.data_store.db.repository;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public class ArticoliGrigliaRepository extends Repository{
+
+ ArticoloGrigliaDao mRepository;
+
+ public ArticoliGrigliaRepository() {
+ this.mRepository = MainApplication.getArticoliGrigliaRepository();
+ }
+
+ public void saveArticoliToGriglia(List articoli, Runnable onSuccess, RunnableArgs onFail) {
+ execute(()->{
+ try{
+ List toUpdate = new ArrayList<>();
+ List toInsert = new ArrayList<>();
+ for (ArticoloGriglia art : articoli){
+ Integer id = mRepository.getIdArticoloByGrigliaAndCodMart(art.getIdGriglia(),art.getCodMart());
+ if (id != null){
+ art.setArticoloGrigliaId(id);
+ toUpdate.add(art);
+ }else{
+ toInsert.add(art);
+ }
+ }
+ mRepository.insertAll(toInsert);
+ mRepository.updateAll(toUpdate);
+ onSuccess.run();
+ }catch (Exception e){
+ onFail.run(e);
+ }
+ });
+ }
+
+ public void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia,RunnableArgs onSuccess, RunnableArgs onFail ){
+ execute(()->{
+ try{
+ onSuccess.run(mRepository.findArticoloByBarcodeAndGriglia(barcode, idGriglia));
+ }catch (Exception e){
+ onFail.run(e);
+ }
+ });
+ }
+ public void findArticoloByCodMartAndGriglia(String codMart, int idGriglia,RunnableArgs onSuccess, RunnableArgs onFail ){
+ execute(()->{
+ try{
+ onSuccess.run(mRepository.findArticoloByCodMartAndGriglia(codMart, idGriglia));
+ }catch (Exception e){
+ onFail.run(e);
+ }
+ });
+ }
+ public void findArticoloByScanAndGriglia(String scan, int idGriglia,RunnableArgs onSuccess, RunnableArgs onFail ){
+ execute(()->{
+ try{
+ ArticoloGriglia articolo = mRepository.findArticoloByCodMartAndGriglia(scan, idGriglia);
+ if (articolo == null){
+ articolo = mRepository.findArticoloByBarcodeAndGriglia(scan,idGriglia);
+ if (articolo==null){
+ String barcode= StringUtils.leftPad(scan,13,"0");
+ articolo = mRepository.findArticoloByBarcodeAndGriglia(barcode,idGriglia);
+ }
+ }
+ onSuccess.run(articolo);
+ }catch (Exception e){
+ onFail.run(e);
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliOrdineRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliOrdineRepository.java
new file mode 100644
index 00000000..57689e86
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliOrdineRepository.java
@@ -0,0 +1,97 @@
+package it.integry.integrywmsnative.core.data_store.db.repository;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public class ArticoliOrdineRepository extends Repository {
+
+ ArticoloOrdineDao mRepository;
+
+ public ArticoliOrdineRepository() {
+ this.mRepository = MainApplication.getArticoliOrdineRepository();
+ }
+
+ public void saveArticoliToOrdine(List articoli, Runnable onSuccess, RunnableArgs onFail) {
+ execute(() -> {
+ try {
+ List toUpdate = new ArrayList<>();
+ List toInsert = new ArrayList<>();
+ for (ArticoloOrdine art : articoli) {
+ if (art.getArticoloOrdineId() > 0) {
+ toUpdate.add(art);
+ } else {
+ toInsert.add(art);
+ }
+ }
+ mRepository.insertAll(toInsert);
+ mRepository.updateAll(toUpdate);
+ onSuccess.run();
+
+
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ });
+ }
+ public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs onFail) {
+ execute(() -> {
+ try {
+ if (articolo.getArticoloOrdineId() > 0) {
+ mRepository.update(articolo);
+ } else {
+ mRepository.insert(articolo);
+ }
+ onSuccess.run();
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ });
+ }
+
+ public void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) {
+ execute(() -> {
+ try {
+ ArticoloOrdine articolo = mRepository.findArticoloByOrdineAndBarcode(ordine.getOrdineId(), barcode);
+ onSuccess.run(articolo);
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ });
+ }
+public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) {
+ execute(() -> {
+ try {
+ String scannedCode = barcode;
+ ArticoloOrdine articolo = mRepository.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), scannedCode);
+ if (articolo == null){
+ articolo = mRepository.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
+ if (articolo == null){
+ scannedCode= StringUtils.leftPad(scannedCode,13,'0');
+ articolo = mRepository.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
+ }
+ }
+ onSuccess.run(articolo);
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ });
+ }
+
+ public void findArticoliByOrdine(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError) {
+ execute(() -> {
+ try {
+ onLoad.run(mRepository.findArticoliByOrdine(ordine.getOrdineId()));
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/GrigliaRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/GrigliaRepository.java
new file mode 100644
index 00000000..437d9e65
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/GrigliaRepository.java
@@ -0,0 +1,67 @@
+package it.integry.integrywmsnative.core.data_store.db.repository;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public class GrigliaRepository extends Repository{
+
+ private GrigliaDao mRepository;
+
+ public GrigliaRepository() {
+ this.mRepository = MainApplication.getGrigliaRepository();
+ }
+
+ public void selectAll(RunnableArgs> onSuccess, RunnableArgs onError){
+ Runnable query = ()->{
+ try{
+ onSuccess.run(mRepository.getAll());
+ }catch (Exception e){
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+
+ public void findByCodAlis(String codAlis , RunnableArgs onSuccess, RunnableArgs onError){
+ Runnable query = ()->{
+ try{
+ onSuccess.run(mRepository.findByCodAlis(codAlis));
+ }catch (Exception e){
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+
+
+ public void saveGriglia(Griglia griglia, RunnableArgs onSuccess,RunnableArgs onFail) {
+ execute(()->{
+ try{
+ if (griglia.getGrigliaId() <= 0){
+ griglia.setGrigliaId((int) mRepository.insert(griglia));
+ }else{
+ mRepository.update(griglia);
+ }
+ onSuccess.run(griglia.getGrigliaId());
+ }catch (Exception e){
+ onFail.run(e);
+ }
+ });
+ }
+
+ public void findGrigliaById(int idGriglia, RunnableArgs onLoad, RunnableArgs onFail) {
+ execute(()->{
+ try{
+ onLoad.run(mRepository.findGrigliaById(idGriglia));
+ }catch (Exception e){
+ onFail.run(e);
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/OrdineRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/OrdineRepository.java
new file mode 100644
index 00000000..6b220cd3
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/OrdineRepository.java
@@ -0,0 +1,75 @@
+package it.integry.integrywmsnative.core.data_store.db.repository;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public class OrdineRepository extends Repository{
+
+ private OrdineDao mRepository;
+
+ public OrdineRepository() {
+ this.mRepository = MainApplication.getOrdiniRepository();
+ }
+
+ public void selectAll(RunnableArgs> onSuccess, RunnableArgs onError){
+ Runnable query = ()->{
+ try{
+ onSuccess.run(mRepository.getAll());
+ }catch (Exception e){
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+ public void selectAllTransmitted(RunnableArgs> onSuccess, RunnableArgs onError){
+ Runnable query = ()->{
+ try{
+ onSuccess.run(mRepository.getAllTrasnmitted());
+ }catch (Exception e){
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+
+ public void selectAllOpenOrders(Griglia griglia, RunnableArgs> onSuccess, RunnableArgs onError){
+ Runnable query = ()->{
+ try{
+ onSuccess.run(mRepository.getAllOpenOrdersByGriglia(griglia.getGrigliaId()));
+ }catch (Exception e){
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+
+ public void insert(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError){
+ execute(()->{
+ try{
+ Long id = mRepository.insert(ordine);
+ onSuccess.run(id.intValue());
+ }catch (Exception e){
+ onError.run(e);
+ }
+ });
+ }
+
+
+ public void updateOrder(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError) {
+ execute(()->{
+ try{
+ mRepository.update(ordine);
+ onSuccess.run(ordine);
+ }catch (Exception e){
+ onError.run(e);
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/Repository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/Repository.java
new file mode 100644
index 00000000..7e8ec7ee
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/Repository.java
@@ -0,0 +1,9 @@
+package it.integry.integrywmsnative.core.data_store.db.repository;
+
+public class Repository {
+
+
+ public void execute(Runnable query){
+ new Thread(query).start();
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java
new file mode 100644
index 00000000..9dc95f6b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java
@@ -0,0 +1,119 @@
+package it.integry.integrywmsnative.core.data_store.db.view_model;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
+
+public class ArticoloDTO {
+
+ private String codMart;
+
+
+ private String descrizione;
+
+
+ private String untMis;
+
+
+ private float qtaCnf;
+
+
+ private String barcode;
+
+
+ private float merceDaRic;
+
+
+ private float mediaSett;
+
+
+ private String flagQtaMultipla;
+
+ private float qtaMinOrdinabile;
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public void setCodMart(String codMart) {
+ this.codMart = codMart;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public void setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ }
+
+ public String getUntMis() {
+ return untMis;
+ }
+
+ public void setUntMis(String untMis) {
+ this.untMis = untMis;
+ }
+
+ public float getQtaCnf() {
+ return qtaCnf;
+ }
+
+ public void setQtaCnf(float qtaCnf) {
+ this.qtaCnf = qtaCnf;
+ }
+
+ public String getBarCode() {
+ return barcode;
+ }
+
+ public void setBarCode(String barCode) {
+ this.barcode = barCode;
+ }
+
+ public float getMerceDaRic() {
+ return merceDaRic;
+ }
+
+ public void setMerceDaRic(float merceDaRic) {
+ this.merceDaRic = merceDaRic;
+ }
+
+ public float getMediaSett() {
+ return mediaSett;
+ }
+
+ public void setMediaSett(float mediaSett) {
+ this.mediaSett = mediaSett;
+ }
+
+ public String getFlagQtaMultipla() {
+ return flagQtaMultipla;
+ }
+
+ public void setFlagQtaMultipla(String flagQtaMultipla) {
+ this.flagQtaMultipla = flagQtaMultipla;
+ }
+
+ public float getQtaMinOrdinabile() {
+ return qtaMinOrdinabile;
+ }
+
+ public void setQtaMinOrdinabile(float qtaMinOrdinabile) {
+ this.qtaMinOrdinabile = qtaMinOrdinabile;
+ }
+
+
+ public ArticoloGriglia toArticoloGriglia(){
+ ArticoloGriglia result = new ArticoloGriglia();
+ result.setBarCode(this.getBarCode());
+ result.setDescrizione(this.getDescrizione());
+ result.setCodMart(this.getCodMart());
+ result.setUntMis(this.getUntMis());
+ result.setQtaCnf(this.getQtaCnf());
+ result.setMerceDaRic(this.getMerceDaRic());
+ result.setMediaSett(this.getMediaSett());
+ result.setFlagQtaMultipla(this.getFlagQtaMultipla());
+ result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
+
+ return result;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/GrigliaDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/GrigliaDTO.java
new file mode 100644
index 00000000..9c0b4184
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/GrigliaDTO.java
@@ -0,0 +1,36 @@
+package it.integry.integrywmsnative.core.data_store.db.view_model;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
+
+public class GrigliaDTO {
+ private String descrLisa;
+ private String descrDepo;
+ private List grigliaAcquistiChild;
+
+
+ public String getDescrLisa() {
+ return descrLisa;
+ }
+
+ public void setDescrLisa(String descrLisa) {
+ this.descrLisa = descrLisa;
+ }
+
+ public String getDescrDepo() {
+ return descrDepo;
+ }
+
+ public void setDescrDepo(String descrDepo) {
+ this.descrDepo = descrDepo;
+ }
+
+ public List getGrigliaAcquistiChild() {
+ return grigliaAcquistiChild;
+ }
+
+ public void setGrigliaAcquistiChild(List grigliaAcquistiChild) {
+ this.grigliaAcquistiChild = grigliaAcquistiChild;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java
new file mode 100644
index 00000000..e9c0a785
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java
@@ -0,0 +1,33 @@
+package it.integry.integrywmsnative.core.data_store.db.view_model;
+
+import androidx.room.Embedded;
+import androidx.room.Ignore;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.di.BindableBoolean;
+
+public class OrdineWithGriglia {
+
+ @Embedded
+ private Ordine ordine;
+ @Embedded
+ private Griglia griglia;
+
+
+ public Ordine getOrdine() {
+ return ordine;
+ }
+
+ public void setOrdine(Ordine ordine) {
+ this.ordine = ordine;
+ }
+
+ public Griglia getGriglia() {
+ return griglia;
+ }
+
+ public void setGriglia(Griglia griglia) {
+ this.griglia = griglia;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/GrigliaWrapper.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/GrigliaWrapper.java
new file mode 100644
index 00000000..0640a799
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/GrigliaWrapper.java
@@ -0,0 +1,28 @@
+package it.integry.integrywmsnative.core.data_store.db.wrappers;
+
+import androidx.room.Embedded;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+
+public class GrigliaWrapper {
+ @Embedded
+ private Griglia griglia;
+
+ private int countArticoli = 0;
+
+ public Griglia getGriglia() {
+ return griglia;
+ }
+
+ public void setGriglia(Griglia griglia) {
+ this.griglia = griglia;
+ }
+
+ public int getCountArticoli() {
+ return countArticoli;
+ }
+
+ public void setCountArticoli(int countArticoli) {
+ this.countArticoli = countArticoli;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/OrdineWrapper.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/OrdineWrapper.java
new file mode 100644
index 00000000..c50209b1
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/OrdineWrapper.java
@@ -0,0 +1,29 @@
+package it.integry.integrywmsnative.core.data_store.db.wrappers;
+
+import androidx.room.Embedded;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+
+public class OrdineWrapper {
+
+ @Embedded
+ private Ordine ordine;
+
+ private int countArticoli = 0;
+
+ public Ordine getOrdine() {
+ return ordine;
+ }
+
+ public void setOrdine(Ordine ordine) {
+ this.ordine = ordine;
+ }
+
+ public int getCountArticoli() {
+ return countArticoli;
+ }
+
+ public void setCountArticoli(int countArticoli) {
+ this.countArticoli = countArticoli;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
new file mode 100644
index 00000000..2169fd3c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
@@ -0,0 +1,20 @@
+package it.integry.integrywmsnative.core.expansion;
+
+import android.view.KeyEvent;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+
+public class BaseActivity extends AppCompatActivity {
+
+
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event) {
+ if (event.getDeviceId() != -1 && event.getDeviceId() != 0 && event.getAction() == KeyEvent.ACTION_DOWN){
+ BarcodeManager.onKeyDown(event.getKeyCode(),event);
+ return false;
+ }
+ return super.dispatchKeyEvent(event);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialog.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialog.java
new file mode 100644
index 00000000..11bfe361
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialog.java
@@ -0,0 +1,27 @@
+package it.integry.integrywmsnative.core.expansion;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.view.KeyEvent;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+
+public class BaseDialog extends Dialog {
+
+
+ public BaseDialog(@NonNull Context context) {
+ super(context);
+ }
+
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event) {
+ if (event.getDeviceId() != -1 && event.getDeviceId() != 0 && event.getAction() == KeyEvent.ACTION_DOWN){
+ BarcodeManager.onKeyDown(event.getKeyCode(),event);
+ return false;
+ }
+ return super.dispatchKeyEvent(event);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
index 0a4eeff4..34036200 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
@@ -1,10 +1,10 @@
package it.integry.integrywmsnative.core.rest.consumers;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
-import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
index 118e39ab..1d10f38f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
@@ -1,7 +1,6 @@
package it.integry.integrywmsnative.core.rest.consumers;
import android.app.Dialog;
-import android.app.ProgressDialog;
import android.content.Context;
import com.annimon.stream.Stream;
@@ -15,10 +14,8 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst;
-import it.integry.integrywmsnative.core.rest.RESTBuilder;
-import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
-import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbAart;
@@ -26,11 +23,13 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
+import it.integry.integrywmsnative.core.rest.RESTBuilder;
+import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
+import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityString;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java
new file mode 100644
index 00000000..5e438ca2
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java
@@ -0,0 +1,146 @@
+package it.integry.integrywmsnative.core.rest.consumers;
+
+import android.util.Log;
+
+import com.annimon.stream.Stream;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
+import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
+import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.DtbOrdt;
+import it.integry.integrywmsnative.core.rest.RESTBuilder;
+import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityLogger;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.OrdineDTO;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+import static br.com.zbra.androidlinq.Linq.stream;
+
+public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
+
+
+ public static void getArticoliListino(String codAlis, RunnableArgs onSuccess, RunnableArgs onFailed) {
+ PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
+ ordiniARestService
+ .getArticoliListino(codAlis, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
+ .enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "getArticoliListino", griglia -> {
+
+ List listaArticoli = new ArrayList<>();
+ Stream.of(griglia.getGrigliaAcquistiChild())
+ .map(ArticoloDTO::getCodMart)
+ .distinct()
+ .withoutNulls()
+ .forEach(art -> {
+ List inList = Stream.of(griglia.getGrigliaAcquistiChild()).filter(x -> x.getCodMart().equalsIgnoreCase(art)).toList();
+ if (inList.size() > 1) {
+ for (ArticoloDTO articolo : inList) {
+ if (!articolo.getBarCode().endsWith(articolo.getCodMart())) {
+ listaArticoli.add(articolo);
+ }
+ }
+ } else {
+ listaArticoli.add(inList.get(0));
+ }
+ });
+ griglia.setGrigliaAcquistiChild(listaArticoli);
+ onSuccess.run(griglia);
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ Log.e("getArticoliListino_pv", t.toString());
+ UtilityLogger.errorMe(new Exception(t));
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+ public static void saveOrdine(Ordine ordine, List articoli, Griglia griglia, RunnableArgs onSuccess, RunnableArgs onFailed) {
+ SaveDTO saveDTO = new SaveDTO();
+ OrdineDTO ordineDTO = new OrdineDTO();
+ List artRows = new ArrayList<>();
+
+ int i = 0;
+ for (ArticoloOrdine art : articoli) {
+ i++;
+ artRows.add(convertArtToDTO(art,i));
+ }
+
+ ordineDTO.setChiaveGriglia(griglia.getCodAlis());
+ ordineDTO.setDataConsD(new Date());
+ ordineDTO.setArtRows(artRows);
+ saveDTO.setGestione("O");
+ saveDTO.setOrdineDTO(ordineDTO);
+
+
+ PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
+ ordiniARestService
+ .saveOrdine(saveDTO, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
+ .enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ if (response.body() != null && response.body().size() > 0){
+ analyzeListOfAnswers(response, "getArticoliListino", dtoList-> {
+ if (dtoList.size() > 0){
+ DtbOrdt dto = dtoList.get(0);
+ ordine.setTransmitted(true);
+ ordine.setTransmissionDate(new Date());
+ ordine.setGestione(dto.getGestione());
+ ordine.setDataOrdS(dto.getDataOrd());
+ ordine.setCodMdep(dto.getCodMdep());
+ ordine.setNumOrd(dto.getNumOrd());
+ OrdineRepository repository = new OrdineRepository();
+ repository.updateOrder(ordine,onSuccess,onFailed);
+ }else{
+ onFailed.run(new Exception("Nessun ordine generato"));
+ }
+ }, onFailed);
+ }
+ }
+
+ @Override
+ public void onFailure(Call>>call, Throwable t) {
+ Log.e("saveOrdineTerminale_pv", t.toString());
+ UtilityLogger.errorMe(new Exception(t));
+ onFailed.run(new Exception(t));
+ }
+ });
+
+
+
+ }
+
+ private static ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) {
+ ArtDTO dto = new ArtDTO();
+ dto.setRigaOrd(rigaOrd);
+ dto.setCodMart(art.getCodMart());
+ dto.setBarcode(art.getBarCode());
+ dto.setDescrizione(art.getDescrizione());
+ dto.setDataInsD(art.getDataIns());
+ dto.setUntMis(art.getUntMis());
+ dto.setQta(BigDecimal.valueOf(art.getQtaOrd()));
+ dto.setQtaCnf(BigDecimal.valueOf(art.getQtaCnf()));
+ dto.setColli(BigDecimal.ZERO);
+ return dto;
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java
new file mode 100644
index 00000000..30ff9292
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java
@@ -0,0 +1,22 @@
+package it.integry.integrywmsnative.core.rest.consumers;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO;
+import it.integry.integrywmsnative.core.model.DtbOrdt;
+import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.Header;
+import retrofit2.http.POST;
+import retrofit2.http.Query;
+
+public interface PVOrdiniAcquistoRESTConsumerService {
+
+ @POST("SM2GetElencoArticoli")
+ Call> getArticoliListino(@Query("chiaveGriglia") String codAlis, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password);
+
+ @POST("SM2SaveTerminalino")
+ Call>> saveOrdine(@Body SaveDTO saveDTO, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java
index ba413697..9257eefb 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java
@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import android.util.Log;
+import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.rest.CommonRESTException;
@@ -14,11 +15,11 @@ import retrofit2.Response;
public class _BaseRESTConsumer {
- public static void analyzeAnswer(Response> response, String logTitle, final ISimpleOperationCallback callback){
- if(response.isSuccessful()) {
- if(response.body() != null) {
- if(response.body().getEsito() == EsitoType.OK) {
- if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){
+ public static void analyzeAnswer(Response> response, String logTitle, final ISimpleOperationCallback callback) {
+ if (response.isSuccessful()) {
+ if (response.body() != null) {
+ if (response.body().getEsito() == EsitoType.OK) {
+ if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
callback.onFailed(new Exception(response.body().getErrorMessage()));
} else {
@@ -43,7 +44,7 @@ public class _BaseRESTConsumer {
}
}
- public static void analyzeAnswer(Response> response, String logTitle, RunnableArgs onComplete, RunnableArgs onFailed){
+ public static void analyzeAnswer(Response> response, String logTitle, RunnableArgs onComplete, RunnableArgs onFailed) {
analyzeAnswer(response, logTitle, new ISimpleOperationCallback() {
@Override
public void onSuccess(T value) {
@@ -58,11 +59,11 @@ public class _BaseRESTConsumer {
}
- public static void analyzeAnswerList(Response> response, String logTitle, final ISimpleOperationCallback> callback){
- if(response.isSuccessful()) {
- if(response.body() != null) {
- if(response.body().getEsito() == EsitoType.OK) {
- if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){
+ public static void analyzeAnswerList(Response> response, String logTitle, final ISimpleOperationCallback> callback) {
+ if (response.isSuccessful()) {
+ if (response.body() != null) {
+ if (response.body().getEsito() == EsitoType.OK) {
+ if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
callback.onFailed(new Exception(response.body().getErrorMessage()));
} else {
@@ -84,7 +85,7 @@ public class _BaseRESTConsumer {
}
}
- public static void analyzeAnswerList(Response> response, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed){
+ public static void analyzeAnswerList(Response> response, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed) {
analyzeAnswerList(response, logTitle, new ISimpleOperationCallback>() {
@Override
public void onSuccess(List value) {
@@ -98,4 +99,35 @@ public class _BaseRESTConsumer {
});
}
+ public static void analyzeListOfAnswers(Response>> responseList, String logTitle, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ if (responseList.isSuccessful()) {
+ if (responseList.body() != null) {
+ List analyzedList = new ArrayList<>();
+ for (ServiceRESTResponse response : responseList.body()){
+ if (response.getEsito() == EsitoType.OK) {
+ if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) {
+ onFailed.run(new Exception(response.getErrorMessage()));
+ } else {
+ T dataObj = response.getDto() != null ?
+ response.getDto() :
+ response.getEntity();
+ if (dataObj !=null ) analyzedList.add(dataObj);
+
+ }
+ } else {
+ Log.e(logTitle, response.getErrorMessage());
+ onFailed.run(CommonRESTException.tryRecognizeException(response.getErrorMessage()));
+ return;
+ }
+ }
+ onComplete.run(analyzedList);
+ } else {
+ Log.e(logTitle, responseList.message());
+ onFailed.run(new Exception(responseList.message()));
+ }
+ } else {
+ Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message());
+ onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message()));
+ }
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
index 88a572ac..c4b53366 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
@@ -4,10 +4,10 @@ import com.annimon.stream.Stream;
import java.util.Calendar;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeType;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.settings.SettingsManager;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
-import it.integry.plugins.barcode_base_library.model.BarcodeType;
public class UtilityBarcode {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java
index 6ac2a5e2..23faedda 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityProgress.java
@@ -20,6 +20,11 @@ public class UtilityProgress {
progress.show();
return progress;
}
+ public static Dialog createDefaultProgressDialog(Context mContext,String subtitle) {
+ Dialog progress = DialogProgress.make(mContext,subtitle);
+ progress.show();
+ return progress;
+ }
public static Thread makeProgressBarIndeterminate(ProgressBar progressBar) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java
index 7c41cb75..4d111d95 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java
@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.utility;
+import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.SettingsModel;
@@ -9,7 +10,7 @@ public class UtilitySettings {
public static void logout(){
SettingsManager.i().user = null;
SettingsManager.i().userSession = null;
-
+ MainApplication.clearDB();
SettingsManager.update();
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java
index 9fc4607c..e1095e65 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java
@@ -11,6 +11,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
@@ -26,7 +27,7 @@ import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.viewmodel.Ac
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
-public class AccettazioneOrdineInevasoActivity extends AppCompatActivity {
+public class AccettazioneOrdineInevasoActivity extends BaseActivity {
public ActivityAccettazioneOrdineInevasoBinding bindings;
private AccettazioneOrdineAccettazioneInevasoViewModel mAccettazioneOrdineInevasoViewModel;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoOrderBy.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoOrderBy.java
index 1681de70..867563c4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoOrderBy.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoOrderBy.java
@@ -9,7 +9,7 @@ public class AccettazioneOrdineInevasoOrderBy {
public static String[] descriptions = new String[] {
"Cod articolo fornitore",
"Descrizione articolo",
- "Commessa - Articolo"
+ "Commessa - ArticoloGriglia"
};
public enum Enum {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java
index 53aca59d..4fb27caf 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java
@@ -54,7 +54,7 @@ import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBot
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import static br.com.zbra.androidlinq.Linq.stream;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java
index 2c75f894..4632345a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java
@@ -8,13 +8,14 @@ import android.content.Intent;
import android.os.Bundle;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.databinding.ActivityContenutoBancaleBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel.ContenutoBancaleViewModel;
-public class ContenutoBancaleActivity extends AppCompatActivity {
+public class ContenutoBancaleActivity extends BaseActivity {
public ActivityContenutoBancaleBinding bindings;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java
index b034afea..6cff0929 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java
@@ -10,6 +10,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.model.MtbColt;
@@ -17,7 +18,7 @@ import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel;
-public class ListaBancaliActivity extends AppCompatActivity {
+public class ListaBancaliActivity extends BaseActivity {
private static class Key {
private static final String MtbColtsKey = "mtbColtsKey";
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java
index 4ee41cf6..4f4f53e9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java
@@ -6,11 +6,12 @@ import android.os.Bundle;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.context.MainContext;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.utility.UtilityWindow;
import it.integry.integrywmsnative.databinding.ActivityLoginBinding;
import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel;
-public class LoginActivity extends AppCompatActivity {
+public class LoginActivity extends BaseActivity {
private MainContext mainContext = new MainContext(this);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java
index a3a9e88f..3498a8d7 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java
@@ -58,7 +58,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class PickingLiberoViewModel implements IRecyclerItemClicked {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java
index ff6f589f..36df77da 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
@@ -48,9 +49,9 @@ import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShould
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
-public class PickingResiActivity extends AppCompatActivity implements IOnColloClosedCallback {
+public class PickingResiActivity extends BaseActivity implements IOnColloClosedCallback {
private List mDocumentiResiList;
public ObservableList mDtbDocrList;
@@ -281,47 +282,6 @@ public class PickingResiActivity extends AppCompatActivity implements IOnColloC
.setCanPartitaMagBeChanged(false)
.setMaxQta(qtaDaEvadere);
-// if(item.getTempPickData() != null) {
-// PickingObjectDTO.PickData tmpPickData = item.getTempPickData();
-//
-// if(!UtilityString.isNullOrEmpty(tmpPickData.getBatchLot())) {
-// dto.setBatchLot(tmpPickData.getBatchLot());
-// }
-//
-// if(tmpPickData.getDataScad() != null){
-// dto.setDataScad(tmpPickData.getDataScad());
-// dto.setShouldAskDataScad(true);
-// }
-//
-// boolean useQtaDaEvadere;
-//
-// if(tmpPickData.getQtaTot() != null) {
-// useQtaDaEvadere = qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && item.getMtbAart().isFlagQtaCnfFissa();
-// if(useQtaDaEvadere){
-// dto.setQtaTot(qtaDaEvadere);
-// dto.setMaxQta(qtaDaEvadere);
-// } else {
-// dto.setQtaTot(tmpPickData.getQtaTot());
-// dto.setMaxQta(tmpPickData.getQtaTot());
-// dto.setQtaCnf(tmpPickData.getQtaTot());
-// }
-//
-//
-// if (tmpPickData.getQtaCnf() != null && useQtaDaEvadere) {
-// dto.setQtaCnf(tmpPickData.getQtaCnf());
-// }
-// }
-//
-//
-// if(dto.getQtaTot() != null && dto.getQtaTot().floatValue() > 0 && dto.getQtaCnf() != null && dto.getQtaCnf().floatValue() > 0) {
-// dto.setNumCnf(dto.getQtaTot().divide(dto.getQtaCnf()).intValue());
-// }
-//
-//
-// dto.setCanPartitaMagBeChanged(false);
-// dto.setCanDataScadBeChanged(false);
-//
-// }
DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
onOrdineRowDispatched(item, quantityDTO, closeUL);
@@ -350,7 +310,8 @@ public class PickingResiActivity extends AppCompatActivity implements IOnColloC
.setSerDoc(item.getSerDoc())
.setNumDoc(item.getNumDoc())
.setDataDoc(item.getDataDocS())
- .setIdRigaDoc(item.getIdRiga());
+ .setIdRigaDoc(item.getIdRiga())
+ .setCodJcom(item.getCodJcom());
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzato.java
index 65e04b93..58d97159 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzato.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/dialog/DialogOrdineProduzioneFiltroAvanzato.java
@@ -1,6 +1,6 @@
package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog;
-import android.app.AlertDialog;
+import androidx.appcompat.app.AlertDialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
@@ -111,6 +111,7 @@ public class DialogOrdineProduzioneFiltroAvanzato {
viewModel.numOrds.refresh();
+ viewModel.codJcoms.refresh();
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java
index 858e3042..120d1d0a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java
@@ -151,7 +151,7 @@ public class ProdOrdineLavorazioneElencoFragment extends Fragment implements ITi
public void refreshOrdini(List ordini) {
mRenderedOrderList.clear();
- mRenderedOrderList.addAll(ordini);
+ if (ordini != null && ordini.size() > 0) mRenderedOrderList.addAll(ordini);
}
private void initRecyclerView() {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java
index 428cd6b9..eeec67d8 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java
@@ -49,7 +49,7 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class ProdRecuperoMaterialeViewModel {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java
new file mode 100644
index 00000000..43077dc7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java
@@ -0,0 +1,179 @@
+package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit;
+
+import android.app.Dialog;
+import android.os.Bundle;
+import android.text.Html;
+import android.text.SpannableString;
+import android.view.View;
+import android.widget.Toast;
+
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+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.data_cache.DataCache;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
+import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.databinding.ActivityPvordineAcquistoEditBinding;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAcquistoArtListAdapter;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
+import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
+
+public class PVOrdineAcquistoEditActivity extends BaseActivity {
+
+ private Ordine mOrdine;
+ private Griglia mGriglia;
+ private List mArticoli = new ArrayList<>();
+ private PVEditOrderHelper mhelper;
+ private ActivityPvordineAcquistoEditBinding mBinding;
+ private int mBarcodeScannerIstanceID;
+ private OrdineAcquistoArtListAdapter mAdapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mhelper = new PVEditOrderHelper(this);
+ mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pvordine_acquisto_edit);
+ mBinding.setViewModel(this);
+ mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine"));
+ if (mOrdine.isTransmitted()){
+ Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
+ closeEdit();
+ }
+ String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+ mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
+ initRecyclerView();
+ fetchDetails();
+ mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
+ .setOnScanSuccessfull(this::onScanSuccessful)
+ .setOnScanFailed(this::handleException));
+
+ }
+
+ private void initRecyclerView() {
+ mBinding.articoliOrdineList.setHasFixedSize(true);
+
+ mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this));
+
+ DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
+ itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
+ mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
+ mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::addArticolo);
+ mBinding.articoliOrdineList.setAdapter(mAdapter);
+ }
+
+ private void handleException(Exception ex) {
+ runOnUiThread(()->{
+ BarcodeManager.enable();
+ UtilityExceptions.defaultException(this, ex, false);
+ });
+ }
+
+ private void onScanSuccessful(BarcodeScanDTO dto) {
+ BarcodeManager.disable();
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
+ mhelper.checkArticolo(
+ mOrdine,
+ dto.getStringValue(),
+ articoloOrdine -> {
+ progress.dismiss();
+ addArticolo(articoloOrdine);
+ },
+ e -> {
+ progress.dismiss();
+ handleException(e);
+ }
+ );
+ }
+
+ private void addArticolo(ArticoloOrdine articoloOrdine) {
+ runOnUiThread(()->{
+ EditArticoloDialog.make(this, articoloOrdine, articolo -> {
+ BarcodeManager.enable();
+ if (articolo == null) {
+ Toast.makeText(this, "Inserimento articolo annullato", Toast.LENGTH_SHORT).show();
+ } else {
+ fetchArticoli();
+ }
+ }).show();
+ });
+ }
+
+ private void fetchDetails() {
+ fetchGriglia();
+ fetchArticoli();
+ }
+
+ private void fetchGriglia() {
+ mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> {
+ runOnUiThread(()->{
+ mGriglia = griglia;
+ mBinding.codAlis.setText(mGriglia.getCodAlis());
+ });
+ }, this::handleException);
+ }
+
+ private void fetchArticoli() {
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
+ mhelper.loadArticoli(mOrdine, articoli -> {
+ progress.dismiss();
+ mArticoli = articoli;
+ runOnUiThread(()->{
+ mAdapter.updateItems(mArticoli);
+ mBinding.countArtOrd.setText(String.valueOf(mArticoli.size()));
+ mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.VISIBLE : View.GONE);
+ });
+ }, this::handleException);
+ }
+
+ public void closeEdit() {
+ onBackPressed();
+ }
+
+ public void exportOrdine() {
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
+ PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine , mArticoli,mGriglia,(ordine)->{
+ progress.dismiss();
+ runOnUiThread(()-> {
+ Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
+ onBackPressed();
+ });
+ },e-> runOnUiThread(()-> {
+ progress.dismiss();
+ UtilityExceptions.defaultException(this,e);
+ }));
+ }
+
+ @Override
+ public void onBackPressed() {
+ BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
+ super.onBackPressed();
+ }
+
+ private void showDataSavedDialog() {
+
+ DialogSimpleMessageHelper.makeSuccessDialog(
+ this,
+ getString(R.string.completed),
+ new SpannableString(getString(R.string.data_saved)),
+ null, null).show();
+
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java
new file mode 100644
index 00000000..ed070376
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/adapter/OrdineAcquistoArtListAdapter.java
@@ -0,0 +1,125 @@
+package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter;
+
+import android.content.Context;
+import android.text.Html;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.annimon.stream.Stream;
+import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
+import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding;
+import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding;
+import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
+
+public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider {
+
+
+ private Context mContext;
+
+ private List mDataset;
+ RunnableArgs mOnItemSelect;
+
+
+ static class SubheaderHolder extends RecyclerView.ViewHolder {
+
+ FragmentPvOrdiniAcquistoListHeaderBinding binding;
+
+ SubheaderHolder(FragmentPvOrdiniAcquistoListHeaderBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ }
+
+ static class SingleItemViewHolder extends RecyclerView.ViewHolder {
+
+ FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding;
+
+ SingleItemViewHolder(FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+ }
+
+
+ public OrdineAcquistoArtListAdapter(Context context, List myDataset, RunnableArgs onItemSelect) {
+ mContext = context;
+ mDataset = orderItems(myDataset);
+ mOnItemSelect = onItemSelect;
+ }
+
+ public void updateItems(List updatedDataset) {
+ mDataset.clear();
+ mDataset.addAll(orderItems(updatedDataset));
+ notifyDataSetChanged();
+ notifyDataChanged();
+ }
+
+
+ private List orderItems(List dataset) {
+ return Stream.of(dataset)
+ .distinctBy(ArticoloOrdine::getArticoloOrdineId)
+ .sortBy(x -> UtilityDate.formatDate(x.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
+ .toList();
+
+ }
+
+
+ @Override
+ public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
+ FragmentPvOrdiniAcquistoListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_header, parent, false);
+ return new SubheaderHolder(binding);
+ }
+
+ @Override
+ public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
+ FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_articoli_ordine_acquisto__list_single_item, parent, false);
+ return new SingleItemViewHolder(binding);
+ }
+
+
+ @Override
+ public void onBindSubheaderViewHolder(OrdineAcquistoArtListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
+ subheaderHolder.binding.title.setText(mContext.getString(R.string.ordini_a_aperti));
+ }
+
+ @Override
+ public void onBindItemViewHolder(OrdineAcquistoArtListAdapter.SingleItemViewHolder h, int itemPosition) {
+ final ArticoloOrdine articoloOrdine = mDataset.get(itemPosition);
+ final OrdineAcquistoArtListAdapter.SingleItemViewHolder holder = h;
+
+ holder.binding.setArticolo(articoloOrdine);
+ holder.binding.getRoot().setOnClickListener(v -> mOnItemSelect.run(articoloOrdine));
+
+ }
+
+
+ @Override
+ public boolean onPlaceSubheaderBetweenItems(int position) {
+ return false;
+ }
+
+ @Override
+ public int getItemSize() {
+ return mDataset.size();
+ }
+
+ @Override
+ public String getSectionTitle(int position) {
+ return null;
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java
new file mode 100644
index 00000000..a44fe39b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java
@@ -0,0 +1,149 @@
+package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog;
+
+import android.app.Activity;
+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 androidx.databinding.DataBindingUtil;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
+import it.integry.integrywmsnative.core.expansion.BaseDialog;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityDialog;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
+
+public class EditArticoloDialog {
+
+ private Activity mContext;
+
+ private Dialog mDialog;
+
+ private DialogPvEditArticoloBinding mBinding;
+
+ private PVEditOrderHelper mHelper;
+
+ private ArticoloOrdine mArticolo;
+
+ private ArticoloOrdine mSavedArt;
+
+ private boolean mLockedInput = false;
+
+ private EditArticoloDialog(Activity context, ArticoloOrdine articolo, RunnableArgs onDialogDismiss) {
+ mContext = context;
+ mArticolo = articolo;
+ mHelper = new PVEditOrderHelper(context);
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false);
+ mBinding.setViewmodel(this);
+
+ mDialog = new BaseDialog(context);
+ mDialog.setContentView(mBinding.getRoot());
+ UtilityDialog.setTo90PercentSize(mContext, mDialog);
+ mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+ mBinding.qtaTot.setText(String.valueOf(mArticolo.getQtaOrd()));
+ mSavedArt = null;
+
+ mDialog.setOnDismissListener(dialog -> {
+ onDialogDismiss.run(mSavedArt);
+ });
+ setListeners();
+ }
+
+ private void setListeners() {
+ mBinding.qtaTot.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) {
+ setQtaOrd(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0);
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ }
+ });
+ mBinding.qtaCnf.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) {
+ setQtaCnf(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0);
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+
+ }
+ });
+ }
+ public void setQtaCnf(float qtaCnf){
+ if (mLockedInput){
+ mLockedInput = false;
+ }else{
+ mLockedInput = true;
+
+ float qtaTot = qtaCnf * mArticolo.getQtaCnf();
+ mBinding.qtaTot.setText(String.valueOf(qtaTot));
+ }
+ }
+ public void setQtaOrd(float qtaOrd){
+ mArticolo.setQtaOrd(qtaOrd);
+ if (mLockedInput){
+ mLockedInput = false;
+ }else{
+ mLockedInput = true;
+ float qtaCnf = qtaOrd / mArticolo.getQtaCnf();
+ mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
+ }
+ }
+
+ public static Dialog make(Activity context, ArticoloOrdine articolo, RunnableArgs onDialogDismiss) {
+ return new EditArticoloDialog(context, articolo, onDialogDismiss).mDialog;
+ }
+
+ public void saveAndExit(){
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
+ try{
+ float qtaOrd = Float.parseFloat(mBinding.qtaTot.getText().toString());
+ if (qtaOrd <= 0){
+ throw new Exception("La quantità ordinata deve essere maggiore di 0");
+ }
+ mArticolo.setQtaOrd(qtaOrd);
+
+ }catch (Exception e){
+ mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e));
+ }
+ mHelper.saveArticoloToOrdine(mArticolo, ()->{
+ mSavedArt = mArticolo;
+ progress.dismiss();
+ mDialog.dismiss();
+ },e-> mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e)));
+ }
+
+ public ArticoloOrdine getArticolo() {
+ return mArticolo;
+ }
+
+ public void cancel() {
+ mArticolo = null;
+ mDialog.dismiss();
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java
new file mode 100644
index 00000000..1a8d5d9e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/ArtDTO.java
@@ -0,0 +1,134 @@
+package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+
+public class ArtDTO {
+ private Integer rigaOrd;
+
+ private String codMart;
+
+ private String barcode;
+
+ private String descrizione;
+
+ private String dataIns;
+
+ private String untMis;
+
+ private BigDecimal qta;
+
+ private BigDecimal qtaCnf;
+
+ private BigDecimal colli;
+
+ private String partitaMag;
+
+ private String dataScad;
+
+ public Integer getRigaOrd() {
+ return rigaOrd;
+ }
+
+ public void setRigaOrd(Integer rigaOrd) {
+ this.rigaOrd = rigaOrd;
+ }
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public void setCodMart(String codMart) {
+ this.codMart = codMart;
+ }
+
+ public String getBarcode() {
+ return barcode;
+ }
+
+ public void setBarcode(String barcode) {
+ this.barcode = barcode;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public void setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ }
+
+ public String getDataIns() {
+ return dataIns;
+ }
+ public Date getDataInsD() {
+ return UtilityDate.recognizeDateWithExceptionHandler(getDataIns());
+ }
+
+ public void setDataIns(String dataIns) {
+ this.dataIns = dataIns;
+ }
+ public void setDataInsD(Date dataIns) {
+ setDataIns(UtilityDate.formatDate(dataIns, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
+ }
+
+
+ public String getUntMis() {
+ return untMis;
+ }
+
+ public void setUntMis(String untMis) {
+ this.untMis = untMis;
+ }
+
+ public BigDecimal getQta() {
+ return qta;
+ }
+
+ public void setQta(BigDecimal qta) {
+ this.qta = qta;
+ }
+
+ public BigDecimal getQtaCnf() {
+ return qtaCnf;
+ }
+
+ public void setQtaCnf(BigDecimal qtaCnf) {
+ this.qtaCnf = qtaCnf;
+ }
+
+ public BigDecimal getColli() {
+ return colli;
+ }
+
+ public void setColli(BigDecimal colli) {
+ this.colli = colli;
+ }
+
+ public String getPartitaMag() {
+ return partitaMag;
+ }
+
+ public void setPartitaMag(String partitaMag) {
+ this.partitaMag = partitaMag;
+ }
+
+ public String getDataScad() {
+ return dataScad;
+ }
+
+ public void setDataScad(String dataScad) {
+ this.dataScad = dataScad;
+ }
+ public Date getDataScadD() {
+ return UtilityDate.recognizeDateWithExceptionHandler(getDataScad());
+ }
+
+ public void setDataScadD(Date dataScad) {
+ setDataScad(UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/OrdineDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/OrdineDTO.java
new file mode 100644
index 00000000..1fe38bb4
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/OrdineDTO.java
@@ -0,0 +1,46 @@
+package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
+
+import java.util.Date;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+
+public class OrdineDTO {
+ private String chiaveGriglia;
+ private String dataCons;
+
+ private List artRows;
+
+ public String getChiaveGriglia() {
+ return chiaveGriglia;
+ }
+
+ public void setChiaveGriglia(String chiaveGriglia) {
+ this.chiaveGriglia = chiaveGriglia;
+ }
+
+ public String getDataCons() {
+ return dataCons;
+ }
+
+ public void setDataCons(String dataCons) {
+ this.dataCons = dataCons;
+ }
+
+ public List getArtRows() {
+ return artRows;
+ }
+
+ public void setArtRows(List artRows) {
+ this.artRows = artRows;
+ }
+ public Date getDataConsD() {
+ return UtilityDate.recognizeDateWithExceptionHandler(getDataCons());
+ }
+
+ public void setDataConsD(Date dataCons) {
+ setDataCons(UtilityDate.formatDate(dataCons, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/SaveDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/SaveDTO.java
new file mode 100644
index 00000000..442ed0a5
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dto/SaveDTO.java
@@ -0,0 +1,24 @@
+package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
+
+public class SaveDTO {
+ private String gestione = "O";
+
+
+ private OrdineDTO ordineDTO;
+
+ public String getGestione() {
+ return gestione;
+ }
+
+ public void setGestione(String gestione) {
+ this.gestione = gestione;
+ }
+
+ public OrdineDTO getOrdineDTO() {
+ return ordineDTO;
+ }
+
+ public void setOrdineDTO(OrdineDTO ordineDTO) {
+ this.ordineDTO = ordineDTO;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java
new file mode 100644
index 00000000..13fb0d5c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java
@@ -0,0 +1,70 @@
+package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper;
+
+import android.content.Context;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGrigliaRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
+
+public class PVEditOrderHelper {
+ private Context mContext;
+ private GrigliaRepository mGrigliaRepository;
+ private ArticoliOrdineRepository mArticoliOrdineRepository;
+ private ArticoliGrigliaRepository mArticoliGrigliaRepository;
+
+ public PVEditOrderHelper(Context mContext) {
+ this.mContext = mContext;
+ mGrigliaRepository = new GrigliaRepository();
+ mArticoliOrdineRepository = new ArticoliOrdineRepository();
+ mArticoliGrigliaRepository = new ArticoliGrigliaRepository();
+ }
+
+ public void checkArticolo(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) {
+ try {
+ mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> {
+ if (articolo != null) {
+ onSuccess.run(articolo);
+ } else {
+ mArticoliGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> {
+ if (artGrid != null) {
+ onSuccess.run(artGrid.convertToArticoloOrdine(ordine));
+ } else {
+ onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
+ }
+ }, onFail);
+ }
+ }, onFail);
+
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ }
+
+ public void loadGriglia(int idGriglia, RunnableArgs onLoad, RunnableArgs onError) {
+ try {
+ mGrigliaRepository.findGrigliaById(idGriglia, onLoad, onError);
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ }
+
+ public void loadArticoli(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError) {
+ try {
+ mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, onError);
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ }
+
+
+ public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onFail) {
+ mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java
new file mode 100644
index 00000000..12793b9f
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java
@@ -0,0 +1,182 @@
+package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.SpannableString;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.integrywmsnative.core.data_cache.DataCache;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
+import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
+import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding;
+import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvOpenListAdapter;
+import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA;
+import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity;
+import it.integry.integrywmsnative.ui.ElevatedToolbar;
+import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
+
+public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment {
+
+ private FragmentPvOrdiniAcquistoBinding mBinding;
+ private OrdineAcquistoPvHelper mHelper;
+ private Griglia mGriglia;
+ private OrdineAcquistoPvOpenListAdapter mAdapter;
+ private List mRenderedOrderList = new ArrayList<>();
+
+
+ public PVOrdiniAcquistoGrigliaFragment() {
+ mHelper = new OrdineAcquistoPvHelper(getActivity());
+ }
+
+ public static PVOrdiniAcquistoGrigliaFragment newInstance() {
+ PVOrdiniAcquistoGrigliaFragment fragment = new PVOrdiniAcquistoGrigliaFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_acquisto, container, false);
+ mBinding.setViewmodel(this);
+
+ init();
+ initRecyclerView();
+ return mBinding.getRoot();
+ }
+
+ private void init() {
+
+ BarcodeManager.enable();
+ DialogScanLisA.make(getActivity(), griglia -> {
+ if (griglia == null) {
+ ((IPoppableActivity) getActivity()).pop();
+ } else {
+ setGriglia(griglia);
+ }
+ }).show();
+
+ }
+
+ @Override
+ public void onCreateActionBar(AppCompatTextView titleText, Context context) {
+ titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
+ }
+
+ private void setGriglia(Griglia griglia) {
+ mGriglia = griglia;
+ mBinding.fabNewOrder.setVisibility(View.VISIBLE);
+ mBinding.codAlis.setText(griglia.getCodAlis());
+ mBinding.descrLis.setText(griglia.getDescrLisa());
+ mBinding.descrDepo.setText(griglia.getDescrDepo());
+ mBinding.countArtLis.setText(String.valueOf(griglia.getCountArticoli()));
+
+ fetchOrders();
+ }
+
+ private void fetchOrders() {
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress));
+ OrdineRepository repository = new OrdineRepository();
+ repository.selectAllOpenOrders(mGriglia, (ordini) -> getActivity().runOnUiThread(() -> {
+ progress.dismiss();
+ setOrdini(ordini);
+ }), (e) -> {
+ progress.dismiss();
+ String errorMessage = e.getMessage();
+ getActivity().runOnUiThread(() -> DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show());
+ });
+ }
+
+ private void setOrdini(List ordini) {
+ mBinding.ordiniAApertiMainList.setVisibility(ordini != null && ordini.size() > 0 ? View.VISIBLE : View.GONE);
+ mBinding.ordiniAEmptyView.setVisibility(ordini == null || ordini.size() <= 0 ? View.VISIBLE : View.GONE);
+ refreshRenderedOrdini(ordini);
+ mAdapter.updateItems(mRenderedOrderList);
+ }
+
+ public Griglia getGriglia() {
+ return mGriglia;
+ }
+
+ private void initRecyclerView() {
+ mBinding.ordiniAApertiMainList.setHasFixedSize(true);
+
+ mBinding.ordiniAApertiMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
+
+ DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
+ itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
+ mBinding.ordiniAApertiMainList.addItemDecoration(itemDecorator);
+ mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, selectOrdine);
+ mBinding.ordiniAApertiMainList.setAdapter(mAdapter);
+ }
+
+ private RunnableArgs selectOrdine = ordine -> {
+
+ Intent myIntent = new Intent(getActivity(), PVOrdineAcquistoEditActivity.class);
+
+ String keyOrdine = DataCache.addItem(ordine);
+ myIntent.putExtra("keyOrdine", keyOrdine);
+
+ getActivity().startActivity(myIntent);
+
+ };
+
+ private void refreshRenderedOrdini(List ordini) {
+ mRenderedOrderList.clear();
+ if (ordini != null) mRenderedOrderList.addAll(ordini);
+ }
+
+ public void createNewOrder() {
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress));
+ mHelper.createNewOrder(mGriglia, order -> {
+ progress.dismiss();
+ getActivity().runOnUiThread(()-> selectOrdine.run(order));
+
+ }, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress)));
+ }
+
+ @Override
+ public void setScrollToolbar(ElevatedToolbar toolbar) {
+
+ }
+
+ @Override
+ public void setOnPreDestroy(Runnable onPreDestroy) {
+
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ if (mGriglia != null){
+ fetchOrders();
+ }
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java
new file mode 100644
index 00000000..93a9d429
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoTransmittedListFragment.java
@@ -0,0 +1,112 @@
+package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.SpannableString;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.databinding.DataBindingUtil;
+import androidx.fragment.app.Fragment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
+import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
+import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
+import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
+import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
+import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.databinding.FragmentPvOrdiniATrasmessiElencoBinding;
+import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvTransmittedListAdapter;
+import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato;
+import it.integry.integrywmsnative.ui.ElevatedToolbar;
+import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
+
+public class PVOrdiniAcquistoTransmittedListFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
+
+ private FragmentPvOrdiniATrasmessiElencoBinding mBinding;
+ private OrdineAcquistoPvTransmittedListAdapter mAdapter;
+
+ private List mOriginalOrderList;
+ private List mRenderedOrderList = new ArrayList<>();
+
+ private DialogOrdineProduzioneFiltroAvanzato.DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel;
+
+ public PVOrdiniAcquistoTransmittedListFragment() {
+ // Required empty public constructor
+ }
+
+ public static PVOrdiniAcquistoTransmittedListFragment newInstance() {
+ PVOrdiniAcquistoTransmittedListFragment fragment = new PVOrdiniAcquistoTransmittedListFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_a_trasmessi_elenco, container, false);
+ mBinding.setView(this);
+
+
+ //init();
+ return mBinding.getRoot();
+ }
+
+ @Override
+ public void onCreateActionBar(AppCompatTextView titleText, Context context) {
+ titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
+ }
+
+ @Override
+ public void setScrollToolbar(ElevatedToolbar toolbar) {
+
+ }
+
+ @Override
+ public void setOnPreDestroy(Runnable onPreDestroy) {
+
+ }
+
+ @Override
+ public void onFilterClick() {
+
+ }
+
+ private void init(){
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity());
+
+ OrdineRepository repository = new OrdineRepository();
+
+ repository.selectAllTransmitted((ordini)->{
+ mOriginalOrderList = ordini;
+ mBinding.ordiniAEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE);
+ refreshRenderedOrdini(ordini);
+ initRecyclerView();
+ progress.dismiss();
+ },(e)->{
+ progress.dismiss();
+ String errorMessage = e.getMessage();
+ DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show();
+ });
+
+ }
+
+ private void initRecyclerView() {
+ mAdapter = new OrdineAcquistoPvTransmittedListAdapter(getActivity(), mRenderedOrderList);
+ mBinding.ordineAMainList.setAdapter(mAdapter);
+ }
+
+ private void refreshRenderedOrdini(List ordini) {
+ mRenderedOrderList.clear();
+ if(ordini != null) mRenderedOrderList.addAll(ordini);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java
new file mode 100644
index 00000000..bdec5020
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvOpenListAdapter.java
@@ -0,0 +1,132 @@
+package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core;
+
+import android.content.Context;
+import android.text.Html;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.annimon.stream.Stream;
+import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding;
+import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding;
+import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
+
+public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider {
+
+
+ private Context mContext;
+
+ private List mDataset;
+ RunnableArgs mOnItemSelect;
+
+
+ static class SubheaderHolder extends RecyclerView.ViewHolder {
+
+ FragmentPvOrdiniAcquistoListHeaderBinding binding;
+
+ SubheaderHolder(FragmentPvOrdiniAcquistoListHeaderBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ }
+
+ static class SingleItemViewHolder extends RecyclerView.ViewHolder {
+
+ FragmentPvOrdiniAcquistoListSingleItemBinding binding;
+
+ SingleItemViewHolder(FragmentPvOrdiniAcquistoListSingleItemBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+ }
+
+
+ public OrdineAcquistoPvOpenListAdapter(Context context, List myDataset, RunnableArgs onItemSelect) {
+ mContext = context;
+ mDataset = orderItems(myDataset);
+ mOnItemSelect = onItemSelect;
+ }
+
+ public void updateItems(List updatedDataset) {
+ mDataset.clear();
+ mDataset.addAll(orderItems(updatedDataset));
+ notifyDataSetChanged();
+ notifyDataChanged();
+ }
+
+
+ private List orderItems(List dataset) {
+ return Stream.of(dataset)
+ .distinctBy(OrdineWrapper::getOrdine)
+ .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
+ .toList();
+
+ }
+
+
+ @Override
+ public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
+ FragmentPvOrdiniAcquistoListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_header, parent, false);
+ return new SubheaderHolder(binding);
+ }
+
+ @Override
+ public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
+ FragmentPvOrdiniAcquistoListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_single_item, parent, false);
+ return new SingleItemViewHolder(binding);
+ }
+
+
+ @Override
+ public void onBindSubheaderViewHolder(OrdineAcquistoPvOpenListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
+ subheaderHolder.binding.title.setText(mContext.getString(R.string.ordini_a_aperti));
+ }
+
+ @Override
+ public void onBindItemViewHolder(OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder h, int itemPosition) {
+ final OrdineWrapper ordineWrapper = mDataset.get(itemPosition);
+ final Ordine ordine = ordineWrapper.getOrdine();
+ final OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder holder = h;
+
+
+ String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+
+ holder.binding.numArts.setText(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli())));
+
+ holder.binding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
+
+ holder.binding.getRoot().setOnClickListener(v -> {
+ mOnItemSelect.run(ordine);
+ });
+
+ }
+
+
+ @Override
+ public boolean onPlaceSubheaderBetweenItems(int position) {
+ return false;
+ }
+
+ @Override
+ public int getItemSize() {
+ return mDataset.size();
+ }
+
+ @Override
+ public String getSectionTitle(int position) {
+ return null;
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java
new file mode 100644
index 00000000..d7f4449e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/core/OrdineAcquistoPvTransmittedListAdapter.java
@@ -0,0 +1,133 @@
+package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core;
+
+import android.content.Context;
+import android.text.Html;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.annimon.stream.Stream;
+import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.databinding.FragmentOrdineAPvTransmittedListModelBinding;
+import it.integry.integrywmsnative.databinding.FragmentOrdiniAPvListSingleItemBinding;
+import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
+
+public class OrdineAcquistoPvTransmittedListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider {
+
+
+ private Context mContext;
+
+ private List mOriginalDataset;
+ private List mDataset;
+
+
+ static class SubheaderHolder extends RecyclerView.ViewHolder {
+
+ FragmentOrdineAPvTransmittedListModelBinding binding;
+
+ SubheaderHolder(FragmentOrdineAPvTransmittedListModelBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ }
+
+ static class SingleItemViewHolder extends RecyclerView.ViewHolder {
+
+ FragmentOrdiniAPvListSingleItemBinding binding;
+
+ SingleItemViewHolder(FragmentOrdiniAPvListSingleItemBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+ }
+
+
+ public OrdineAcquistoPvTransmittedListAdapter(Context context, List myDataset) {
+ mContext = context;
+ mOriginalDataset = myDataset;
+ mDataset = orderItems(myDataset);
+ }
+
+ public void updateItems(List updatedDataset) {
+ mDataset.clear();
+ mDataset.addAll(orderItems(updatedDataset));
+ notifyDataSetChanged();
+ notifyDataChanged();
+ }
+
+
+ private List orderItems(List dataset) {
+ return Stream.of(dataset)
+ .distinctBy(OrdineWithGriglia::getGriglia)
+ .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
+ .toList();
+
+ }
+
+
+
+ @Override
+ public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
+ FragmentOrdineAPvTransmittedListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ordine_a_pv_transmitted__list_model, parent, false);
+ return new SubheaderHolder(binding);
+ }
+
+ @Override
+ public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
+ FragmentOrdiniAPvListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ordini_a_pv__list_single_item, parent, false);
+ return new SingleItemViewHolder(binding);
+ }
+
+
+ @Override
+ public void onBindSubheaderViewHolder(OrdineAcquistoPvTransmittedListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
+ subheaderHolder.binding.ordineAPvMainListGroupHeader.setText(mDataset.get(nextItemPosition).getGriglia().getCodAlis());
+
+ }
+
+ @Override
+ public void onBindItemViewHolder(OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder h, int itemPosition) {
+ final OrdineWithGriglia ordine = mDataset.get(itemPosition);
+ final OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder holder = h;
+
+
+ String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdine().getOrdineId()), UtilityDate.formatDate(ordine.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+
+ holder.binding.badge1.setText(ordine.getOrdine().isTransmitted() ? "TRASMESSO" : "NON TRASMESSO");
+
+ holder.binding.descriptionMain.setText(Html.fromHtml(testataOrdString));
+
+
+ holder.binding.getRoot().setOnClickListener(v -> {
+ //TODO: aprire descrizione Ordine
+ });
+
+ }
+
+
+ @Override
+ public boolean onPlaceSubheaderBetweenItems(int position) {
+ return !(this.mDataset.get(position).getGriglia().getGrigliaId() == this.mDataset.get(position + 1).getGriglia().getGrigliaId());
+
+ }
+
+ @Override
+ public int getItemSize() {
+ return mDataset.size();
+ }
+
+ @Override
+ public String getSectionTitle(int position) {
+ return null;
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java
new file mode 100644
index 00000000..6cd28d4b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java
@@ -0,0 +1,111 @@
+package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs;
+
+import android.app.Activity;
+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 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.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
+import it.integry.integrywmsnative.core.expansion.BaseDialog;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding;
+import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
+
+public class DialogScanLisA {
+
+ private Activity mContext;
+
+ private Dialog mDialog;
+
+ private DialogScanCodiceGrigliaBinding mBinding;
+
+ private RunnableArgs mOnDialogDismiss;
+
+ private OrdineAcquistoPvHelper mHelper;
+ private Griglia mGriglia;
+
+ private DialogScanLisA(Activity context, RunnableArgs onDialogDismiss) {
+ mOnDialogDismiss = null;
+ mContext = context;
+ mHelper = new OrdineAcquistoPvHelper(context);
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+ mGriglia = null;
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_codice_griglia, null, false);
+
+ mDialog = new BaseDialog(context);
+ mDialog.setContentView(mBinding.getRoot());
+ mDialog.setCanceledOnTouchOutside(false);
+ mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ mOnDialogDismiss = onDialogDismiss;
+ initBarcode();
+ }
+
+ public static Dialog make(Activity context, RunnableArgs onDialogDismiss) {
+ return new DialogScanLisA(context, onDialogDismiss).mDialog;
+ }
+
+ private void initBarcode() {
+
+ int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
+ .setOnScanSuccessfull(onScanSuccessfull)
+ .setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
+
+ mDialog.setOnDismissListener(dialog -> {
+ BarcodeManager.removeCallback(barcodeIstanceID);
+ BarcodeManager.enable();
+ mOnDialogDismiss.run(mGriglia);
+ });
+ }
+
+
+ private RunnableArgs onScanSuccessfull = data -> {
+ BarcodeManager.disable();
+
+ final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
+ Context context = mContext;
+ RunnableArgs mOnError = exception -> {
+ mContext.runOnUiThread(()->{
+ progressDialog.dismiss();
+ UtilityExceptions.defaultException(context,exception);
+ BarcodeManager.enable();
+ });
+ };
+
+ RunnableArgs onGrigliaAvaialable = griglia->{
+ mContext.runOnUiThread(()->{
+ progressDialog.dismiss();
+ mGriglia = griglia;
+ mDialog.dismiss();
+ });
+ };
+
+ GrigliaRepository repository = new GrigliaRepository();
+
+ repository.findByCodAlis(data.getStringValue(),griglia->{
+ if (griglia != null){
+ griglia.getGriglia().setCountArticoli(griglia.getCountArticoli());
+ if (griglia.getCountArticoli() >0){
+ onGrigliaAvaialable.run(griglia.getGriglia());
+ }else{
+ mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvaialable,mOnError);
+ }
+ }else{
+ mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvaialable,mOnError);
+ }
+ },mOnError);
+
+
+ };
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java
new file mode 100644
index 00000000..9df45f2d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java
@@ -0,0 +1,75 @@
+package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper;
+
+import android.content.Context;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
+import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGrigliaRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
+import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
+
+public class OrdineAcquistoPvHelper {
+
+ private Context mContext;
+ private GrigliaRepository mGrigliaRepository;
+ private ArticoliGrigliaRepository mArticoliGrigliaRepository;
+ private OrdineRepository mOrdineRepository;
+ public OrdineAcquistoPvHelper(Context mContext) {
+ this.mContext = mContext;
+ this.mGrigliaRepository = new GrigliaRepository();
+ this.mArticoliGrigliaRepository = new ArticoliGrigliaRepository();
+ this.mOrdineRepository = new OrdineRepository();
+
+ }
+
+ public void downloadAndSaveLisA(String codAlis, RunnableArgs onSave, RunnableArgs onFail) {
+ Griglia griglia = new Griglia();
+ griglia.setCodAlis(codAlis);
+ updateGriglia(griglia, onSave, onFail);
+ }
+
+ public void updateGriglia(Griglia griglia, RunnableArgs onSave, RunnableArgs onFail) {
+ PVOrdiniAcquistoRESTConsumer.getArticoliListino(griglia.getCodAlis(), dto -> {
+ if (dto.getGrigliaAcquistiChild().size() <= 0) {
+ Exception e = new Exception("La griglia selezionata (" + griglia.getCodAlis() + ") non esiste o non presenta articoli");
+ onFail.run(e);
+ return;
+ }
+ griglia.setDescrLisa(dto.getDescrLisa());
+ griglia.setDescrDepo(dto.getDescrDepo());
+ griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size());
+ mGrigliaRepository.saveGriglia(griglia, id -> {
+ saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSave, onFail);
+ }, onFail);
+
+ }, onFail);
+ }
+
+ private void saveLisAToGriglia(List articoli, Griglia griglia, RunnableArgs onSave, RunnableArgs onFail) {
+ List articoliGriglia = new ArrayList<>();
+ for (ArticoloDTO articolo : articoli) {
+ ArticoloGriglia toSave = articolo.toArticoloGriglia();
+ toSave.setIdGriglia(griglia.getGrigliaId());
+ articoliGriglia.add(toSave);
+ }
+ mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia, () -> onSave.run(griglia), onFail);
+ }
+
+ public void createNewOrder(Griglia griglia, RunnableArgs onSuccess, RunnableArgs onError) {
+ Ordine ordine = new Ordine();
+ ordine.setDataIns(new Date());
+ ordine.setIdGriglia(griglia.getGrigliaId());
+ mOrdineRepository.insert(ordine,id->{
+ ordine.setOrdineId(id);
+ onSuccess.run(ordine);
+ },onError);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java
index 988f9734..67bf4e97 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java
@@ -64,8 +64,8 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuanti
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
-import it.integry.plugins.barcode_base_library.model.BarcodeType;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeType;
public class RettificaGiacenzeViewModel implements IRecyclerItemClicked {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java
index c850a715..e2fed21a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java
@@ -11,17 +11,22 @@ import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
+import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
+import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel.UltimeConsegneClienteViewModel;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
-public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment {
+public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
private Runnable mOnPreDestroy;
private ElevatedToolbar mToolbar;
+ private UltimeConsegneClienteViewModel mViewModel;
+
public UltimeConsegneClienteFragment() {
// Required empty public constructor
}
@@ -41,7 +46,9 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr
FragmentMainUltimeConsegneClienteBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false);
- mBinding.setViewmodel(new UltimeConsegneClienteViewModel(getActivity(), mBinding));
+ mViewModel = new UltimeConsegneClienteViewModel(getActivity(), mBinding);
+
+ mBinding.setViewmodel(mViewModel);
mToolbar.setRecyclerView(mBinding.recyclerView);
@@ -69,4 +76,9 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr
public void setOnPreDestroy(Runnable onPreDestroy) {
mOnPreDestroy = onPreDestroy;
}
+
+ @Override
+ public void onFilterClick() {
+ mViewModel.openFilterDialog();
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java
new file mode 100644
index 00000000..8b3005e2
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java
@@ -0,0 +1,203 @@
+package it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog;
+
+import androidx.appcompat.app.AlertDialog;
+import android.app.DatePickerDialog;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.view.LayoutInflater;
+import android.view.WindowManager;
+import android.widget.ArrayAdapter;
+
+import androidx.databinding.DataBindingUtil;
+
+import com.annimon.stream.Stream;
+import com.annimon.stream.function.Predicate;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.di.BindableString;
+import it.integry.integrywmsnative.core.expansion.RunnableArgss;
+import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.databinding.DialogUltimeConsegneFiltroAvanzatoBinding;
+
+public class DialogUltimeConsegneFiltroAvanzato {
+
+ private AlertDialog mAlert;
+ private Context mContext;
+ private DialogUltimeConsegneFiltroAvanzatoViewModel mBaseViewModel;
+ private RunnableArgss, DialogUltimeConsegneFiltroAvanzatoViewModel> mOnDismiss;
+
+
+
+ private ArrayAdapter arrayAdapterRagSoc;
+
+ private List mItems;
+ private List mFilteredItems;
+
+ private Predicate currentRagSocPredicate = null;
+ private Predicate currentDataDocPredicate = null;
+
+ public static AlertDialog make(final Context context,
+ final List items,
+ DialogUltimeConsegneFiltroAvanzatoViewModel baseViewModel,
+ RunnableArgss, DialogUltimeConsegneFiltroAvanzatoViewModel> onDismiss) {
+ return new DialogUltimeConsegneFiltroAvanzato(context, items, baseViewModel, onDismiss).mAlert;
+ }
+
+
+ public DialogUltimeConsegneFiltroAvanzato(final Context context,
+ final List items,
+ DialogUltimeConsegneFiltroAvanzatoViewModel baseViewModel,
+ RunnableArgss, DialogUltimeConsegneFiltroAvanzatoViewModel> onDismiss) {
+ mContext = context;
+ mItems = items;
+ mBaseViewModel = baseViewModel;
+ mOnDismiss = onDismiss;
+
+ DialogUltimeConsegneFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogUltimeConsegneFiltroAvanzatoViewModel();
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ DialogUltimeConsegneFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_ultime_consegne_filtro_avanzato, null, false);
+
+ final AlertDialog.Builder dialog = new AlertDialog.Builder(context)
+ .setView(binding.getRoot());
+
+ binding.setViewmodel(viewModel);
+ initViewModelNew(viewModel);
+ initView(binding, viewModel);
+
+ mAlert = dialog.create();
+ mAlert.setCanceledOnTouchOutside(false);
+
+ mAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ mAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+ binding.positiveBtn.setOnClickListener(view -> {
+ mAlert.dismiss();
+ });
+
+ binding.neutralBtn.setOnClickListener(view -> {
+ resetAll(viewModel);
+ });
+
+
+ mAlert.setOnDismissListener(dialogInterface -> {
+ if(mOnDismiss != null) mOnDismiss.run(mFilteredItems, viewModel);
+ });
+
+ refreshList();
+
+ }
+
+ private void resetAll(DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
+ viewModel.ragSoc.set(null);
+ viewModel.dataDoc.set(null);
+ }
+
+ private void initView(DialogUltimeConsegneFiltroAvanzatoBinding bindings, DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
+
+ arrayAdapterRagSoc = new ArrayAdapter(mContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterRagSoc.addAll(getAvailableRagSocs(false));
+ bindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc);
+
+ bindings.filledExposedDropdownDataDoc.setOnClickListener(view -> {
+ Calendar c = UtilityDate.getCalendarInstance();
+
+ if(viewModel.dataDocDate != null) {
+ c.setTime(viewModel.dataDocDate);
+ }
+
+ int mYear = c.get(Calendar.YEAR);
+ int mMonth = c.get(Calendar.MONTH);
+ int mDay = c.get(Calendar.DAY_OF_MONTH);
+
+ DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
+ (view2, year, month, day) -> {
+
+ viewModel.dataDocDate = new GregorianCalendar(year, month, day).getTime();
+ viewModel.dataDoc.set(UtilityDate.formatDate(viewModel.dataDocDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+
+ }, mYear, mMonth, mDay);
+ datePickerDialog.show();
+ });
+
+
+ viewModel.ragSoc.refresh();
+ viewModel.dataDoc.refresh();
+ }
+
+ private void initViewModelNew(DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) {
+
+ BindableString.resetListeners(viewModel.ragSoc);
+ BindableString.registerListener(viewModel.ragSoc, value -> {
+ if (UtilityString.isNullOrEmpty(value)) currentRagSocPredicate = null;
+ else {
+ currentRagSocPredicate = o -> o.getRagSoc().equalsIgnoreCase(viewModel.ragSoc.get());
+ }
+
+ refreshList();
+ });
+
+ BindableString.resetListeners(viewModel.dataDoc);
+ BindableString.registerListener(viewModel.dataDoc, value -> {
+ if (UtilityString.isNullOrEmpty(value)) currentDataDocPredicate = null;
+ else {
+ currentDataDocPredicate = o -> o.getDataDocD().equals(viewModel.dataDocDate);
+ }
+
+ refreshList();
+
+ arrayAdapterRagSoc.clear();
+ arrayAdapterRagSoc.addAll(getAvailableRagSocs(true));
+ });
+ }
+
+ private List getAvailableRagSocs(boolean skipRecalc) {
+ if(currentDataDocPredicate == null){
+ mFilteredItems = mItems;
+ } else if(!skipRecalc){
+ Stream tmpStream = Stream.of(mItems)
+ .filter(x ->
+ (currentDataDocPredicate == null || (currentDataDocPredicate.test(x)))
+ );
+
+ mFilteredItems = tmpStream.toList();
+ }
+
+ return Stream.of(mFilteredItems).map(DocumentoResoDTO::getRagSoc).distinct().withoutNulls().toList();
+ }
+
+
+ private void refreshList() {
+
+ if(currentRagSocPredicate == null && currentDataDocPredicate == null){
+ mFilteredItems = mItems;
+ } else {
+ Stream tmpStream = Stream.of(mItems)
+ .filter(x ->
+ (currentRagSocPredicate == null || (currentRagSocPredicate.test(x))) &&
+ (currentDataDocPredicate== null || (currentDataDocPredicate.test(x)))
+ );
+
+ mFilteredItems = tmpStream.toList();
+ }
+
+
+ }
+
+ public class DialogUltimeConsegneFiltroAvanzatoViewModel {
+
+ public BindableString ragSoc = new BindableString();
+ public BindableString dataDoc = new BindableString();
+
+ public Date dataDocDate;
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java
index 7d0270a2..265e86ce 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java
@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
+import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -16,6 +17,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
+import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
@@ -25,7 +27,11 @@ public class UltimeConsegneClienteViewModel {
private Context mContext;
private FragmentMainUltimeConsegneClienteBinding mBinding;
+ private UltimeConsegneMainListAdapter mAdapter;
private List mItems;
+ private List mRenderedItems = new ArrayList<>();
+
+ private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel;
public UltimeConsegneClienteViewModel(Context context, FragmentMainUltimeConsegneClienteBinding binding) {
this.mContext = context;
@@ -39,6 +45,17 @@ public class UltimeConsegneClienteViewModel {
});
}
+ public void openFilterDialog() {
+ DialogUltimeConsegneFiltroAvanzato.make(mContext, mItems, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
+ mAppliedFilterViewModel = filter;
+
+ if(filteredOrderList != null){
+
+ refreshItems(filteredOrderList);
+ }
+
+ }).show();
+ }
private void initList() {
@@ -50,7 +67,9 @@ public class UltimeConsegneClienteViewModel {
null,
consegne -> {
this.mItems = consegne;
+
this.initDataAdapter(consegne);
+ refreshItems(consegne);
progressDialog.dismiss();
}, ex -> {
@@ -59,16 +78,23 @@ public class UltimeConsegneClienteViewModel {
}
private void initDataAdapter(ArrayList dataset) {
- UltimeConsegneMainListAdapter adapter = new UltimeConsegneMainListAdapter(mContext, dataset);
- adapter.setOnSelectionChanged(this::onSingleSelectionChanged);
+ mAdapter = new UltimeConsegneMainListAdapter(mContext, dataset);
+ mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
mBinding.recyclerView.setHasFixedSize(true);
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
- mBinding.recyclerView.setAdapter(adapter);
+ mBinding.recyclerView.setAdapter(mAdapter);
mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
}
+ private void refreshItems(List items){
+ mBinding.emptyView.setVisibility((items != null && items.size() > 0) ? View.GONE : View.VISIBLE);
+
+ mRenderedItems.clear();
+ if(items != null) mRenderedItems.addAll(items);
+ mAdapter.updateItems(mRenderedItems);
+ }
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
List selectedOrders = getSelectedItems();
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java
index a7a04440..abaff9d6 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java
@@ -36,10 +36,6 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
private RunnableArgs mOnSelectionChanged;
- private TextDrawable.IShapeBuilder smallIconBuilder;
- private TextDrawable.IShapeBuilder mediumIconBuilder;
- private TextDrawable.IShapeBuilder largeIconBuilder;
-
@Override
public String getSectionTitle(int position) {
return mSectionTitleItems.get(position);
@@ -74,56 +70,8 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
super();
this.mContext = context;
this.mDataset = new ArrayList<>();
- this.mSectionTitleItems = new ArrayList<>();
-
- this.mDataset = Stream.of(dataset)
- .sortBy(DocumentoResoDTO::getRagSoc)
- .toList();
-
-
- Stream.of(mDataset)
- .map(DocumentoResoDTO::getRagSoc)
- .distinct()
- .forEach(x -> {
- this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
-
- long count = Stream.of(dataset)
- .filter(y -> y.getRagSoc().equalsIgnoreCase(x))
- .count();
-
-
- for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
- });
-
- long count = Stream.of(dataset)
- .filter(x -> UtilityString.isNullOrEmpty(x.getRagSoc()))
- .count();
-
-
- smallIconBuilder = TextDrawable.builder()
- .beginConfig()
- .width(40)
- .height(40)
- .fontSize(24)
- .useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
- .endConfig();
-
- mediumIconBuilder = TextDrawable.builder()
- .beginConfig()
- .width(40)
- .height(40)
- .fontSize(20)
- .useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
- .endConfig();
-
- largeIconBuilder = TextDrawable.builder()
- .beginConfig()
- .width(40)
- .height(40)
- .fontSize(16)
- .useFont(ResourcesCompat.getFont(mContext, R.font.google_sans_regular))
- .endConfig();
+ updateItems(sort(dataset));
}
@@ -151,15 +99,7 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
holder.mBinding.subDescriptionMain.setText(String.format(mContext.getText(R.string.shipped_on).toString(), UtilityDate.formatDate(consegna.getDataInizTraspD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
}
- String numDoc = "" + consegna.getNumDoc();
-
- if(numDoc.length() <= 2) {
- holder.mBinding.startIcon.setImageDrawable(smallIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
- } else if(numDoc.length() == 3) {
- holder.mBinding.startIcon.setImageDrawable(mediumIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
- } else if(numDoc.length() == 4) {
- holder.mBinding.startIcon.setImageDrawable(largeIconBuilder.buildRound(numDoc, ContextCompat.getColor(mContext, R.color.colorPrimary)));
- }
+ holder.mBinding.badge1.setText(String.valueOf(consegna.getNumDoc()));
try {
Calendar calendarNow = UtilityDate.getCalendarInstance();
@@ -213,6 +153,40 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter<
}
+
+ public void updateItems(List updatedDataset) {
+ mDataset.clear();
+ mDataset.addAll(sort(updatedDataset));
+ notifyDataSetChanged();
+ notifyDataChanged();
+ }
+
+
+ private List sort(List dataset) {
+ this.mSectionTitleItems = new ArrayList<>();
+
+ List sortedDataset = Stream.of(dataset)
+ .sortBy(DocumentoResoDTO::getRagSoc)
+ .toList();
+
+
+ Stream.of(sortedDataset)
+ .map(DocumentoResoDTO::getRagSoc)
+ .distinct()
+ .forEach(x -> {
+ this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
+
+ long count = Stream.of(dataset)
+ .filter(y -> y.getRagSoc().equalsIgnoreCase(x))
+ .count();
+
+
+ for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
+ });
+
+ return sortedDataset;
+ }
+
public void setOnSelectionChanged(RunnableArgs mSelectionChanged) {
this.mOnSelectionChanged = mSelectionChanged;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/UltimiArriviFornitoreFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
similarity index 72%
rename from app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/UltimiArriviFornitoreFragment.java
rename to app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
index 2498b98e..edcb109c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/UltimiArriviFornitoreFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.gest.ultime_arrivi_fornitore;
+package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore;
import android.app.Dialog;
@@ -20,29 +20,36 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
-import it.integry.integrywmsnative.databinding.FragmentUltimeConsegneFornitoreBinding;
+import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
-import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
-import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
+import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
+import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
+import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
/**
* A simple {@link Fragment} subclass.
*/
-public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFragment, IScrollableFragment {
+public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment {
private Runnable mOnPreDestroy;
private ElevatedToolbar mToolbar;
- private FragmentUltimeConsegneFornitoreBinding mBinding;
+ private FragmentUltimiArriviFornitoreBinding mBinding;
private List mItems;
+ private List mRenderedItems = new ArrayList<>();
+
+ private UltimiArriviFornitoreListAdapter mAdapter;
+
+ private DialogUltimiArriviFornitoreFiltroAvanzato.DialogUltimiArriviFiltroAvanzatoViewModel mAppliedFilterViewModel;
public UltimiArriviFornitoreFragment() {
// Required empty public constructor
@@ -61,7 +68,7 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
- mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultime_consegne_fornitore, container, false);
+ mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultimi_arrivi_fornitore, container, false);
mBinding.setViewmodel(this);
@@ -116,7 +123,9 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
null,
consegne -> {
this.mItems = consegne;
+
this.initDataAdapter(consegne);
+ refreshItems(consegne);
progressDialog.dismiss();
}, ex -> {
@@ -124,13 +133,15 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
});
}
+
+
private void initDataAdapter(ArrayList dataset) {
- UltimiArriviFornitoreListAdapter adapter = new UltimiArriviFornitoreListAdapter(getActivity(), dataset);
- adapter.setOnSelectionChanged(this::onSingleSelectionChanged);
+ mAdapter = new UltimiArriviFornitoreListAdapter(getActivity(), dataset);
+ mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
mBinding.recyclerView.setHasFixedSize(true);
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
- mBinding.recyclerView.setAdapter(adapter);
+ mBinding.recyclerView.setAdapter(mAdapter);
mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
}
@@ -166,4 +177,25 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
PickingResiActivity.startActivity(getActivity(), getText(R.string.ultime_arrivi_fornitore_title).toString(), selectedConsegne, -1);
}
+ @Override
+ public void onFilterClick() {
+ DialogUltimiArriviFornitoreFiltroAvanzato.make(getActivity(), mItems, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
+ mAppliedFilterViewModel = filter;
+
+ if(filteredOrderList != null){
+
+ refreshItems(filteredOrderList);
+ }
+
+ }).show();
+ }
+
+
+ private void refreshItems(List items){
+ mBinding.emptyView.setVisibility((items != null && items.size() > 0) ? View.GONE : View.VISIBLE);
+
+ mRenderedItems.clear();
+ if(items != null) mRenderedItems.addAll(items);
+ mAdapter.updateItems(mRenderedItems);
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java
similarity index 79%
rename from app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java
rename to app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java
index ac234b0d..a34152fe 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreListAdapter.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.core;
+package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core;
import android.content.Context;
import android.view.LayoutInflater;
@@ -21,8 +21,8 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityString;
-import it.integry.integrywmsnative.databinding.FragmentUltimeConsegneFornitoreListHeaderBinding;
-import it.integry.integrywmsnative.databinding.FragmentUltimeConsegneFornitoreListSingleItemBinding;
+import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreListHeaderBinding;
+import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreListSingleItemBinding;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider {
@@ -41,9 +41,9 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
static class SubheaderHolder extends RecyclerView.ViewHolder {
- FragmentUltimeConsegneFornitoreListHeaderBinding mBinding;
+ FragmentUltimiArriviFornitoreListHeaderBinding mBinding;
- SubheaderHolder(FragmentUltimeConsegneFornitoreListHeaderBinding binding) {
+ SubheaderHolder(FragmentUltimiArriviFornitoreListHeaderBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
@@ -52,9 +52,9 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
- FragmentUltimeConsegneFornitoreListSingleItemBinding mBinding;
+ FragmentUltimiArriviFornitoreListSingleItemBinding mBinding;
- SingleItemViewHolder(FragmentUltimeConsegneFornitoreListSingleItemBinding binding) {
+ SingleItemViewHolder(FragmentUltimiArriviFornitoreListSingleItemBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
@@ -70,41 +70,19 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
this.mDataset = new ArrayList<>();
this.mSectionTitleItems = new ArrayList<>();
- this.mDataset = Stream.of(dataset)
- .sortBy(DocumentoResoDTO::getRagSoc)
- .toList();
-
-
- Stream.of(mDataset)
- .map(DocumentoResoDTO::getRagSoc)
- .distinct()
- .forEach(x -> {
- this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
-
- long count = Stream.of(dataset)
- .filter(y -> y.getRagSoc().equalsIgnoreCase(x))
- .count();
-
-
- for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
- });
-
- long count = Stream.of(dataset)
- .filter(x -> UtilityString.isNullOrEmpty(x.getRagSoc()))
- .count();
-
+ mDataset.addAll(sort(dataset));
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
- FragmentUltimeConsegneFornitoreListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ultime_consegne_fornitore__list_single_item, parent, false);
+ FragmentUltimiArriviFornitoreListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ultimi_arrivi_fornitore__list_single_item, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
- FragmentUltimeConsegneFornitoreListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ultime_consegne_fornitore__list_header, parent, false);
+ FragmentUltimiArriviFornitoreListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_ultimi_arrivi_fornitore__list_header, parent, false);
return new SubheaderHolder(binding);
}
@@ -171,9 +149,42 @@ public class UltimiArriviFornitoreListAdapter extends SectionedRecyclerViewAdapt
}
+
+ public void updateItems(List updatedDataset) {
+ mDataset.clear();
+ mDataset.addAll(sort(updatedDataset));
+ notifyDataSetChanged();
+ notifyDataChanged();
+ }
+
+
public void setOnSelectionChanged(RunnableArgs mSelectionChanged) {
this.mOnSelectionChanged = mSelectionChanged;
}
+ private List sort(List dataset) {
+ List items = Stream.of(dataset)
+ .sortBy(DocumentoResoDTO::getRagSoc)
+ .toList();
+
+
+ Stream.of(items)
+ .map(DocumentoResoDTO::getRagSoc)
+ .distinct()
+ .forEach(x -> {
+ this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
+
+ long count = Stream.of(dataset)
+ .filter(y -> y.getRagSoc().equalsIgnoreCase(x))
+ .count();
+
+
+ for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0)));
+ });
+ return items;
+
+ }
+
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/dialog/DialogUltimiArriviFornitoreFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/dialog/DialogUltimiArriviFornitoreFiltroAvanzato.java
new file mode 100644
index 00000000..d0f4a6b5
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/dialog/DialogUltimiArriviFornitoreFiltroAvanzato.java
@@ -0,0 +1,206 @@
+package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog;
+
+import android.app.DatePickerDialog;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.view.LayoutInflater;
+import android.view.WindowManager;
+import android.widget.ArrayAdapter;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.databinding.DataBindingUtil;
+
+import com.annimon.stream.Stream;
+import com.annimon.stream.function.Predicate;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.di.BindableString;
+import it.integry.integrywmsnative.core.expansion.RunnableArgss;
+import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.databinding.DialogUltimeConsegneFiltroAvanzatoBinding;
+import it.integry.integrywmsnative.databinding.DialogUltimiArriviFornitoreFiltroAvanzatoBinding;
+import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato;
+
+public class DialogUltimiArriviFornitoreFiltroAvanzato {
+
+ private AlertDialog mAlert;
+ private Context mContext;
+ private DialogUltimiArriviFiltroAvanzatoViewModel mBaseViewModel;
+ private RunnableArgss, DialogUltimiArriviFiltroAvanzatoViewModel> mOnDismiss;
+
+
+
+ private ArrayAdapter arrayAdapterRagSoc;
+
+ private List mItems;
+ private List mFilteredItems;
+
+ private Predicate currentRagSocPredicate = null;
+ private Predicate currentDataDocPredicate = null;
+
+ public static AlertDialog make(final Context context,
+ final List items,
+ DialogUltimiArriviFiltroAvanzatoViewModel baseViewModel,
+ RunnableArgss, DialogUltimiArriviFiltroAvanzatoViewModel> onDismiss) {
+ return new DialogUltimiArriviFornitoreFiltroAvanzato(context, items, baseViewModel, onDismiss).mAlert;
+ }
+
+ public DialogUltimiArriviFornitoreFiltroAvanzato(final Context context,
+ final List items,
+ DialogUltimiArriviFiltroAvanzatoViewModel baseViewModel,
+ RunnableArgss, DialogUltimiArriviFiltroAvanzatoViewModel> onDismiss) {
+ mContext = context;
+ mItems = items;
+ mBaseViewModel = baseViewModel;
+ mOnDismiss = onDismiss;
+
+ DialogUltimiArriviFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogUltimiArriviFiltroAvanzatoViewModel();
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ DialogUltimiArriviFornitoreFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_ultimi_arrivi_fornitore_filtro_avanzato, null, false);
+
+ final AlertDialog.Builder dialog = new AlertDialog.Builder(context)
+ .setView(binding.getRoot());
+
+ binding.setViewmodel(viewModel);
+ initViewModelNew(viewModel);
+ initView(binding, viewModel);
+
+ mAlert = dialog.create();
+ mAlert.setCanceledOnTouchOutside(false);
+
+ mAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ mAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+ binding.positiveBtn.setOnClickListener(view -> {
+ mAlert.dismiss();
+ });
+
+ binding.neutralBtn.setOnClickListener(view -> {
+ resetAll(viewModel);
+ });
+
+
+ mAlert.setOnDismissListener(dialogInterface -> {
+ if(mOnDismiss != null) mOnDismiss.run(mFilteredItems, viewModel);
+ });
+
+ refreshList();
+
+ }
+
+ private void resetAll(DialogUltimiArriviFiltroAvanzatoViewModel viewModel) {
+ viewModel.ragSoc.set(null);
+ viewModel.dataDoc.set(null);
+ }
+
+ private void initView(DialogUltimiArriviFornitoreFiltroAvanzatoBinding bindings, DialogUltimiArriviFiltroAvanzatoViewModel viewModel) {
+
+ arrayAdapterRagSoc = new ArrayAdapter(mContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterRagSoc.addAll(getAvailableRagSocs(false));
+ bindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc);
+
+ bindings.filledExposedDropdownDataDoc.setOnClickListener(view -> {
+ Calendar c = UtilityDate.getCalendarInstance();
+
+ if(viewModel.dataDocDate != null) {
+ c.setTime(viewModel.dataDocDate);
+ }
+
+ int mYear = c.get(Calendar.YEAR);
+ int mMonth = c.get(Calendar.MONTH);
+ int mDay = c.get(Calendar.DAY_OF_MONTH);
+
+ DatePickerDialog datePickerDialog = new DatePickerDialog(mContext,
+ (view2, year, month, day) -> {
+
+ viewModel.dataDocDate = new GregorianCalendar(year, month, day).getTime();
+ viewModel.dataDoc.set(UtilityDate.formatDate(viewModel.dataDocDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+
+ }, mYear, mMonth, mDay);
+ datePickerDialog.show();
+ });
+
+
+ viewModel.ragSoc.refresh();
+ viewModel.dataDoc.refresh();
+ }
+
+ private void initViewModelNew(DialogUltimiArriviFiltroAvanzatoViewModel viewModel) {
+
+ BindableString.resetListeners(viewModel.ragSoc);
+ BindableString.registerListener(viewModel.ragSoc, value -> {
+ if (UtilityString.isNullOrEmpty(value)) currentRagSocPredicate = null;
+ else {
+ currentRagSocPredicate = o -> o.getRagSoc().equalsIgnoreCase(viewModel.ragSoc.get());
+ }
+
+ refreshList();
+ });
+
+ BindableString.resetListeners(viewModel.dataDoc);
+ BindableString.registerListener(viewModel.dataDoc, value -> {
+ if (UtilityString.isNullOrEmpty(value)) currentDataDocPredicate = null;
+ else {
+ currentDataDocPredicate = o -> o.getDataDocD().equals(viewModel.dataDocDate);
+ }
+
+ refreshList();
+
+ arrayAdapterRagSoc.clear();
+ arrayAdapterRagSoc.addAll(getAvailableRagSocs(true));
+ });
+ }
+
+ private List getAvailableRagSocs(boolean skipRecalc) {
+ if(currentDataDocPredicate == null){
+ mFilteredItems = mItems;
+ } else if(!skipRecalc){
+ Stream tmpStream = Stream.of(mItems)
+ .filter(x ->
+ (currentDataDocPredicate == null || (currentDataDocPredicate.test(x)))
+ );
+
+ mFilteredItems = tmpStream.toList();
+ }
+
+ return Stream.of(mFilteredItems).map(DocumentoResoDTO::getRagSoc).distinct().withoutNulls().toList();
+ }
+
+
+ private void refreshList() {
+
+ if(currentRagSocPredicate == null && currentDataDocPredicate == null){
+ mFilteredItems = mItems;
+ } else {
+ Stream tmpStream = Stream.of(mItems)
+ .filter(x ->
+ (currentRagSocPredicate == null || (currentRagSocPredicate.test(x))) &&
+ (currentDataDocPredicate== null || (currentDataDocPredicate.test(x)))
+ );
+
+ mFilteredItems = tmpStream.toList();
+ }
+
+
+ }
+
+
+
+ public class DialogUltimiArriviFiltroAvanzatoViewModel {
+
+ public BindableString ragSoc = new BindableString();
+ public BindableString dataDoc = new BindableString();
+
+ public Date dataDocDate;
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java
similarity index 96%
rename from app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java
rename to app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java
index a21808e1..efc6bf1a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.rest;
+package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest;
import com.google.gson.reflect.TypeToken;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java
index 85a80e9a..bd49de29 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java
@@ -1,6 +1,6 @@
package it.integry.integrywmsnative.gest.vendita.dialogs;
-import android.app.AlertDialog;
+import androidx.appcompat.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.Context;
@@ -91,7 +91,7 @@ public class DialogVenditaFiltroAvanzato {
.setView(binding.getRoot());
binding.setViewmodel(viewModel);
- initViewModelNew(viewModel, binding);
+ initViewModelNew(viewModel);
initView(binding, viewModel);
currentAlert = alertDialog.create();
@@ -209,7 +209,7 @@ public class DialogVenditaFiltroAvanzato {
}
- private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel, DialogVenditaFiltroAvanzatoBinding bindings) {
+ private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel) {
BindableString.registerListener(viewModel.idViaggio, value -> {
if(UtilityString.isNullOrEmpty(value)) currentIdViaggioPredicate = null;
else {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java
index 85bbfcbd..3947ef7f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java
@@ -28,7 +28,7 @@ import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class VenditaViewModel {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java
index d6c75f4f..7a0f2a75 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java
@@ -10,6 +10,7 @@ import android.view.MenuItem;
import java.util.ArrayList;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
@@ -24,7 +25,7 @@ import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;
import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel.VenditaOrdineInevasoViewModel;
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
-public class VenditaOrdineInevasoActivity extends AppCompatActivity {
+public class VenditaOrdineInevasoActivity extends BaseActivity {
private ActivityVenditaOrdineInevasoBinding mBindings;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
index 85a6fda9..2f7e445d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
@@ -69,7 +69,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShould
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IOnOrdineVenditaRowDispatched {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java
index 7159ef10..8e5ced20 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java
@@ -2,13 +2,13 @@ package it.integry.integrywmsnative.gest.versamento_merce.viewmodel;
import android.app.Activity;
import android.app.Dialog;
-import android.app.ProgressDialog;
import android.content.Context;
-import androidx.databinding.ObservableArrayList;
-import androidx.databinding.ObservableField;
import android.text.Html;
import android.text.SpannableString;
+import androidx.databinding.ObservableArrayList;
+import androidx.databinding.ObservableField;
+
import com.annimon.stream.Stream;
import java.math.BigDecimal;
@@ -16,10 +16,9 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeType;
import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
-import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
-import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
@@ -28,6 +27,9 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
+import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -42,8 +44,6 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
-import it.integry.plugins.barcode_base_library.model.BarcodeType;
public class VersamentoMerceViewModel {
@@ -72,6 +72,8 @@ public class VersamentoMerceViewModel {
((IPoppableActivity)mContext).pop();
} else if((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)){
setMtbColt(mtbColt);
+ } else if(mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno().equals(+1)){
+ setMtbColt(mtbColt);
} else {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(Html.fromHtml("Sono accettate solamente UL di Acquisto o Lavorazione di CARICO")),
@@ -305,6 +307,10 @@ public class VersamentoMerceViewModel {
.setDataColloRif(cloneMtbColr.getDataColloS());
}
+ if(sourceMtbColt.getGestioneEnum() == GestioneEnum.VENDITA && sourceMtbColt.getSegno() == +1){
+ cloneMtbColr.setCodJcom(null);
+ }
+
cloneMtbColr
.setGestione((String) null)
.setSerCollo(null)
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java
index ed58ea00..629d7283 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgress.java
@@ -9,39 +9,48 @@ import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;
+import androidx.databinding.DataBindingUtil;
+
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.databinding.DialogProgressBinding;
public class DialogProgress {
private Context mContext;
-
+ private DialogProgressBinding mBinding;
private Dialog mDialog;
+ public static Dialog make(Context context,String subtitle) {
+ DialogProgress progress = new DialogProgress(context);
+ progress.setSubtitle(subtitle);
+ return progress.mDialog;
+ }
+
public static Dialog make(Context context) {
return new DialogProgress(context).mDialog;
}
- public DialogProgress(Context context) {
+ private DialogProgress(Context context) {
mContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
- View currentView = inflater.inflate(R.layout.dialog_progress, null, false);
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_progress, null, false);
final Thread[] progressBarThread = new Thread[1];
mDialog = new Dialog(mContext);
- mDialog.setContentView(currentView);
+ mDialog.setContentView(mBinding.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.setCancelable(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mDialog.setOnShowListener(dialog -> {
// ((ProgressBar) currentView.findViewById(R.id.progressBar)).setIndeterminate(true);
- progressBarThread[0] = UtilityProgress.makeProgressBarIndeterminate(currentView.findViewById(R.id.progressBar));
+ progressBarThread[0] = UtilityProgress.makeProgressBarIndeterminate(mBinding.progressBar);
});
mDialog.setOnDismissListener(dialog -> {
@@ -49,4 +58,8 @@ public class DialogProgress {
});
}
+ private void setSubtitle(String subtitle){
+ mBinding.subtitleText.setText(subtitle);
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
index 785e53da..9698bf7d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
@@ -32,7 +32,7 @@ import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogAskPositionOfLuBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogAskPositionOfLU {
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java
index 8e98734d..964ac72e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageHelper.java
@@ -1,7 +1,7 @@
package it.integry.integrywmsnative.view.dialogs.base;
import android.app.Activity;
-import android.app.AlertDialog;
+import androidx.appcompat.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.res.ColorStateList;
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java
index 94e0ea14..df51cafc 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java
@@ -34,7 +34,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogChooseArtsFromListaArts {
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java
index 87406539..dce07584 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java
@@ -1,6 +1,6 @@
package it.integry.integrywmsnative.view.dialogs.input_quantity;
-import android.app.AlertDialog;
+import androidx.appcompat.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
@@ -47,7 +47,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogInputQuantityArticoloBinding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogInputQuantity {
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java
index 014288c0..dbf24689 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java
@@ -27,7 +27,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogScanArt {
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java
index 7f468796..d378336e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java
@@ -1,28 +1,28 @@
package it.integry.integrywmsnative.view.dialogs.scan_or_create_lu;
import android.app.Dialog;
-import android.app.ProgressDialog;
import android.content.Context;
-import androidx.databinding.DataBindingUtil;
-
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
+import androidx.databinding.DataBindingUtil;
+
import com.annimon.stream.Stream;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
-import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
-import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
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.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
+import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
@@ -30,7 +30,6 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
public class DialogScanOrCreateLU {
diff --git a/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.png b/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.png
new file mode 100644
index 00000000..d59f1400
Binary files /dev/null and b/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.png differ
diff --git a/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.png b/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.png
new file mode 100644
index 00000000..c46805ee
Binary files /dev/null and b/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.png differ
diff --git a/app/src/main/res/drawable/ic_purchasing_orders.xml b/app/src/main/res/drawable/ic_purchasing_orders.xml
new file mode 100644
index 00000000..11887e38
--- /dev/null
+++ b/app/src/main/res/drawable/ic_purchasing_orders.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_save_24.xml b/app/src/main/res/drawable/ic_save_24.xml
new file mode 100644
index 00000000..a561d632
--- /dev/null
+++ b/app/src/main/res/drawable/ic_save_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml b/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml
new file mode 100644
index 00000000..d8bf2236
--- /dev/null
+++ b/app/src/main/res/layout/activity_pvordine_acquisto_edit.xml
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_progress.xml b/app/src/main/res/layout/dialog_progress.xml
index 3275cdc9..2a9fa222 100644
--- a/app/src/main/res/layout/dialog_progress.xml
+++ b/app/src/main/res/layout/dialog_progress.xml
@@ -1,8 +1,15 @@
-
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_scan_codice_griglia.xml b/app/src/main/res/layout/dialog_scan_codice_griglia.xml
new file mode 100644
index 00000000..6510708b
--- /dev/null
+++ b/app/src/main/res/layout/dialog_scan_codice_griglia.xml
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ultime_consegne_filtro_avanzato.xml b/app/src/main/res/layout/dialog_ultime_consegne_filtro_avanzato.xml
new file mode 100644
index 00000000..e11c1cf5
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ultime_consegne_filtro_avanzato.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ultimi_arrivi_fornitore_filtro_avanzato.xml b/app/src/main/res/layout/dialog_ultimi_arrivi_fornitore_filtro_avanzato.xml
new file mode 100644
index 00000000..b6c3b0c7
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ultimi_arrivi_fornitore_filtro_avanzato.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml
index 5a35575b..a5ea480f 100644
--- a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml
+++ b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml
@@ -190,11 +190,11 @@
+ android:id="@+id/input_data_cons"
+ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/ship_date">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_main_ultime_consegne_cliente__list_header.xml b/app/src/main/res/layout/fragment_main_ultime_consegne_cliente__list_header.xml
index ec125d50..6cc42a8f 100644
--- a/app/src/main/res/layout/fragment_main_ultime_consegne_cliente__list_header.xml
+++ b/app/src/main/res/layout/fragment_main_ultime_consegne_cliente__list_header.xml
@@ -9,42 +9,22 @@
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
-
-
+ style="@style/AppTheme.NewMaterial.Text.ListDivider"
+ android:layout_marginStart="14dp"
+ android:layout_marginEnd="14dp"
+ android:layout_marginTop="14dp"
+ android:textAllCaps="true"
+ android:ellipsize="end"
+ android:singleLine="true"
+ android:textStyle="bold"
+ android:textColor="@color/colorAccent"
+ tools:text="Title here"/>
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_main_ultime_consegne_cliente__list_single_item.xml b/app/src/main/res/layout/fragment_main_ultime_consegne_cliente__list_single_item.xml
index fdce7099..1d98423a 100644
--- a/app/src/main/res/layout/fragment_main_ultime_consegne_cliente__list_single_item.xml
+++ b/app/src/main/res/layout/fragment_main_ultime_consegne_cliente__list_single_item.xml
@@ -8,31 +8,36 @@
type="it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO" />
-
-
-
+
+
+
@@ -58,16 +65,16 @@
+ android:singleLine="true"
+ tools:text="SUB TITLE" />
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ordine_a_pv_transmitted__list_model.xml b/app/src/main/res/layout/fragment_ordine_a_pv_transmitted__list_model.xml
new file mode 100644
index 00000000..dbcbe611
--- /dev/null
+++ b/app/src/main/res/layout/fragment_ordine_a_pv_transmitted__list_model.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_ordini_a_pv__list_single_item.xml b/app/src/main/res/layout/fragment_ordini_a_pv__list_single_item.xml
new file mode 100644
index 00000000..4b3bad10
--- /dev/null
+++ b/app/src/main/res/layout/fragment_ordini_a_pv__list_single_item.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml
new file mode 100644
index 00000000..ec3fc9c1
--- /dev/null
+++ b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml b/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml
new file mode 100644
index 00000000..33800c29
--- /dev/null
+++ b/app/src/main/res/layout/fragment_pv_ordini_a_trasmessi_elenco.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml b/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml
new file mode 100644
index 00000000..b9706a7e
--- /dev/null
+++ b/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_header.xml b/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_header.xml
new file mode 100644
index 00000000..726cef3e
--- /dev/null
+++ b/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_header.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_single_item.xml b/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_single_item.xml
new file mode 100644
index 00000000..74516a07
--- /dev/null
+++ b/app/src/main/res/layout/fragment_pv_ordini_acquisto__list_single_item.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ultime_consegne_fornitore.xml b/app/src/main/res/layout/fragment_ultime_consegne_fornitore.xml
deleted file mode 100644
index f74fe924..00000000
--- a/app/src/main/res/layout/fragment_ultime_consegne_fornitore.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ultime_consegne_fornitore__list_header.xml b/app/src/main/res/layout/fragment_ultime_consegne_fornitore__list_header.xml
deleted file mode 100644
index 1ee93afe..00000000
--- a/app/src/main/res/layout/fragment_ultime_consegne_fornitore__list_header.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml
new file mode 100644
index 00000000..e99b9c24
--- /dev/null
+++ b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore__list_header.xml b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore__list_header.xml
new file mode 100644
index 00000000..52551ab1
--- /dev/null
+++ b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore__list_header.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_ultime_consegne_fornitore__list_single_item.xml b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore__list_single_item.xml
similarity index 91%
rename from app/src/main/res/layout/fragment_ultime_consegne_fornitore__list_single_item.xml
rename to app/src/main/res/layout/fragment_ultimi_arrivi_fornitore__list_single_item.xml
index 40531216..462bbc24 100644
--- a/app/src/main/res/layout/fragment_ultime_consegne_fornitore__list_single_item.xml
+++ b/app/src/main/res/layout/fragment_ultimi_arrivi_fornitore__list_single_item.xml
@@ -8,7 +8,7 @@
type="it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO" />
-
-
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 7cd6a3a7..facad139 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -116,6 +116,7 @@
Creazione UL
Quantità
+ Confezioni
Qtà
Ord
@@ -155,6 +156,7 @@
Nessuna UL registrata a magazzino
Nessun articolo da prelevare
+ Nessun documento da mostrare
Nessun ordine da evadere
Nessun articolo
@@ -182,6 +184,7 @@
Termini di consegna
Automezzo
Deposito
+ Ragione sociale
ID Viaggio
Agente
Vettore
@@ -252,9 +255,31 @@
Spedito il %s
Consegnato il %s
+ Personalizzazioni Frudis
Il lotto %s non è attivo. Continuare?
+ Punto Vendita
+ Dynamic SaporiVeri
+ SaporiVeri PV
+ Genera ordini di acqusito
+ Ordini di acquisto trasmessi
+ Ordini di Acquisto
+ Ordini trasmessi
+ Seleziona Griglia
+ Scansiona il codice a barre di una griglia
+
Altro
Home
Logout
+ Ordini aperti
+ Controllo ordini aperti
+ %s articoli]]>
+ Descrizione griglia:
+ Descrizione deposito:
+ Articoli in griglia:
+ Griglia:
+ Seleziona / Crea ordine
+ Aggiungi
+ Chiudi ed esporta ordine
+ Chiudi ordine
\ No newline at end of file
diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml
index 34f79424..afd797c8 100644
--- a/app/src/main/res/values/config.xml
+++ b/app/src/main/res/values/config.xml
@@ -6,6 +6,7 @@
+
@@ -22,6 +23,8 @@
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1faca8c2..f62bfd82 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -113,6 +113,7 @@
LU Creation
Quantity
+ Packages
Qty
Ord
@@ -156,6 +157,7 @@
No LU already registered
No items to pick
+ No documents to show
No orders to dispatch
No items
@@ -185,6 +187,7 @@
Terms of delivery
Vehicle
Deposit
+ Company name
Travel ID
Agent
Carrier
@@ -264,4 +267,24 @@
Home
Logout
+ Dynamic SaporiVeri
+ SaporiVeri PV
+ Sale point
+ Generate purchase orders
+ Transmitted purchase orders
+ Purchase Orders
+ Transmitted Orders
+ Select grid
+ scan the barcode for the wanted grid
+ Open orders
+ Checking for open orders
+ %s items]]>
+ Grid description:
+ Storage description:
+ Items in grid:
+ Grid:
+ Select/Create order
+ Add
+ Close and export
+ Close order
diff --git a/barcode_base_android_library/.gitignore b/barcode_base_android_library/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/barcode_base_android_library/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle
new file mode 100644
index 00000000..68c6efcb
--- /dev/null
+++ b/barcode_base_android_library/build.gradle
@@ -0,0 +1,33 @@
+apply plugin: 'com.android.library'
+
+android {
+ compileSdkVersion 28
+
+
+ defaultConfig {
+ minSdkVersion 21
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
diff --git a/barcode_base_android_library/consumer-rules.pro b/barcode_base_android_library/consumer-rules.pro
new file mode 100644
index 00000000..e69de29b
diff --git a/barcode_base_android_library/proguard-rules.pro b/barcode_base_android_library/proguard-rules.pro
new file mode 100644
index 00000000..f1b42451
--- /dev/null
+++ b/barcode_base_android_library/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/barcode_base_android_library/src/androidTest/java/it/integry/barcode_base_android_library/ExampleInstrumentedTest.java b/barcode_base_android_library/src/androidTest/java/it/integry/barcode_base_android_library/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..f430e9e7
--- /dev/null
+++ b/barcode_base_android_library/src/androidTest/java/it/integry/barcode_base_android_library/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package it.integry.barcode_base_android_library;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals("it.integry.barcode_base_android_library.test", appContext.getPackageName());
+ }
+}
diff --git a/barcode_base_android_library/src/main/AndroidManifest.xml b/barcode_base_android_library/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..f560fa39
--- /dev/null
+++ b/barcode_base_android_library/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/exception/BarcodeAdapterNotFoundException.java b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/exception/BarcodeAdapterNotFoundException.java
new file mode 100644
index 00000000..78def51d
--- /dev/null
+++ b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/exception/BarcodeAdapterNotFoundException.java
@@ -0,0 +1,9 @@
+package it.integry.barcode_base_android_library.exception;
+
+public class BarcodeAdapterNotFoundException extends Exception {
+
+ public BarcodeAdapterNotFoundException(String adapterName) {
+ super("L'adapter " + adapterName + " non è stato rilevato sul dispositivo corrente");
+ }
+
+}
diff --git a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/extension/RunnableArgs.java b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/extension/RunnableArgs.java
new file mode 100644
index 00000000..303dabb3
--- /dev/null
+++ b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/extension/RunnableArgs.java
@@ -0,0 +1,7 @@
+package it.integry.barcode_base_android_library.extension;
+
+public interface RunnableArgs {
+
+ void run(T data);
+
+}
\ No newline at end of file
diff --git a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java
new file mode 100644
index 00000000..7b8c48b9
--- /dev/null
+++ b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/interfaces/BarcodeReaderInterface.java
@@ -0,0 +1,24 @@
+package it.integry.barcode_base_android_library.interfaces;
+
+
+import android.view.KeyEvent;
+
+import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
+import it.integry.barcode_base_android_library.extension.RunnableArgs;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+
+public interface BarcodeReaderInterface {
+
+ boolean isRightAdapter();
+
+ void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException;
+
+ void deinit();
+
+ void register(RunnableArgs onScanSuccessfull, RunnableArgs onScanFailed);
+
+ String getAdapterName();
+
+ void onKeyEvent(KeyEvent keyEvent);
+
+}
diff --git a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeScanDTO.java b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeScanDTO.java
new file mode 100644
index 00000000..ddde65c3
--- /dev/null
+++ b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeScanDTO.java
@@ -0,0 +1,55 @@
+package it.integry.barcode_base_android_library.model;
+
+public class BarcodeScanDTO {
+
+ private BarcodeType type;
+ private String stringValue;
+ private byte[] byteValue;
+ private String name;
+ private int decodingTime;
+
+ public BarcodeType getType() {
+ return type;
+ }
+
+ public BarcodeScanDTO setType(BarcodeType type) {
+ this.type = type;
+ return this;
+ }
+
+ public String getStringValue() {
+ return stringValue;
+ }
+
+ public BarcodeScanDTO setStringValue(String stringValue) {
+ this.stringValue = stringValue;
+ return this;
+ }
+
+ public byte[] getByteValue() {
+ return byteValue;
+ }
+
+ public BarcodeScanDTO setByteValue(byte[] byteValue) {
+ this.byteValue = byteValue;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public BarcodeScanDTO setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public int getDecodingTime() {
+ return decodingTime;
+ }
+
+ public BarcodeScanDTO setDecodingTime(int decodingTime) {
+ this.decodingTime = decodingTime;
+ return this;
+ }
+}
diff --git a/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeType.java b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeType.java
new file mode 100644
index 00000000..566fe580
--- /dev/null
+++ b/barcode_base_android_library/src/main/java/it/integry/barcode_base_android_library/model/BarcodeType.java
@@ -0,0 +1,91 @@
+package it.integry.barcode_base_android_library.model;
+
+public enum BarcodeType {
+
+ NIL(0),
+ AIRLINE_2OF5_13_DIGIT(1),
+ AIRLINE_2OF5_15_DIGIT(2),
+ AZTEC(3),
+ AUSTRALIAN_POSTAL(4),
+ BOOKLAND_EAN(5),
+ BPO(6),
+ CANPOST(7),
+ CHINAPOST(8),
+ CHINESE_2OF5(9),
+ CODABAR(10),
+ CODABLOCK(11),
+ CODE11(12),
+ CODE128(13),
+ CODE16K(14),
+ CODE32(15),
+ CODE39(16),
+ CODE49(17),
+ CODE93(18),
+ COMPOSITE(19),
+ COUPON_CODE(20),
+ DATAMATRIX(21),
+ DISCRETE_2OF5(22),
+ DUTCH_POSTAL(23),
+ EAN128(24),
+ EAN13(25),
+ EAN8(26),
+ GS1_DATABAR_14(27),
+ GS1_DATABAR_EXPANDED(28),
+ GS1_DATABAR_LIMITED(29),
+ HONGKONG_2OF5(30),
+ IATA_2OF5(31),
+ IDTAG(32),
+ INTERLEAVED_2OF5(33),
+ ISBT128(34),
+ JAPANESE_POSTAL(35),
+ KOREAN_POSTAL(36),
+ MATRIX_2OF5(37),
+ MAXICODE(38),
+ MESA(39),
+ MICRO_PDF417(40),
+ MICRO_QR(41),
+ MSI(42),
+ NEC_2OF5(43),
+ OCR(44),
+ PDF417(45),
+ PLESSEY(46),
+ POSICODE(47),
+ POST_US4(48),
+ QR(49),
+ STRAIGHT_2OF5(50),
+ STANDARD_2OF5(51),
+ TELEPEN(52),
+ TLCODE39(53),
+ TRIOPTIC(54),
+ UK_POSTAL(55),
+ UPCA(56),
+ UPCE(57),
+ UPCE1(58),
+ US_PLANET(59),
+ US_POSTNET(60),
+ USPS_4CB(61),
+ RSS(62),
+ LABEL(63),
+ HANXIN(64),
+ GRIDMATRIX(65),
+ INFO_MAIL(66),
+ INTELLIGENT_MAIL(67),
+ SWEDENPOST(68),
+ LAST(69);
+
+ private Integer text;
+ BarcodeType(Integer text) {
+ this.text = text;
+ }
+ public Integer getValue() {
+ return this.text;
+ }
+
+ public static BarcodeType fromInt(Integer text) {
+ for (BarcodeType b : BarcodeType.values()) {
+ if (b.text.equals(text)) return b;
+ }
+ return null;
+ }
+
+}
diff --git a/barcode_base_android_library/src/main/res/values/strings.xml b/barcode_base_android_library/src/main/res/values/strings.xml
new file mode 100644
index 00000000..cd6d432a
--- /dev/null
+++ b/barcode_base_android_library/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ barcode_base_android_library
+
diff --git a/barcode_base_android_library/src/test/java/it/integry/barcode_base_android_library/ExampleUnitTest.java b/barcode_base_android_library/src/test/java/it/integry/barcode_base_android_library/ExampleUnitTest.java
new file mode 100644
index 00000000..392f4995
--- /dev/null
+++ b/barcode_base_android_library/src/test/java/it/integry/barcode_base_android_library/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package it.integry.barcode_base_android_library;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/exception/BarcodeAdapterNotFoundException.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/exception/BarcodeAdapterNotFoundException.java
index 063a539d..78def51d 100644
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/exception/BarcodeAdapterNotFoundException.java
+++ b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/exception/BarcodeAdapterNotFoundException.java
@@ -1,4 +1,4 @@
-package it.integry.plugins.barcode_base_library.exception;
+package it.integry.barcode_base_android_library.exception;
public class BarcodeAdapterNotFoundException extends Exception {
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/extension/RunnableArgs.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/extension/RunnableArgs.java
index c0cfd124..303dabb3 100644
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/extension/RunnableArgs.java
+++ b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/extension/RunnableArgs.java
@@ -1,4 +1,4 @@
-package it.integry.plugins.barcode_base_library.extension;
+package it.integry.barcode_base_android_library.extension;
public interface RunnableArgs {
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java
index 0451cb2e..41863b49 100644
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java
+++ b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java
@@ -1,8 +1,9 @@
-package it.integry.plugins.barcode_base_library.interfaces;
+package it.integry.barcode_base_android_library.interfaces;
-import it.integry.plugins.barcode_base_library.extension.RunnableArgs;
-import it.integry.plugins.barcode_base_library.exception.BarcodeAdapterNotFoundException;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+
+import it.integry.barcode_base_android_library.extension.RunnableArgs;
+import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public interface BarcodeReaderInterface {
@@ -16,4 +17,6 @@ public interface BarcodeReaderInterface {
String getAdapterName();
+ //void onKeyEvent(KeyEvent keyEvent);
+
}
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeScanDTO.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeScanDTO.java
index 5ac0a3f2..ddde65c3 100644
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeScanDTO.java
+++ b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeScanDTO.java
@@ -1,4 +1,4 @@
-package it.integry.plugins.barcode_base_library.model;
+package it.integry.barcode_base_android_library.model;
public class BarcodeScanDTO {
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeType.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeType.java
index 67b65c01..566fe580 100644
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeType.java
+++ b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeType.java
@@ -1,4 +1,4 @@
-package it.integry.plugins.barcode_base_library.model;
+package it.integry.barcode_base_android_library.model;
public enum BarcodeType {
diff --git a/build.gradle b/build.gradle
index 9ceb8929..772ddfdf 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,8 +16,8 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- classpath 'com.google.gms:google-services:4.2.0'
- classpath 'com.google.firebase:perf-plugin:1.2.1'
+ classpath 'com.google.gms:google-services:4.3.2'
+ classpath 'com.google.firebase:perf-plugin:1.3.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java
index 9410777b..b65158bb 100644
--- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java
+++ b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationIME.java
@@ -6,7 +6,7 @@ import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.ProdOrdineLavorazioneElencoFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
-import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.UltimiArriviFornitoreFragment;
+import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
diff --git a/dynamic_saporiveri_pv/.gitignore b/dynamic_saporiveri_pv/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/dynamic_saporiveri_pv/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/dynamic_saporiveri_pv/build.gradle b/dynamic_saporiveri_pv/build.gradle
new file mode 100644
index 00000000..06cb2f7c
--- /dev/null
+++ b/dynamic_saporiveri_pv/build.gradle
@@ -0,0 +1,28 @@
+apply plugin: 'com.android.dynamic-feature'
+
+android {
+ compileSdkVersion 28
+
+
+
+ defaultConfig {
+ minSdkVersion 21
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ }
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation project(':app')
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+}
diff --git a/dynamic_saporiveri_pv/src/main/AndroidManifest.xml b/dynamic_saporiveri_pv/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..ae16afaa
--- /dev/null
+++ b/dynamic_saporiveri_pv/src/main/AndroidManifest.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
new file mode 100644
index 00000000..ef4bfdf9
--- /dev/null
+++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
@@ -0,0 +1,29 @@
+package it.integry.wms.dynamic_customization;
+
+import android.content.Context;
+import android.util.Log;
+
+import it.integry.integrywmsnative.core.class_router.ClassRouter;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.wms.dynamic_customization.extensions.CustomConfiguration;
+import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita;
+import it.integry.wms.dynamic_customization.extensions.OrdiniVendita;
+
+public class DynamicContext {
+
+ public void init(Context context) {
+ Log.d("DynamicContext", "Caricamento personalizzazioni per SaporiVeri(PV)");
+
+ try {
+ ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class);
+ ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class);
+ ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class);
+ } catch (Exception ex) {
+ UtilityExceptions.defaultException(context, ex);
+ }
+
+ Log.d("DynamicContext", "Caricamento personalizzazioni per SasporiVeri(PV) COMPLETATO");
+
+ }
+
+}
diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
new file mode 100644
index 00000000..1b645f98
--- /dev/null
+++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
@@ -0,0 +1,12 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
+import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
+
+public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration {
+
+ public CustomConfiguration() {
+ configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationSAPORIVERIPV());
+ }
+
+}
diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java
new file mode 100644
index 00000000..77adb537
--- /dev/null
+++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java
@@ -0,0 +1,21 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita;
+
+public class FiltroOrdiniVendita implements IFiltroOrdiniVendita {
+
+ @Override
+ public boolean shoudShowCodMdepFilter() {
+ return false;
+ }
+
+ @Override
+ public boolean shoudShowIdViaggioFilter() {
+ return false;
+ }
+
+ @Override
+ public boolean shoudShowAgenteFilter() {
+ return false;
+ }
+}
diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java
new file mode 100644
index 00000000..adc468ed
--- /dev/null
+++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationSAPORIVERIPV.java
@@ -0,0 +1,33 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
+import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
+
+public class MenuConfigurationSAPORIVERIPV extends BaseMenuConfiguration {
+
+ public MenuConfigurationSAPORIVERIPV() {
+
+ this
+ .addGroup(
+ new MenuGroup()
+ .setGroupText(it.integry.integrywmsnative.R.string.punto_vendita)
+ .setGroupId(it.integry.integrywmsnative.R.id.nav_group_puntivendita)
+
+ .addItem(new MenuItem()
+ .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto)
+ .setTitleText(it.integry.integrywmsnative.R.string.generate_orders)
+ .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
+ .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
+ .setFragmentClass(PVOrdiniAcquistoGrigliaFragment.newInstance()))
+// .addItem(new MenuItem()
+// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi)
+// .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders)
+// .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list)
+// .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list)
+// .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance()))
+ );
+
+
+ }
+
+}
diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
new file mode 100644
index 00000000..fa517094
--- /dev/null
+++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
@@ -0,0 +1,26 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import android.app.Dialog;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityToast;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
+
+public class OrdiniVendita implements IOrdiniVendita {
+
+
+ @Override
+ public void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ //UtilityToast.showToast("Avviato metodo in SaporiVeriPv");
+
+ ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
+ onComplete,
+ onFailed);
+ }
+}
diff --git a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationVG.java b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationVG.java
index 954d69fb..aebf7833 100644
--- a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationVG.java
+++ b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationVG.java
@@ -4,7 +4,6 @@ import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfigurati
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
-import it.integry.integrywmsnative.gest.ultime_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle
index b141d6c4..d20fd416 100644
--- a/honeywellscannerlibrary/build.gradle
+++ b/honeywellscannerlibrary/build.gradle
@@ -30,9 +30,9 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
- implementation 'androidx.appcompat:appcompat:1.0.2'
+ implementation 'androidx.appcompat:appcompat:1.1.0'
testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test:runner:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
- implementation project(path: ':barcode_base_library')
+ androidTestImplementation 'androidx.test:runner:1.2.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation project(path: ':barcode_base_android_library')
}
diff --git a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java
index 719f5d01..fda391e6 100644
--- a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java
+++ b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneyWellBarcodeReader.java
@@ -1,10 +1,7 @@
package it.integry.honeywellscannerlibrary;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
import android.os.Build;
+import android.view.KeyEvent;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@@ -22,10 +19,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import it.integry.plugins.barcode_base_library.exception.BarcodeAdapterNotFoundException;
-import it.integry.plugins.barcode_base_library.extension.RunnableArgs;
-import it.integry.plugins.barcode_base_library.interfaces.BarcodeReaderInterface;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
+import it.integry.barcode_base_android_library.extension.RunnableArgs;
+import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class HoneyWellBarcodeReader implements BarcodeReaderInterface {
@@ -110,9 +107,10 @@ public class HoneyWellBarcodeReader implements BarcodeReaderInterface {
return "Honeywell";
}
+ @Override
+ public void onKeyEvent(KeyEvent keyEvent) {
-
-
+ }
private void registerListenersInternal() {
diff --git a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneywellBarcodeTypeMapper.java b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneywellBarcodeTypeMapper.java
index 103b276f..85a36c50 100644
--- a/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneywellBarcodeTypeMapper.java
+++ b/honeywellscannerlibrary/src/main/java/it/integry/honeywellscannerlibrary/HoneywellBarcodeTypeMapper.java
@@ -2,7 +2,7 @@ package it.integry.honeywellscannerlibrary;
import android.util.Log;
-import it.integry.plugins.barcode_base_library.model.BarcodeType;
+import it.integry.barcode_base_android_library.model.BarcodeType;
public class HoneywellBarcodeTypeMapper {
diff --git a/keyboardemulatorscannerlibrary/.gitignore b/keyboardemulatorscannerlibrary/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/keyboardemulatorscannerlibrary/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/keyboardemulatorscannerlibrary/build.gradle b/keyboardemulatorscannerlibrary/build.gradle
new file mode 100644
index 00000000..68bb7760
--- /dev/null
+++ b/keyboardemulatorscannerlibrary/build.gradle
@@ -0,0 +1,8 @@
+apply plugin: 'java-library'
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+}
+
+sourceCompatibility = "7"
+targetCompatibility = "7"
diff --git a/keyboardemulatorscannerlibrary/src/main/java/it/integry/keyboardemulatorscannerlibrary/KeyboardEmulator.java b/keyboardemulatorscannerlibrary/src/main/java/it/integry/keyboardemulatorscannerlibrary/KeyboardEmulator.java
new file mode 100644
index 00000000..fab77668
--- /dev/null
+++ b/keyboardemulatorscannerlibrary/src/main/java/it/integry/keyboardemulatorscannerlibrary/KeyboardEmulator.java
@@ -0,0 +1,4 @@
+package it.integry.keyboardemulatorscannerlibrary;
+
+public class KeyboardEmulator {
+}
diff --git a/keyobardemulatorscannerlibrary/.gitignore b/keyobardemulatorscannerlibrary/.gitignore
new file mode 100644
index 00000000..796b96d1
--- /dev/null
+++ b/keyobardemulatorscannerlibrary/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle
new file mode 100644
index 00000000..998707aa
--- /dev/null
+++ b/keyobardemulatorscannerlibrary/build.gradle
@@ -0,0 +1,35 @@
+apply plugin: 'com.android.library'
+
+android {
+ compileSdkVersion 28
+
+
+
+ defaultConfig {
+ minSdkVersion 21
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation project(':barcode_base_android_library')
+}
diff --git a/keyobardemulatorscannerlibrary/consumer-rules.pro b/keyobardemulatorscannerlibrary/consumer-rules.pro
new file mode 100644
index 00000000..e69de29b
diff --git a/keyobardemulatorscannerlibrary/proguard-rules.pro b/keyobardemulatorscannerlibrary/proguard-rules.pro
new file mode 100644
index 00000000..f1b42451
--- /dev/null
+++ b/keyobardemulatorscannerlibrary/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/keyobardemulatorscannerlibrary/src/androidTest/java/it/integry/keyobardemulatorscannerlibrary/ExampleInstrumentedTest.java b/keyobardemulatorscannerlibrary/src/androidTest/java/it/integry/keyobardemulatorscannerlibrary/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..fce0e162
--- /dev/null
+++ b/keyobardemulatorscannerlibrary/src/androidTest/java/it/integry/keyobardemulatorscannerlibrary/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package it.integry.keyobardemulatorscannerlibrary;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals("it.integry.keyobardemulatorscannerlibrary.test", appContext.getPackageName());
+ }
+}
diff --git a/keyobardemulatorscannerlibrary/src/main/AndroidManifest.xml b/keyobardemulatorscannerlibrary/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..71b0d304
--- /dev/null
+++ b/keyobardemulatorscannerlibrary/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java
new file mode 100644
index 00000000..e98db0ec
--- /dev/null
+++ b/keyobardemulatorscannerlibrary/src/main/java/it/integry/keyobardemulatorscannerlibrary/KeyboardEmulatorBarcodeReader.java
@@ -0,0 +1,111 @@
+package it.integry.keyobardemulatorscannerlibrary;
+
+import android.view.KeyCharacterMap;
+import android.view.KeyEvent;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import java.util.regex.Pattern;
+
+import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
+import it.integry.barcode_base_android_library.extension.RunnableArgs;
+import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeType;
+
+public class KeyboardEmulatorBarcodeReader implements BarcodeReaderInterface {
+
+ private String barcode;
+ private RunnableArgs mOnScanSuccessfull;
+ private RunnableArgs mOnScanFailed;
+ private String mTextBarcode = "";
+ private long mLastCharInsertTime = 0;
+
+
+ public KeyboardEmulatorBarcodeReader(AppCompatActivity context) {
+
+ }
+
+ @Override
+ public boolean isRightAdapter() {
+ return true;
+ }
+
+ @Override
+ public void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException {
+ onDeviceReady.run();
+ }
+
+ @Override
+ public void deinit() {
+
+ }
+
+ @Override
+ public void register(RunnableArgs onScanSuccessfull, RunnableArgs onScanFailed) {
+ mOnScanSuccessfull = onScanSuccessfull;
+ mOnScanFailed = onScanFailed;
+ }
+
+ @Override
+ public String getAdapterName() {
+ return "KeyboardEmulator";
+ }
+
+ @Override
+ public void onKeyEvent(KeyEvent keyEvent) {
+
+ if (keyEvent.getEventTime() - mLastCharInsertTime > 500){
+ mLastCharInsertTime =keyEvent.getEventTime();
+ mTextBarcode = "";
+ }
+ if (keyEvent.getKeyCode() != KeyEvent.KEYCODE_ENTER){
+ if (keyEvent.getKeyCode() != KeyEvent.KEYCODE_SHIFT_LEFT){
+ mLastCharInsertTime =keyEvent.getEventTime();
+ mTextBarcode+= (char) keyEvent.getUnicodeChar();
+ }
+ }else{
+ if (mTextBarcode.length() > 0){
+
+ BarcodeType barcodeType = decodeBarcode(mTextBarcode);
+ BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO()
+ .setByteValue(mTextBarcode.getBytes())
+ .setStringValue(mTextBarcode)
+ .setType(barcodeType)
+ .setName(barcodeType != null ? barcodeType.toString():"");
+
+ mOnScanSuccessfull.run(barcodeScanDTO);
+ }
+ }
+
+ }
+
+ public BarcodeType decodeBarcode(String barcode){
+/*
+ Pattern patternUPCA = Pattern.compile("^[0-9]{12}$");
+ Pattern patternUPCE = Pattern.compile("^[0-1][0-9]{7}$");
+ Pattern patternUPCE1 = Pattern.compile("");
+ Pattern patternEAN8 = Pattern.compile("^[0-9]{8}$");
+ Pattern patternEAN13 = Pattern.compile("^[0-9]{13}$");
+ Pattern patternCODE11 = Pattern.compile("");
+ Pattern patternCODE39 = Pattern.compile("");
+ if(){
+ return BarcodeType.CODE11;
+ }else if(){
+ return BarcodeType.CODE39;
+ }else if(){
+ return BarcodeType.EAN13;
+ }else if(){
+ return BarcodeType.EAN8;
+ }else if(){
+ return BarcodeType.UPCA;
+ }else if(){
+ return BarcodeType.UPCE;
+ }else if(false){
+ return BarcodeType.UPCE1;
+ }else{
+ return BarcodeType.CODE128;
+ }*/
+ return BarcodeType.CODE128;
+ }
+}
diff --git a/keyobardemulatorscannerlibrary/src/main/res/values/strings.xml b/keyobardemulatorscannerlibrary/src/main/res/values/strings.xml
new file mode 100644
index 00000000..58df4bae
--- /dev/null
+++ b/keyobardemulatorscannerlibrary/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ keyobardemulatorscannerlibrary
+
diff --git a/keyobardemulatorscannerlibrary/src/test/java/it/integry/keyobardemulatorscannerlibrary/ExampleUnitTest.java b/keyobardemulatorscannerlibrary/src/test/java/it/integry/keyobardemulatorscannerlibrary/ExampleUnitTest.java
new file mode 100644
index 00000000..a20714c8
--- /dev/null
+++ b/keyobardemulatorscannerlibrary/src/test/java/it/integry/keyobardemulatorscannerlibrary/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package it.integry.keyobardemulatorscannerlibrary;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle
index 7e740b20..c6082bf5 100644
--- a/pointmobilescannerlibrary/build.gradle
+++ b/pointmobilescannerlibrary/build.gradle
@@ -7,7 +7,7 @@ android {
defaultConfig {
minSdkVersion 21
- targetSdkVersion 27
+ targetSdkVersion 28
versionCode 1
versionName "1.0"
@@ -26,9 +26,9 @@ android {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
+ implementation 'androidx.appcompat:appcompat:1.1.0'
testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test:runner:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
- implementation project(':barcode_base_library')
+ androidTestImplementation 'androidx.test:runner:1.2.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation project(':barcode_base_android_library')
}
diff --git a/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java b/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java
index 566feba7..51092164 100644
--- a/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java
+++ b/pointmobilescannerlibrary/src/main/java/it/integry/pointmobilescannerlibrary/PointMobileBarcodeReader.java
@@ -3,7 +3,7 @@ package it.integry.pointmobilescannerlibrary;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.util.Log;
+import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
@@ -12,11 +12,11 @@ import java.nio.charset.StandardCharsets;
import device.common.DecodeResult;
import device.common.ScanConst;
import device.sdk.ScanManager;
-import it.integry.plugins.barcode_base_library.exception.BarcodeAdapterNotFoundException;
-import it.integry.plugins.barcode_base_library.interfaces.BarcodeReaderInterface;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
-import it.integry.plugins.barcode_base_library.extension.RunnableArgs;
-import it.integry.plugins.barcode_base_library.model.BarcodeType;
+import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
+import it.integry.barcode_base_android_library.extension.RunnableArgs;
+import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.model.BarcodeType;
public class PointMobileBarcodeReader implements BarcodeReaderInterface {
@@ -78,8 +78,10 @@ public class PointMobileBarcodeReader implements BarcodeReaderInterface {
return "PointMobile";
}
+ @Override
+ public void onKeyEvent(KeyEvent keyEvent) {
-
+ }
public static class ScanResultReceiver extends BroadcastReceiver {
diff --git a/settings.gradle b/settings.gradle
index 97695f9b..75c1404c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':pointmobilescannerlibrary', ':barcode_base_library', ':dynamic_vgalimenti', ':dynamic__base', ':zebrascannerlibrary', ':honeywellscannerlibrary', ':dynamic_ime', ':dynamic_frudis'
+include ':app', ':pointmobilescannerlibrary', ':dynamic_vgalimenti', ':dynamic__base', ':zebrascannerlibrary', ':honeywellscannerlibrary', ':dynamic_ime', ':dynamic_frudis', ':dynamic_saporiveri_pv', ':keyobardemulatorscannerlibrary', ':barcode_base_android_library'
diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle
index f15207a1..949854b3 100644
--- a/zebrascannerlibrary/build.gradle
+++ b/zebrascannerlibrary/build.gradle
@@ -27,9 +27,9 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'androidx.appcompat:appcompat:1.0.2'
+ implementation 'androidx.appcompat:appcompat:1.1.0'
testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test:runner:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
- implementation project(path: ':barcode_base_library')
+ androidTestImplementation 'androidx.test:runner:1.2.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation project(path: ':barcode_base_android_library')
}
diff --git a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java
index 56a9ef0f..ce276390 100644
--- a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java
+++ b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeReader.java
@@ -5,13 +5,14 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
+import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
-import it.integry.plugins.barcode_base_library.exception.BarcodeAdapterNotFoundException;
-import it.integry.plugins.barcode_base_library.extension.RunnableArgs;
-import it.integry.plugins.barcode_base_library.interfaces.BarcodeReaderInterface;
-import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
+import it.integry.barcode_base_android_library.extension.RunnableArgs;
+import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class ZebraBarcodeReader implements BarcodeReaderInterface {
@@ -66,8 +67,10 @@ public class ZebraBarcodeReader implements BarcodeReaderInterface {
return "Zebra";
}
+ @Override
+ public void onKeyEvent(KeyEvent keyEvent) {
-
+ }
private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() {
diff --git a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeTypeMapper.java b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeTypeMapper.java
index 6aee097f..a59ce5df 100644
--- a/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeTypeMapper.java
+++ b/zebrascannerlibrary/src/main/java/it/integry/zebrascannerlibrary/ZebraBarcodeTypeMapper.java
@@ -2,7 +2,7 @@ package it.integry.zebrascannerlibrary;
import android.util.Log;
-import it.integry.plugins.barcode_base_library.model.BarcodeType;
+import it.integry.barcode_base_android_library.model.BarcodeType;
public class ZebraBarcodeTypeMapper {