diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index a7561653..75d6a640 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -11,11 +11,6 @@
-
-
-
-
-
@@ -26,11 +21,21 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/runConfigurations/app.xml b/.idea/runConfigurations/app_gramm.xml
similarity index 85%
rename from .idea/runConfigurations/app.xml
rename to .idea/runConfigurations/app_gramm.xml
index eaa588bc..b6163a2c 100644
--- a/.idea/runConfigurations/app.xml
+++ b/.idea/runConfigurations/app_gramm.xml
@@ -1,21 +1,19 @@
-
+
-
+
-
+
-
-
diff --git a/.idea/runConfigurations/app_ime.xml b/.idea/runConfigurations/app_ime.xml
index 54458b92..2c5d0c67 100644
--- a/.idea/runConfigurations/app_ime.xml
+++ b/.idea/runConfigurations/app_ime.xml
@@ -6,7 +6,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index c29949de..24b1cc19 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,24 +1,14 @@
-buildscript {
- repositories {
- maven { url 'https://maven.fabric.io/public' }
- }
-
- dependencies {
- classpath 'io.fabric.tools:gradle:1.27.0'
- }
-}
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-perf'
-apply plugin: 'io.fabric'
+apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
-
android {
- def appVersionCode = 148
- def appVersionName = '1.12.19'
+ def appVersionCode = 154
+ def appVersionName = '1.13.8'
signingConfigs {
release {
@@ -35,13 +25,12 @@ android {
}
}
- compileSdkVersion 28
- buildToolsVersion '28.0.3'
+ compileSdkVersion 29
defaultConfig {
applicationId "it.integry.integrywmsnative"
minSdkVersion 21
- targetSdkVersion 28
+ targetSdkVersion 29
versionCode appVersionCode
versionName appVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -49,15 +38,18 @@ android {
}
buildTypes {
+ debug {
+ ext.enableCrashlytics = false
+ }
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
- dataBinding {
- enabled = true
- }
+
+ android.buildFeatures.dataBinding true
+
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
@@ -83,66 +75,62 @@ android {
abortOnError false
}
- dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv", ":dynamic_saporiveri"]
+ dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv", ":dynamic_saporiveri", ':dynamic_gramm']
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
- androidTestImplementation('androidx.test.espresso:espresso-core:3.1.1', {
+ androidTestImplementation('androidx.test.espresso:espresso-core:3.2.0', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.orhanobut:logger:2.2.0'
- implementation 'com.google.firebase:firebase-core:17.2.2'
+ implementation 'com.google.firebase:firebase-core:17.5.0'
implementation 'com.google.firebase:firebase-crash:16.2.1'
- implementation 'com.google.firebase:firebase-perf:19.0.5'
- implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
- implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation 'com.google.firebase:firebase-perf:19.0.8'
+ implementation 'com.google.firebase:firebase-crashlytics:17.2.1'
+ implementation 'androidx.appcompat:appcompat:1.2.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-beta4'
+ implementation 'com.google.android.material:material:1.3.0-alpha02'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
- implementation 'androidx.preference:preference:1.1.0'
- implementation 'com.squareup.okhttp3:okhttp:4.2.2'
- implementation 'com.squareup.retrofit2:retrofit:2.6.2'
- implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
+ implementation 'androidx.preference:preference:1.1.1'
+ implementation 'com.squareup.okhttp3:okhttp:4.5.0'
+ implementation 'com.squareup.retrofit2:retrofit:2.8.1'
+ implementation 'com.squareup.retrofit2:converter-gson:2.8.1'
implementation 'com.annimon:stream:1.2.1'
implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'
- implementation 'org.apache.commons:commons-text:1.6'
- //kapt "androidx.lifecycle:lifecycle-compiler:2.0.0"
+ implementation 'org.apache.commons:commons-text:1.8'
//MVVM
+ def dagger2_version = '2.27'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0"
- implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
- implementation 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.2.0'
- implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.2.0'
- implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.2.0'
- implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.2.0'
- implementation 'br.com.zbra:android-linq:1.1.0'
+ api "com.google.dagger:dagger:$dagger2_version"
+ annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
+ api "com.google.dagger:dagger-android:$dagger2_version"
+ api "com.google.dagger:dagger-android-support:$dagger2_version" // if you use the support libraries
+ annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version"
+
//FAB
implementation 'com.github.clans:fab:1.6.4'
//CUSTOM VIEWS
implementation 'com.github.NaimishTrivedi:FBToast:1.0'
- implementation 'de.hdodenhof:circleimageview:3.0.1'
implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2'
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
- implementation 'com.github.andrefrsousa:SuperBottomSheet:1.2.1@aar'
implementation 'com.fede987:status-bar-alert:1.0.1'
implementation 'com.fxn769:stash:1.2'
- testImplementation 'junit:junit:4.12'
- implementation 'com.mikhaellopez:lazydatepicker:1.0.0'
- implementation 'com.github.demoNo:AutoScrollViewPager:v1.0.2'
+ testImplementation 'junit:junit:4.13'
implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3'
- implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
+ implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM
- def room_version = "2.2.3"
+ def room_version = "2.2.5"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
@@ -153,11 +141,14 @@ dependencies {
//Barcode
implementation project(':pointmobilescannerlibrary')
implementation project(':zebrascannerlibrary')
- implementation project(path: ':barcode_base_android_library')
- implementation project(path: ':honeywellscannerlibrary')
+ implementation project(':barcode_base_android_library')
+ implementation project(':honeywellscannerlibrary')
implementation project(':keyobardemulatorscannerlibrary')
+ implementation project(':barcode_kaiteki')
+ androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.1'
+ androidTestImplementation 'org.testng:testng:7.1.0'
}
repositories {
mavenCentral()
- maven { url 'https://maven.fabric.io/public' }
+ google()
}
diff --git a/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModelTest.java b/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModelTest.java
new file mode 100644
index 00000000..4d85daa1
--- /dev/null
+++ b/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModelTest.java
@@ -0,0 +1,8 @@
+package it.integry.integrywmsnative.gest.spedizione;
+
+class SpedizioneViewModelTest {
+
+ @org.junit.jupiter.api.Test
+ void createNewLU() {
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 73effea7..9f74118b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,6 +18,11 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
+
@@ -60,9 +65,6 @@
android:screenOrientation="portrait"
android:theme="@style/Light" />
-
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
index 574fc65a..f4c51d0c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
@@ -1,46 +1,49 @@
package it.integry.integrywmsnative;
import android.content.Intent;
-
-import androidx.annotation.IdRes;
-import androidx.databinding.DataBindingUtil;
-
import android.os.Bundle;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import com.google.android.material.navigation.NavigationView;
-import androidx.core.view.GravityCompat;
-import androidx.drawerlayout.widget.DrawerLayout;
-import androidx.appcompat.app.ActionBarDrawerToggle;
-import androidx.appcompat.widget.SearchView;
-
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
+import androidx.annotation.IdRes;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.widget.SearchView;
+import androidx.core.view.GravityCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import com.google.android.material.navigation.NavigationView;
+
import java.util.List;
+import javax.inject.Inject;
+
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
+import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
-import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
+import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
+import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISearcableFragment;
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
-import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
+import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.update.UpdatesManager;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.databinding.ActivityMainBinding;
-import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.main.MainFragment;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
@@ -53,11 +56,17 @@ public class MainActivity extends BaseActivity
private boolean firstCheckExecution = true;
private boolean mIsOnline = false;
+ @Inject
+ AppDatabase mAppDatabase;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+ MainApplication.appComponent
+ .mainActivityComponent()
+ .create()
+ .inject(this);
mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_main, null, false);
setContentView(mBinding.getRoot());
@@ -90,6 +99,22 @@ public class MainActivity extends BaseActivity
startActivity(myIntent);
}
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ @Override
+ public boolean onKeyUp(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ onBackPressed();
+ return true;
+ }
+ return super.onKeyUp(keyCode, event);
+ }
@Override
@@ -103,7 +128,10 @@ public class MainActivity extends BaseActivity
if (count == 0) {
super.onBackPressed();
} else {
- pop();
+ Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.frame_container);
+ if (fragment instanceof ILifecycleFragment) {
+ ((ILifecycleFragment) fragment).onPreDestroy(this::pop);
+ } else pop();
// getSupportFragmentManager().popBackStack();
}
@@ -133,7 +161,7 @@ public class MainActivity extends BaseActivity
BaseMenuConfiguration.MenuItem menuItem = getMenuItem(id);
if(menuItem != null) {
- fragment = menuItem.getFragmentClass();
+ fragment = menuItem.getFragmentFactory().run();
this.adaptViewToFragment(fragment);
} else {
switch (id) {
@@ -147,7 +175,7 @@ public class MainActivity extends BaseActivity
break;
case R.id.nav_logout:
- UtilitySettings.logout();
+ UtilitySettings.logout(this.mAppDatabase);
ServerStatusChecker.dispose();
startLoginActivity();
@@ -233,9 +261,6 @@ public class MainActivity extends BaseActivity
for(int i = 0; i < count; i++) {
getSupportFragmentManager().popBackStack();
}
-
- openMain();
-
}
private void adaptViewToFragment(Fragment fragment){
@@ -278,7 +303,12 @@ public class MainActivity extends BaseActivity
if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isEnabled()) {
mBinding.appBarMain.mainSelectAll.setVisibility(View.VISIBLE);
- mBinding.appBarMain.mainSelectAll.setOnClickListener(v -> ((ISelectAllFragment)fragment).onSelectAll());
+ mBinding.appBarMain.mainSelectAll.setOnClickListener(new OnSingleClickListener() {
+ @Override
+ public void onSingleClick(View v) {
+ ((ISelectAllFragment)fragment).onSelectAll();
+ }
+ });
} else {
mBinding.appBarMain.mainSelectAll.setVisibility(View.GONE);
mBinding.appBarMain.mainSelectAll.setOnClickListener(null);
@@ -286,7 +316,12 @@ public class MainActivity extends BaseActivity
if(fragment instanceof IFilterableFragment) {
mBinding.appBarMain.mainFilter.setVisibility(View.VISIBLE);
- mBinding.appBarMain.mainFilter.setOnClickListener(v -> ((IFilterableFragment)fragment).onFilterClick());
+ mBinding.appBarMain.mainFilter.setOnClickListener(new OnSingleClickListener() {
+ @Override
+ public void onSingleClick(View v) {
+ ((IFilterableFragment)fragment).onFilterClick();
+ }
+ });
} else {
mBinding.appBarMain.mainFilter.setVisibility(View.GONE);
mBinding.appBarMain.mainFilter.setOnClickListener(null);
@@ -315,23 +350,23 @@ public class MainActivity extends BaseActivity
private void init(){
- ServerStatusChecker.getInstance().addCallback(value -> {
- if(value && (!mIsOnline || firstCheckExecution)){
-
- SettingsManager.loadDBVariables(() -> {
- mIsOnline = true;
- firstCheckExecution = false;
-
- }, ex -> {
- //mNoConnectionLayout.expand(true);
- if(mIsOnline) mIsOnline = false;
- }
- );
-
- } else if(!value && mIsOnline){
- mIsOnline = false;
- }
- });
+// ServerStatusChecker.getInstance().addCallback(value -> {
+// if(value && (!mIsOnline || firstCheckExecution)){
+//
+// SettingsManager.loadDBVariables(() -> {
+// mIsOnline = true;
+// firstCheckExecution = false;
+//
+// }, ex -> {
+// //mNoConnectionLayout.expand(true);
+// if(mIsOnline) mIsOnline = false;
+// }
+// );
+//
+// } else if(!value && mIsOnline){
+// mIsOnline = false;
+// }
+// });
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivityComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainActivityComponent.java
new file mode 100644
index 00000000..6e616fe3
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/MainActivityComponent.java
@@ -0,0 +1,15 @@
+package it.integry.integrywmsnative;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface MainActivityComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+
+ MainActivityComponent create();
+ }
+
+ void inject(MainActivity mainActivity);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivityModule.java b/app/src/main/java/it/integry/integrywmsnative/MainActivityModule.java
new file mode 100644
index 00000000..3cb0f046
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/MainActivityModule.java
@@ -0,0 +1,7 @@
+package it.integry.integrywmsnative;
+
+import dagger.Module;
+
+@Module(subcomponents = MainActivityComponent.class)
+public class MainActivityModule {
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java
index 463ef24a..4bb36e80 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java
@@ -5,19 +5,20 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import it.integry.integrywmsnative.core.context.AppContext;
-import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
-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.RoomModule;
+
public class MainApplication extends Application {
public static Resources res;
+ // Reference to the application graph that is used across the whole app
+ public static MainApplicationComponent appComponent;
+ public static MainApplicationModule appModule;
+ public static RoomModule roomModule;
+
private AppContext appContext = new AppContext(this);
- private static AppDatabase appDb;
// Called when the application is starting, before any other application objects have been created.
@@ -26,11 +27,14 @@ public class MainApplication extends Application {
public void onCreate() {
super.onCreate();
+ appModule = new MainApplicationModule(MainApplication.this, this);
+ roomModule = new RoomModule(this);
+ appComponent = DaggerMainApplicationComponent.builder()
+ .mainApplicationModule(appModule)
+ .roomModule(roomModule)
+ .build();
+
appContext.init();
-
- appDb = AppDatabase.getDatabase(this);
- //Stash.init(this);
-
res = getResources();
}
@@ -49,25 +53,8 @@ public class MainApplication extends Application {
super.onLowMemory();
}
-
- // DATABASE REPOSITORY FUNCTIONS
- public static GrigliaDao getGrigliaRepository() {
- return appDb.grigliaDao();
+ public static void exit() {
+ System.exit(0);
}
- public static ArticoloGrigliaDao getArticoliGrigliaRepository() {
- return appDb.articoloGrigliaDao();
- }
-
- public static OrdineDao getOrdiniRepository() {
- return appDb.ordineDao();
- }
-
- public static ArticoloOrdineDao getArticoliOrdineRepository() {
- return appDb.articoloOrdineDao();
- }
-
- public static void clearDB() {
- new Thread(() -> appDb.clearAllTables()).start();
- }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
new file mode 100644
index 00000000..421ca4f6
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
@@ -0,0 +1,38 @@
+package it.integry.integrywmsnative;
+
+import javax.inject.Singleton;
+
+import dagger.Component;
+import it.integry.integrywmsnative.core.data_store.db.RoomModule;
+import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
+import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
+import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
+import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent;
+import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaModule;
+import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
+import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
+import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
+import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
+
+// Definition of the Application graph
+@Singleton
+@Component(modules = {
+ MainApplicationModule.class,
+ RoomModule.class,
+ MainActivityModule.class,
+ PVOrdineAcquistoGrigliaModule.class,
+ PVOrdineAcquistoEditModule.class,
+ PickingLiberoModule.class,
+ RettificaGiacenzeModule.class,
+ SpedizioneModule.class})
+public interface MainApplicationComponent {
+
+ MainActivityComponent.Factory mainActivityComponent();
+ PVOrdineAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent();
+ PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent();
+ PickingLiberoComponent.Factory pickingLiberoComponent();
+ RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
+ SpedizioneComponent.Factory spedizioneComponent();
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
new file mode 100644
index 00000000..95adc821
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
@@ -0,0 +1,78 @@
+package it.integry.integrywmsnative;
+
+import android.app.Application;
+import android.content.Context;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
+import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
+
+@Module
+public class MainApplicationModule {
+
+ private final Context mContext;
+ private final Application mApplication;
+
+ public MainApplicationModule(Context context, Application application) {
+ this.mContext = context;
+ this.mApplication = application;
+ }
+
+ @Provides
+ @Singleton
+ Application providesApplication() {
+ return mApplication;
+ }
+
+ @Provides
+ @Singleton
+ ColliDataRecoverService provideColliDataRecoverService() {
+ return new ColliDataRecoverService(mContext);
+ }
+
+ @Provides
+ @Singleton
+ OrdiniRESTConsumer provideOrdiniRESTConsumer() {
+ return new OrdiniRESTConsumer();
+ }
+
+ @Provides
+ @Singleton
+ ArticoloRESTConsumer provideArticoloRESTConsumer() {
+ return new ArticoloRESTConsumer();
+ }
+
+ @Provides
+ @Singleton
+ ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer() {
+ return new ColliMagazzinoRESTConsumer();
+ }
+
+ @Provides
+ @Singleton
+ BarcodeRESTConsumer provideBarcodeRESTConsumer() {
+ return new BarcodeRESTConsumer();
+ }
+
+ @Provides
+ @Singleton
+ PrinterRESTConsumer providePrinterRESTConsumer() {
+ return new PrinterRESTConsumer();
+ }
+
+ @Provides
+ @Singleton
+ SystemRESTConsumer provideSystemRESTConsumer() {
+ return new SystemRESTConsumer();
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseCustomConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseCustomConfiguration.java
index f8787b21..2e91f73f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseCustomConfiguration.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/BaseCustomConfiguration.java
@@ -13,11 +13,13 @@ public class BaseCustomConfiguration implements ICustomConfiguration {
public static int MENU_CONFIGURATION = 0;
public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1;
public static int CUSTOM_DYNAMIC_VERSION_PATH = 2;
+ public static int FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC = 3;
}
protected HashMap configurations = new HashMap() {{
put(Keys.MENU_CONFIGURATION, new MenuConfiguration());
put(Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE, true);
+ put(Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC, false);
}};
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
index 12b4bda8..bf917c1f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/ClassRouter.java
@@ -7,7 +7,6 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.class_router.exceptions.MethodPathNotRegisteredException;
-import it.integry.integrywmsnative.core.utility.UtilityExceptions;
public class ClassRouter {
@@ -20,7 +19,7 @@ public class ClassRouter {
private static Context context;
- private static List> mRouteClasses = new ArrayList<>();
+ private static List> mRouteClasses = new ArrayList<>();
public static void init(Context context) {
ClassRouter.context = context;
@@ -50,7 +49,13 @@ public class ClassRouter {
//throw new MethodPathAlreadyDeclaredException(path);
}
- mRouteClasses.add(new Pair<>(path, clazz));
+ try {
+ mRouteClasses.add(new Pair<>(path, clazz.newInstance()));
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ }
}
public static void deregisterPath(PATH path) {
@@ -67,11 +72,11 @@ public class ClassRouter {
throw new MethodPathNotRegisteredException(path);
}
- Class clazz = mRouteClasses.get(getClassIndex(path)).second;
+ Object instance = mRouteClasses.get(getClassIndex(path)).second;
- return (T)clazz.newInstance();
+ return (T)instance;
- } catch (InstantiationException | MethodPathNotRegisteredException | IllegalAccessException ex) {
+ } catch (MethodPathNotRegisteredException ex) {
// UtilityExceptions.defaultException(null, ex, true);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java
index b10666ef..d082f900 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/BaseMenuConfiguration.java
@@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment;
import java.util.ArrayList;
import java.util.List;
+import it.integry.integrywmsnative.core.expansion.RunnableWithReturn;
+
public class BaseMenuConfiguration {
@@ -65,7 +67,7 @@ public class BaseMenuConfiguration {
@StringRes private int mTitleText;
@DrawableRes private int mTitleIcon;
@DrawableRes private int mDrawerIcon;
- private Fragment fragmentClass;
+ private RunnableWithReturn fragmentFactory;
public int getID() {
return mID;
@@ -103,12 +105,12 @@ public class BaseMenuConfiguration {
return this;
}
- public Fragment getFragmentClass() {
- return fragmentClass;
+ public RunnableWithReturn getFragmentFactory() {
+ return fragmentFactory;
}
- public MenuItem setFragmentClass(Fragment fragmentClass) {
- this.fragmentClass = fragmentClass;
+ public MenuItem setFragmentFactory(RunnableWithReturn fragmentFactory) {
+ this.fragmentFactory = fragmentFactory;
return this;
}
}
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 c0a37a6b..985d9fb2 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
@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.class_router.configs;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
@@ -16,112 +17,114 @@ import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment
public class MenuConfiguration extends BaseMenuConfiguration {
-
public MenuConfiguration() {
this
- .addGroup(
- new MenuGroup()
- .setGroupText(R.string.purchase)
- .setGroupId(R.id.nav_group_acquisto)
+ .addGroup(
+ new MenuGroup()
+ .setGroupText(R.string.purchase)
+ .setGroupId(R.id.nav_group_acquisto)
- .addItem(new MenuItem()
- .setID(R.id.nav_accettazione)
- .setTitleText(R.string.accettazione_title_fragment)
- .setTitleIcon(R.drawable.ic_dashboard_accettazione)
- .setDrawerIcon(R.drawable.ic_black_download)
- .setFragmentClass(MainAccettazioneFragment.newInstance()))
+ .addItem(new MenuItem()
+ .setID(R.id.nav_accettazione)
+ .setTitleText(R.string.accettazione_title_fragment)
+ .setTitleIcon(R.drawable.ic_dashboard_accettazione)
+ .setDrawerIcon(R.drawable.ic_black_download)
+ .setFragmentFactory(MainAccettazioneFragment::newInstance))
- .addItem(new MenuItem()
- .setID(R.id.nav_resi_fornitore)
- .setTitleText(R.string.fragment_ultime_arrivi_fornitore_title)
- .setTitleIcon(R.drawable.ic_latest_delivery)
- .setDrawerIcon(R.drawable.ic_black_latest_delivery)
- .setFragmentClass(UltimiArriviFornitoreFragment.newInstance()))
- ).addGroup(
- new MenuGroup()
- .setGroupText(R.string.checkout)
- .setGroupId(R.id.nav_group_spedizione)
+ .addItem(new MenuItem()
+ .setID(R.id.nav_resi_fornitore)
+ .setTitleText(R.string.fragment_ultime_arrivi_fornitore_title)
+ .setTitleIcon(R.drawable.ic_latest_delivery)
+ .setDrawerIcon(R.drawable.ic_black_latest_delivery)
+ .setFragmentFactory(UltimiArriviFornitoreFragment::newInstance))
+ ).addGroup(
+ new MenuGroup()
+ .setGroupText(R.string.checkout)
+ .setGroupId(R.id.nav_group_spedizione)
- .addItem(new MenuItem()
- .setID(R.id.nav_spedizione)
- .setTitleText(R.string.vendita_title_fragment)
- .setTitleIcon(R.drawable.ic_dashboard_spedizione)
- .setDrawerIcon(R.drawable.ic_black_upload)
- .setFragmentClass(MainVenditaFragment.newInstance()))
+ .addItem(new MenuItem()
+ .setID(R.id.nav_spedizione)
+ .setTitleText(R.string.vendita_title_fragment)
+ .setTitleIcon(R.drawable.ic_dashboard_spedizione)
+ .setDrawerIcon(R.drawable.ic_black_upload)
+ .setFragmentFactory(MainVenditaFragment::newInstance))
- .addItem(new MenuItem()
- .setID(R.id.nav_free_picking)
- .setTitleText(R.string.free_picking)
- .setTitleIcon(R.drawable.ic_dashboard_picking_libero)
- .setDrawerIcon(R.drawable.ic_black_barcode_scanner)
- .setFragmentClass(PickingLiberoFragment.newInstance()))
+ .addItem(new MenuItem()
+ .setID(R.id.nav_free_picking)
+ .setTitleText(R.string.free_picking)
+ .setTitleIcon(R.drawable.ic_dashboard_picking_libero)
+ .setDrawerIcon(R.drawable.ic_black_barcode_scanner)
+ .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA)))
- .addItem(new MenuItem()
- .setID(R.id.nav_resi_cliente)
- .setTitleText(R.string.fragment_ultime_consegne_cliente_title)
- .setTitleIcon(R.drawable.ic_latest_delivery_customer)
- .setDrawerIcon(R.drawable.ic_black_latest_delivery)
- .setFragmentClass(UltimeConsegneClienteFragment.newInstance()))
- ).addGroup(new MenuGroup()
- .setGroupText(R.string.manufacture)
- .setGroupId(R.id.nav_group_produzione)
+ .addItem(new MenuItem()
+ .setID(R.id.nav_resi_cliente)
+ .setTitleText(R.string.fragment_ultime_consegne_cliente_title)
+ .setTitleIcon(R.drawable.ic_latest_delivery_customer)
+ .setDrawerIcon(R.drawable.ic_black_latest_delivery)
+ .setFragmentFactory(UltimeConsegneClienteFragment::newInstance))
+ ).addGroup(new MenuGroup()
+ .setGroupText(R.string.manufacture)
+ .setGroupId(R.id.nav_group_produzione)
- .addItem(new MenuItem()
- .setID(R.id.nav_prod_ordine_produzione)
- .setTitleText(R.string.prod_ordine_produzione_title_fragment)
- .setTitleIcon(R.drawable.ic_dashboard_accettazione)
- .setDrawerIcon(R.drawable.ic_black_external)
- .setFragmentClass(ProdOrdineProduzioneElencoFragment.newInstance()))
+ .addItem(new MenuItem()
+ .setID(R.id.nav_prod_ordine_produzione)
+ .setTitleText(R.string.prod_ordine_produzione_title_fragment)
+ .setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione)
+ .setDrawerIcon(R.drawable.ic_black_external)
+ .setFragmentFactory(ProdOrdineProduzioneElencoFragment::newInstance))
- .addItem(new MenuItem()
- .setID(R.id.nav_prod_ordine_lavorazione)
- .setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
- .setTitleIcon(R.drawable.ic_dashboard_spedizione)
- .setDrawerIcon(R.drawable.ic_black_external)
- .setFragmentClass(ProdOrdineLavorazioneElencoFragment.newInstance()))
+ .addItem(new MenuItem()
+ .setID(R.id.nav_prod_ordine_lavorazione)
+ .setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
+ .setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione)
+ .setDrawerIcon(R.drawable.ic_black_external)
+ .setFragmentFactory(ProdOrdineLavorazioneElencoFragment::newInstance))
- .addItem(new MenuItem()
- .setID(R.id.nav_prod_versamento_materiale)
- .setTitleText(R.string.prod_versamento_materiale_title_fragment)
- .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
- .setDrawerIcon(R.drawable.ic_black_external)
- .setFragmentClass(ProdVersamentoMaterialeFragment.newInstance()))
+ .addItem(new MenuItem()
+ .setID(R.id.nav_free_lav_picking)
+ .setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking)
+ .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
+ .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner)
+ .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE)))
- .addItem(new MenuItem()
- .setID(R.id.nav_prod_recupero_materiale)
- .setTitleText(R.string.prod_recupero_materiale_title_fragment)
- .setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale)
- .setDrawerIcon(R.drawable.ic_black_external)
- .setFragmentClass(ProdRecuperoMaterialeFragment.newInstance()))
- )
- .addGroup(
- new MenuGroup()
- .setGroupText(R.string.internal_handling)
- .setGroupId(R.id.nav_group_movimentazione_interna)
+ .addItem(new MenuItem()
+ .setID(R.id.nav_prod_versamento_materiale)
+ .setTitleText(R.string.prod_versamento_materiale_title_fragment)
+ .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
+ .setDrawerIcon(R.drawable.ic_black_external)
+ .setFragmentFactory(ProdVersamentoMaterialeFragment::newInstance))
- .addItem(new MenuItem()
- .setID(R.id.nav_versamento_merce)
- .setTitleText(R.string.versamento_merce_fragment_title)
- .setTitleIcon(R.drawable.ic_dashboard_versamento_merce)
- .setDrawerIcon(R.drawable.ic_black_load_shelf)
- .setFragmentClass(VersamentoMerceFragment.newInstance()))
+ .addItem(new MenuItem()
+ .setID(R.id.nav_prod_recupero_materiale)
+ .setTitleText(R.string.prod_recupero_materiale_title_fragment)
+ .setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale)
+ .setDrawerIcon(R.drawable.ic_black_external)
+ .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance))
+ )
+ .addGroup(
+ new MenuGroup()
+ .setGroupText(R.string.internal_handling)
+ .setGroupId(R.id.nav_group_movimentazione_interna)
- .addItem(new MenuItem()
- .setID(R.id.nav_rettifica_giacenze)
- .setTitleText(R.string.rettifica_giacenze_fragment_title)
- .setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze)
- .setDrawerIcon(R.drawable.ic_black_empty_box)
- .setFragmentClass(RettificaGiacenzeFragment.newInstance()))
+ .addItem(new MenuItem()
+ .setID(R.id.nav_versamento_merce)
+ .setTitleText(R.string.versamento_merce_fragment_title)
+ .setTitleIcon(R.drawable.ic_dashboard_versamento_merce)
+ .setDrawerIcon(R.drawable.ic_black_load_shelf)
+ .setFragmentFactory(VersamentoMerceFragment::newInstance))
+
+ .addItem(new MenuItem()
+ .setID(R.id.nav_rettifica_giacenze)
+ .setTitleText(R.string.rettifica_giacenze_fragment_title)
+ .setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze)
+ .setDrawerIcon(R.drawable.ic_black_empty_box)
+ .setFragmentFactory(RettificaGiacenzeFragment::newInstance))
- );
+ );
}
-
-
-
-
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java
index 1f147dd9..1d9e0990 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java
@@ -11,6 +11,6 @@ import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
public interface IOrdiniVendita {
- void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed);
+ void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java
index 9aa6a2ea..ee590adb 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java
@@ -2,15 +2,15 @@ package it.integry.integrywmsnative.core.context;
import android.content.Context;
-import com.crashlytics.android.Crashlytics;
+import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
-import io.fabric.sdk.android.Fabric;
import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.Stash;
+import it.integry.integrywmsnative.core.utility.UtilityContext;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
@@ -47,19 +47,20 @@ public class AppContext {
private void initCrashlytics() {
if(!BuildConfig.DEBUG) {
- Fabric.with(mContext, new Crashlytics());
+ FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
if( SettingsManager.isInstanceAvailable() &&
(SettingsManager.i().userSession != null && !UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB)) &&
(SettingsManager.i().user != null && !UtilityString.isNullOrEmpty(SettingsManager.i().user.fullname))) {
- Crashlytics.setString("user_fullname", SettingsManager.i().user.fullname);
- Crashlytics.setString("profile_db", SettingsManager.i().userSession.profileDB);
+ crashlytics.setUserId(SettingsManager.i().user.fullname);
+ crashlytics.setCustomKey("profile_db", SettingsManager.i().userSession.profileDB);
}
}
}
private void initUtilities() {
+ UtilityContext.initApplicationContext(mContext);
UtilityResources.init(mContext);
UtilityToast.init(mContext);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverDTO.java
new file mode 100644
index 00000000..5967cee3
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverDTO.java
@@ -0,0 +1,91 @@
+package it.integry.integrywmsnative.core.data_recover;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
+
+public class ColliDataRecoverDTO {
+
+ private int id;
+ private int numCollo;
+ private String serCollo;
+ private String dataCollo;
+ private String gestioneCollo;
+ private String filtro;
+
+ private List testateOrdini;
+
+ public int getId() {
+ return id;
+ }
+
+ public ColliDataRecoverDTO setId(int id) {
+ this.id = id;
+ return this;
+ }
+
+ public int getNumCollo() {
+ return numCollo;
+ }
+
+ public ColliDataRecoverDTO setNumCollo(int numCollo) {
+ this.numCollo = numCollo;
+ return this;
+ }
+
+ public String getSerCollo() {
+ return serCollo;
+ }
+
+ public ColliDataRecoverDTO setSerCollo(String serCollo) {
+ this.serCollo = serCollo;
+ return this;
+ }
+
+ public String getDataCollo() {
+ return dataCollo;
+ }
+
+ public ColliDataRecoverDTO setDataCollo(String dataCollo) {
+ this.dataCollo = dataCollo;
+ return this;
+ }
+
+ public String getGestioneCollo() {
+ return gestioneCollo;
+ }
+
+ public ColliDataRecoverDTO setGestioneCollo(String gestioneCollo) {
+ this.gestioneCollo = gestioneCollo;
+ return this;
+ }
+
+ public String getFiltro() {
+ return filtro;
+ }
+
+ public ColliDataRecoverDTO setFiltro(String filtro) {
+ this.filtro = filtro;
+ return this;
+ }
+
+ public List getTestateOrdini() {
+ return testateOrdini;
+ }
+
+ public ColliDataRecoverDTO setTestateOrdini(List testateOrdini) {
+ this.testateOrdini = testateOrdini;
+ return this;
+ }
+
+
+ public MtbColt getMtbColt() {
+ return new MtbColt()
+ .setNumCollo(getNumCollo())
+ .setSerCollo(getSerCollo())
+ .setGestione(getGestioneCollo())
+ .setDataCollo(getDataCollo())
+ .setFiltroOrdini(getFiltro());
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java
new file mode 100644
index 00000000..4f6dfbd8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java
@@ -0,0 +1,152 @@
+package it.integry.integrywmsnative.core.data_recover;
+
+import android.content.Context;
+
+import com.annimon.stream.Optional;
+import com.annimon.stream.Stream;
+import com.google.android.gms.common.util.IOUtils;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import it.integry.integrywmsnative.core.CommonConst;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
+
+@Singleton
+public class ColliDataRecoverService {
+
+
+ private final Context mContext;
+ private List mtbColtsSessions = new ArrayList<>();
+
+ @Inject
+ public ColliDataRecoverService(Context context) {
+ this.mContext = context;
+
+ if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) {
+ loadLocalFile();
+ }
+ }
+
+
+
+ public boolean thereIsAnExistantSession() {
+ return mtbColtsSessions.size() > 0;
+ }
+
+ public List getAllSessionIDs() {
+ if(thereIsAnExistantSession()) {
+
+ return Stream.of(mtbColtsSessions)
+ .map(ColliDataRecoverDTO::getId)
+ .toList();
+
+ } else return null;
+ }
+
+ public ColliDataRecoverDTO getSession(Integer sessionID) {
+
+ if(sessionID == null) return null;
+
+ return getIfExists(sessionID);
+ }
+
+ private ColliDataRecoverDTO getIfExists(int id) {
+ Optional recoverDTOOptional = Stream.of(mtbColtsSessions)
+ .filter(x -> x.getId() == id)
+ .findSingle();
+
+
+ return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null;
+ }
+
+ public int startNewSession(MtbColt mtbColtSession, List testateOrdini) {
+ Integer newId = null;
+
+ while(newId == null) {
+ int randomId = new Random().nextInt(1000);
+ ColliDataRecoverDTO dto = getIfExists(randomId);
+ if(dto == null) newId = randomId;
+ }
+
+
+ ColliDataRecoverDTO recoverDTO = new ColliDataRecoverDTO()
+ .setId(newId)
+ .setDataCollo(mtbColtSession.getDataColloS())
+ .setNumCollo(mtbColtSession.getNumCollo())
+ .setSerCollo(mtbColtSession.getSerCollo())
+ .setGestioneCollo(mtbColtSession.getGestione())
+ .setFiltro(mtbColtSession.getFiltroOrdini())
+ .setTestateOrdini(testateOrdini);
+
+ mtbColtsSessions.add(recoverDTO);
+ updateLocalFile();
+ return newId;
+ }
+
+ public void closeSession(int ID) {
+ ColliDataRecoverDTO dto = getIfExists(ID);
+
+ if(dto != null) {
+ mtbColtsSessions.remove(dto);
+ updateLocalFile();
+ }
+ }
+
+
+ private void loadLocalFile() {
+ InputStream inputStream;
+ Gson gson = new Gson();
+
+ try {
+ inputStream = mContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE);
+
+ byte[] bytes = IOUtils.readInputStreamFully(inputStream);
+ String jsonString = new String(bytes);
+
+ Type listType = new TypeToken>(){}.getType();
+ mtbColtsSessions = gson.fromJson(jsonString, listType);
+
+ inputStream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ UtilityExceptions.defaultException(mContext, e);
+ }
+ }
+
+
+ private void updateLocalFile() {
+ FileOutputStream outputStream;
+
+ Gson gson = new Gson();
+ String jsonText = gson.toJson(mtbColtsSessions);
+
+ try {
+ outputStream = mContext.openFileOutput(CommonConst.Files.RECOVER_COLLO_FILE, Context.MODE_PRIVATE);
+ outputStream.write(jsonText.getBytes());
+ outputStream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ UtilityExceptions.defaultException(mContext, e);
+ }
+ }
+
+ private boolean isFilePresent(String fileName) {
+ String path = mContext.getFilesDir().getAbsolutePath() + "/" + fileName;
+ File file = new File(path);
+ return file.exists();
+ }
+
+}
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
index 39dd708d..f4910e97 100644
--- 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
@@ -1,9 +1,6 @@
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;
@@ -23,7 +20,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
})
public abstract class AppDatabase extends RoomDatabase {
- private static volatile AppDatabase INSTANCE;
+// private AppDatabase mRoomInstance;
public abstract ArticoloGrigliaDao articoloGrigliaDao();
@@ -33,19 +30,26 @@ public abstract class AppDatabase extends RoomDatabase {
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;
- }
+// 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;
+// }
+
+// public AppDatabase(Application application) {
+// mRoomInstance = Room.databaseBuilder(application,
+// AppDatabase.class, "integry_wms")
+// .fallbackToDestructiveMigration()
+// .build();
+// }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomComponent.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomComponent.java
new file mode 100644
index 00000000..d53e9a1a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomComponent.java
@@ -0,0 +1,10 @@
+package it.integry.integrywmsnative.core.data_store.db;
+
+import javax.inject.Singleton;
+
+import dagger.Component;
+
+@Singleton
+@Component(modules = {RoomModule.class})
+public interface RoomComponent {
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomComponentProvider.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomComponentProvider.java
new file mode 100644
index 00000000..416bdde9
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomComponentProvider.java
@@ -0,0 +1,7 @@
+package it.integry.integrywmsnative.core.data_store.db;
+
+public interface RoomComponentProvider {
+
+ RoomComponent provideRoomComponent();
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomModule.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomModule.java
new file mode 100644
index 00000000..fef5a424
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomModule.java
@@ -0,0 +1,99 @@
+package it.integry.integrywmsnative.core.data_store.db;
+
+import android.app.Application;
+
+import androidx.room.Room;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+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.repository.ArticoliOrdineRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
+import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliGrigliaDataSource;
+import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliOrdineDataSource;
+import it.integry.integrywmsnative.core.data_store.db.repository.implementations.GrigliaDataSource;
+import it.integry.integrywmsnative.core.data_store.db.repository.implementations.OrdineDataSource;
+
+@Module
+public class RoomModule {
+
+ private AppDatabase appDatabase;
+
+ public RoomModule(Application application) {
+ appDatabase = Room.databaseBuilder(application,
+ AppDatabase.class, "integry_wms")
+ .fallbackToDestructiveMigration()
+ .build();
+ }
+
+ @Singleton
+ @Provides
+ AppDatabase providesRoomDatabase() {
+ return appDatabase;
+ }
+
+
+
+
+ @Singleton
+ @Provides
+ ArticoloGrigliaDao providesArticoloGrigliaDao(AppDatabase appDatabase) {
+ return appDatabase.articoloGrigliaDao();
+ }
+
+ @Singleton
+ @Provides
+ GrigliaDao providesGrigliaDao(AppDatabase appDatabase) {
+ return appDatabase.grigliaDao();
+ }
+
+ @Singleton
+ @Provides
+ OrdineDao providesOrdineDao(AppDatabase appDatabase) {
+ return appDatabase.ordineDao();
+ }
+
+ @Singleton
+ @Provides
+ ArticoloOrdineDao providesArticoloOrdineDao(AppDatabase appDatabase) {
+ return appDatabase.articoloOrdineDao();
+ }
+
+
+
+
+
+
+
+ @Singleton
+ @Provides
+ ArticoloGrigliaRepository providesArticoloGrigliaRepository(ArticoloGrigliaDao articoloGrigliaDao) {
+ return new ArticoliGrigliaDataSource(articoloGrigliaDao);
+ }
+
+ @Singleton
+ @Provides
+ ArticoliOrdineRepository providesArticoliOrdineRepository(ArticoloOrdineDao articoloOrdineDao) {
+ return new ArticoliOrdineDataSource(articoloOrdineDao);
+ }
+
+ @Singleton
+ @Provides
+ GrigliaRepository providesGrigliaRepository(GrigliaDao grigliaDao) {
+ return new GrigliaDataSource(grigliaDao);
+ }
+
+ @Singleton
+ @Provides
+ OrdineRepository providesOrdineRepository(OrdineDao ordineDao) {
+ return new OrdineDataSource(ordineDao);
+ }
+
+}
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
deleted file mode 100644
index 593515bf..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoliGrigliaRepository.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package it.integry.integrywmsnative.core.data_store.db.repository;
-
-import com.annimon.stream.Collectors;
-import com.annimon.stream.Stream;
-
-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.data_store.db.entity.Griglia;
-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, Griglia griglia, Runnable onSuccess, RunnableArgs onFail) {
- execute(()->{
- try{
- List toUpdate = new ArrayList<>();
- List toInsert = new ArrayList<>();
- List codMarts = new ArrayList<>();
- for (ArticoloGriglia art : articoli){
- Integer id = mRepository.getIdArticoloByGrigliaAndBarcodeAndCodMart(griglia.getGrigliaId(),art.getBarCode(),art.getCodMart());
- codMarts.add(art.getCodMart());
- if (id != null){
- art.setArticoloGrigliaId(id);
- toUpdate.add(art);
- }else{
- toInsert.add(art);
- }
- }
- mRepository.insertAll(toInsert);
- mRepository.updateAll(toUpdate);
- List articoliGriglia = mRepository.getArticoliFromGriglia(griglia.getGrigliaId());
- List toDelete =Stream.of(articoliGriglia).filter(articolo-> !codMarts.contains(articolo.getCodMart())).toList();
- mRepository.deleteList(toDelete);
- 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
index bf5287ca..861364cd 100644
--- 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
@@ -1,109 +1,24 @@
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 {
+public interface ArticoliOrdineRepository {
- ArticoloOrdineDao mRepository;
+ void saveArticoliToOrdine(List articoli, Runnable onSuccess, RunnableArgs onFail);
- public ArticoliOrdineRepository() {
- this.mRepository = MainApplication.getArticoliOrdineRepository();
- }
+ void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs onFail);
- 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();
+ void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail);
+ void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail);
- } 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);
- }
- });
- }
+ void findArticoliByOrdine(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError);
- 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);
- }
- });
- }
+ void deleteArticolo(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError);
- public void findArticoliByOrdine(Ordine ordine, RunnableArgs> onLoad, RunnableArgs onError) {
- execute(() -> {
- try {
- onLoad.run(mRepository.findArticoliByOrdine(ordine.getOrdineId()));
- } catch (Exception e) {
- onError.run(e);
- }
- });
- }
-
- public void deleteArticolo(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError) {
- execute(()->{
- try{
- mRepository.delete(articolo);
- onSave.run();
- }catch (Exception e){
- onError.run(e);
- }
- });
- }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java
new file mode 100644
index 00000000..cbcfc259
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java
@@ -0,0 +1,19 @@
+package it.integry.integrywmsnative.core.data_store.db.repository;
+
+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.expansion.RunnableArgs;
+
+public interface ArticoloGrigliaRepository {
+
+ void saveArticoliToGriglia(List articoli, Griglia griglia, Runnable onSuccess, RunnableArgs onFail);
+
+ void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail);
+
+ void findArticoloByCodMartAndGriglia(String codMart, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail);
+
+ void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail);
+
+}
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
index 437d9e65..707a1272 100644
--- 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
@@ -2,66 +2,17 @@ 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{
+public interface GrigliaRepository {
- private GrigliaDao mRepository;
+ void selectAll(RunnableArgs> onSuccess, RunnableArgs onError);
- public GrigliaRepository() {
- this.mRepository = MainApplication.getGrigliaRepository();
- }
+ void findByCodAlis(String codAlis , RunnableArgs onSuccess, RunnableArgs onError);
- public void selectAll(RunnableArgs> onSuccess, RunnableArgs onError){
- Runnable query = ()->{
- try{
- onSuccess.run(mRepository.getAll());
- }catch (Exception e){
- onError.run(e);
- }
- };
- execute(query);
- }
+ void saveGriglia(Griglia griglia, RunnableArgs onSuccess,RunnableArgs onFail);
- 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);
- }
- });
- }
+ void findGrigliaById(int idGriglia, RunnableArgs onLoad, RunnableArgs onFail);
}
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
index 67f3c4cc..e42ae623 100644
--- 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
@@ -2,86 +2,25 @@ 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 {
+public interface OrdineRepository {
- private OrdineDao mRepository;
+ void selectAll(RunnableArgs> onSuccess, RunnableArgs onError);
- public OrdineRepository() {
- this.mRepository = MainApplication.getOrdiniRepository();
- }
+ void selectAllTransmitted(RunnableArgs> onSuccess, RunnableArgs onError);
- public void selectAll(RunnableArgs> onSuccess, RunnableArgs onError) {
- Runnable query = () -> {
- try {
- onSuccess.run(mRepository.getAll());
- } catch (Exception e) {
- onError.run(e);
- }
- };
- execute(query);
- }
+ void selectAllOpenOrders(Griglia griglia, RunnableArgs> onSuccess, RunnableArgs onError);
- public void selectAllTransmitted(RunnableArgs> onSuccess, RunnableArgs onError) {
- Runnable query = () -> {
- try {
- onSuccess.run(mRepository.getAllTrasnmitted());
- } catch (Exception e) {
- onError.run(e);
- }
- };
- execute(query);
- }
+ void insert(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError);
- 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);
- }
+ void updateOrder(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError);
- 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);
- }
- });
- }
+ void delete(Ordine ordine, Runnable onSuccess, RunnableArgs onError);
- public void updateOrder(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError) {
- execute(() -> {
- try {
- mRepository.update(ordine);
- onSuccess.run(ordine);
- } catch (Exception e) {
- onError.run(e);
- }
- });
- }
-
- public void delete(Ordine ordine, Runnable onSuccess, RunnableArgs onError) {
- execute(() -> {
- try {
- mRepository.delete(ordine);
- onSuccess.run();
- } catch (Exception e) {
- onError.run(e);
- }
- });
- }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java
new file mode 100644
index 00000000..51f16d58
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java
@@ -0,0 +1,92 @@
+package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
+
+import com.annimon.stream.Stream;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+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.data_store.db.entity.Griglia;
+import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public class ArticoliGrigliaDataSource extends Repository implements ArticoloGrigliaRepository {
+
+ private final ArticoloGrigliaDao mArticoloGrigliaDao;
+
+ @Inject
+ public ArticoliGrigliaDataSource(ArticoloGrigliaDao articoloGrigliaDao) {
+ this.mArticoloGrigliaDao = articoloGrigliaDao;
+ }
+
+ public void saveArticoliToGriglia(List articoli, Griglia griglia, Runnable onSuccess, RunnableArgs onFail) {
+ execute(() -> {
+ try {
+ List toUpdate = new ArrayList<>();
+ List toInsert = new ArrayList<>();
+ List codMarts = new ArrayList<>();
+ for (ArticoloGriglia art : articoli) {
+ Integer id = mArticoloGrigliaDao.getIdArticoloByGrigliaAndBarcodeAndCodMart(griglia.getGrigliaId(), art.getBarCode(), art.getCodMart());
+ codMarts.add(art.getCodMart());
+ if (id != null) {
+ art.setArticoloGrigliaId(id);
+ toUpdate.add(art);
+ } else {
+ toInsert.add(art);
+ }
+ }
+ mArticoloGrigliaDao.insertAll(toInsert);
+ mArticoloGrigliaDao.updateAll(toUpdate);
+ List articoliGriglia = mArticoloGrigliaDao.getArticoliFromGriglia(griglia.getGrigliaId());
+ List toDelete = Stream.of(articoliGriglia).filter(articolo -> !codMarts.contains(articolo.getCodMart())).toList();
+ mArticoloGrigliaDao.deleteList(toDelete);
+ onSuccess.run();
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ });
+ }
+
+ public void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail) {
+ execute(() -> {
+ try {
+ onSuccess.run(mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia));
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ });
+ }
+
+ public void findArticoloByCodMartAndGriglia(String codMart, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail) {
+ execute(() -> {
+ try {
+ onSuccess.run(mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(codMart, idGriglia));
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ });
+ }
+
+ public void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail) {
+ execute(() -> {
+ try {
+ ArticoloGriglia articolo = mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(scan, idGriglia);
+ if (articolo == null) {
+ articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(scan, idGriglia);
+ if (articolo == null) {
+ String barcode = StringUtils.leftPad(scan, 13, "0");
+ articolo = mArticoloGrigliaDao.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/implementations/ArticoliOrdineDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java
new file mode 100644
index 00000000..d3ec82e8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java
@@ -0,0 +1,114 @@
+package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+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.data_store.db.repository.ArticoliOrdineRepository;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdineRepository {
+
+ private final ArticoloOrdineDao mArticoloOrdineDao;
+
+ @Inject
+ public ArticoliOrdineDataSource(ArticoloOrdineDao articoloOrdineDao) {
+ this.mArticoloOrdineDao = articoloOrdineDao;
+ }
+
+ 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);
+ }
+ }
+ mArticoloOrdineDao.insertAll(toInsert);
+ mArticoloOrdineDao.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) {
+ mArticoloOrdineDao.update(articolo);
+ } else {
+ mArticoloOrdineDao.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 = mArticoloOrdineDao.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 = mArticoloOrdineDao.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), scannedCode);
+ if (articolo == null) {
+ articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
+ if (articolo == null) {
+ scannedCode = StringUtils.leftPad(scannedCode, 13, '0');
+ articolo = mArticoloOrdineDao.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(mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId()));
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ });
+ }
+
+ public void deleteArticolo(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError) {
+ execute(() -> {
+ try {
+ mArticoloOrdineDao.delete(articolo);
+ onSave.run();
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/GrigliaDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/GrigliaDataSource.java
new file mode 100644
index 00000000..b73a9105
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/GrigliaDataSource.java
@@ -0,0 +1,69 @@
+package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
+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.data_store.db.wrappers.GrigliaWrapper;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public class GrigliaDataSource extends Repository implements GrigliaRepository {
+
+ private final GrigliaDao mGrigliaDao;
+
+ @Inject
+ public GrigliaDataSource(GrigliaDao grigliaDao) {
+ this.mGrigliaDao = grigliaDao;
+ }
+
+ public void selectAll(RunnableArgs> onSuccess, RunnableArgs onError) {
+ Runnable query = () -> {
+ try {
+ onSuccess.run(mGrigliaDao.getAll());
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+
+ public void findByCodAlis(String codAlis, RunnableArgs onSuccess, RunnableArgs onError) {
+ Runnable query = () -> {
+ try {
+ onSuccess.run(mGrigliaDao.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) mGrigliaDao.insert(griglia));
+ } else {
+ mGrigliaDao.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(mGrigliaDao.findGrigliaById(idGriglia));
+ } catch (Exception e) {
+ onFail.run(e);
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/OrdineDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/OrdineDataSource.java
new file mode 100644
index 00000000..93edfaee
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/OrdineDataSource.java
@@ -0,0 +1,90 @@
+package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.core.data_store.db.dao.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.repository.OrdineRepository;
+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 OrdineDataSource extends Repository implements OrdineRepository {
+
+ private OrdineDao mOrdineDao;
+
+ @Inject
+ public OrdineDataSource(OrdineDao ordineDao) {
+ this.mOrdineDao = ordineDao;
+ }
+
+ public void selectAll(RunnableArgs> onSuccess, RunnableArgs onError) {
+ Runnable query = () -> {
+ try {
+ onSuccess.run(mOrdineDao.getAll());
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+
+ public void selectAllTransmitted(RunnableArgs> onSuccess, RunnableArgs onError) {
+ Runnable query = () -> {
+ try {
+ onSuccess.run(mOrdineDao.getAllTrasnmitted());
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+
+ public void selectAllOpenOrders(Griglia griglia, RunnableArgs> onSuccess, RunnableArgs onError) {
+ Runnable query = () -> {
+ try {
+ onSuccess.run(mOrdineDao.getAllOpenOrdersByGriglia(griglia.getGrigliaId()));
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ };
+ execute(query);
+ }
+
+ public void insert(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError) {
+ execute(() -> {
+ try {
+ Long id = mOrdineDao.insert(ordine);
+ onSuccess.run(id.intValue());
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ });
+ }
+
+
+ public void updateOrder(Ordine ordine, RunnableArgs onSuccess, RunnableArgs onError) {
+ execute(() -> {
+ try {
+ mOrdineDao.update(ordine);
+ onSuccess.run(ordine);
+ } catch (Exception e) {
+ onError.run(e);
+ }
+ });
+ }
+
+ public void delete(Ordine ordine, Runnable onSuccess, RunnableArgs onError) {
+ execute(() -> {
+ try {
+ mOrdineDao.delete(ordine);
+ onSuccess.run();
+ } 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/implementations/Repository.java
similarity index 90%
rename from app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/Repository.java
rename to app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/Repository.java
index 7e8ec7ee..0637fde2 100644
--- 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/implementations/Repository.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.core.data_store.db.repository;
+package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
public class Repository {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java
index 64175f0e..f82a1b33 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java
@@ -29,6 +29,19 @@ public class BindableBoolean implements Observable {
}
mCallbacks.add(callback);
}
+ public void addOnPropertyChangedCallback(@NonNull Runnable callback) {
+ synchronized (this) {
+ if (mCallbacks == null) {
+ mCallbacks = new PropertyChangeRegistry();
+ }
+ }
+ mCallbacks.add(new OnPropertyChangedCallback() {
+ @Override
+ public void onPropertyChanged(Observable sender, int propertyId) {
+ callback.run();
+ }
+ });
+ }
@Override
public void removeOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) {
@@ -83,7 +96,11 @@ public class BindableBoolean implements Observable {
}
public void set(boolean value) {
- if (mValue != value) {
+ this.set(value, false);
+ }
+
+ public void set(boolean value, boolean forceRefresh) {
+ if (mValue != value || forceRefresh) {
this.mValue = value;
notifyChange();
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableInteger.java b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableInteger.java
index 5541bd46..3c0b4500 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableInteger.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableInteger.java
@@ -3,7 +3,13 @@ package it.integry.integrywmsnative.core.di;
import androidx.databinding.BaseObservable;
public class BindableInteger extends BaseObservable {
- Integer value;
+ Integer mValue;
+
+ public BindableInteger() {}
+
+ public BindableInteger(int startValue) {
+ this.mValue = startValue;
+ }
public Integer get() {
return get(true);
@@ -11,21 +17,21 @@ public class BindableInteger extends BaseObservable {
public Integer get(boolean defaultIfNull) {
- if(value == null){
+ if(mValue == null){
if(defaultIfNull) return 0;
else return null;
- } else return value;
+ } else return mValue;
}
public void set(Integer value) {
- if (!Objects.equals(this.value, value)) {
- this.value = value;
+ if (!Objects.equals(this.mValue, value)) {
+ this.mValue = value;
notifyChange();
}
}
public boolean isEmpty() {
- return value == null;
+ return mValue == null;
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java
index 2bbd3e2c..dd96450d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java
@@ -3,38 +3,60 @@ package it.integry.integrywmsnative.core.di;
import androidx.annotation.ColorRes;
import androidx.annotation.IdRes;
import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView;
+import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.core.content.res.ResourcesCompat;
import androidx.databinding.BindingAdapter;
import androidx.databinding.BindingConversion;
import androidx.constraintlayout.widget.Guideline;
+
import com.google.android.material.textfield.TextInputEditText;
+import com.google.android.material.textfield.TextInputLayout;
+
import androidx.core.util.Pair;
import androidx.appcompat.widget.AppCompatCheckBox;
import androidx.appcompat.widget.AppCompatTextView;
+import android.app.DatePickerDialog;
+import android.content.Context;
import android.content.res.ColorStateList;
import android.util.Log;
import android.view.View;
import android.widget.AutoCompleteTextView;
import android.widget.CheckBox;
import android.widget.EditText;
+import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
+import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.Locale;
import androidx.databinding.Observable;
+import androidx.databinding.ObservableField;
+import androidx.lifecycle.MutableLiveData;
+
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
+import it.integry.integrywmsnative.core.utility.UtilityContext;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityNumber;
+import it.integry.integrywmsnative.core.utility.UtilityString;
public class Converters {
+
@BindingConversion
public static String convertBindableToString(BindableString bindableString) {
- return bindableString.get();
+ if(bindableString != null) return bindableString.get();
+ return "";
}
@BindingConversion
@@ -42,6 +64,33 @@ public class Converters {
return bindableBoolean.get();
}
+ @BindingConversion
+ public static boolean convertObservableToBoolean(ObservableField bindableBoolean) {
+ return bindableBoolean.get();
+ }
+
+ @BindingAdapter("binding")
+ public static void bindEditText(AppCompatTextView view, final BindableInteger bindableInteger) {
+ Pair pair = (Pair) view.getTag(R.id.bound_observable);
+ if (pair == null || pair.first != bindableInteger) {
+ if (pair != null) {
+ view.removeTextChangedListener(pair.second);
+ }
+ TextWatcherAdapter watcher = new TextWatcherAdapter() {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ if(bindableInteger != null) bindableInteger.set(Integer.parseInt(s.toString()));
+ }
+ };
+ view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher));
+ view.addTextChangedListener(watcher);
+ }
+ String newValue = bindableInteger != null && bindableInteger.get() != null ? bindableInteger.get().toString() : "0";
+ if (!view.getText().toString().equals(newValue)) {
+ view.setText(newValue);
+ }
+ }
+
@BindingAdapter("binding")
public static void bindEditText(EditText view, final BindableString bindableString) {
Pair pair = (Pair) view.getTag(R.id.bound_observable);
@@ -50,7 +99,8 @@ public class Converters {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
- @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
bindableString.set(s.toString());
}
};
@@ -71,7 +121,8 @@ public class Converters {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
- @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
bindableString.set(s.toString());
}
};
@@ -84,6 +135,103 @@ public class Converters {
}
}
+ @BindingAdapter("binding")
+ public static void bindTextInputEditTextBigDecimal(TextInputEditText view, final ObservableField observableBigDecimal) {
+ Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
+ if (pair == null || pair.first != observableBigDecimal) {
+ if (pair != null) {
+ view.removeTextChangedListener(pair.second);
+ }
+ TextWatcherAdapter watcher = new TextWatcherAdapter() {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ BigDecimal value = null;
+ if(!UtilityString.isNullOrEmpty(s.toString())) value = new BigDecimal(s.toString());
+ observableBigDecimal.set(value);
+ }
+ };
+ view.setTag(R.id.bound_observable, new Pair<>(observableBigDecimal, watcher));
+ view.addTextChangedListener(watcher);
+ }
+ BigDecimal newValue = observableBigDecimal.get();
+ BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
+
+ if(!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
+ view.setText(UtilityNumber.decimalToString(newValue));
+ }
+ }
+
+ @BindingAdapter("binding")
+ public static void bindTextInputEditTextString(TextInputEditText view, final ObservableField observableString) {
+ Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
+ if (pair == null || pair.first != observableString) {
+ if (pair != null) {
+ view.removeTextChangedListener(pair.second);
+ }
+ TextWatcherAdapter watcher = new TextWatcherAdapter() {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ observableString.set(s.toString());
+ }
+ };
+ view.setTag(R.id.bound_observable, new Pair<>(observableString, watcher));
+ view.addTextChangedListener(watcher);
+ }
+ String newValue = observableString.get();
+ String viewValue = view.getText().toString().trim();
+
+ if(!viewValue.equalsIgnoreCase(newValue)) {
+ view.setText(newValue);
+ }
+ }
+
+ @BindingAdapter({"binding"})
+ public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField observableDate) {
+ Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
+ if (pair == null || pair.first != observableDate) {
+ if (pair != null) {
+ view.removeTextChangedListener(pair.second);
+ }
+ TextWatcherAdapter watcher = new TextWatcherAdapter() {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
+ };
+ view.setTag(R.id.bound_observable, new Pair<>(observableDate, watcher));
+ view.addTextChangedListener(watcher);
+
+ RunnableArgs onClick = v -> {
+ // Get Current Date
+ Calendar c = UtilityDate.getCalendarInstance();
+
+ if(observableDate.get() != null) {
+ c.setTime(observableDate.get());
+ }
+
+ int mYear = c.get(Calendar.YEAR);
+ int mMonth = c.get(Calendar.MONTH);
+ int mDay = c.get(Calendar.DAY_OF_MONTH);
+
+ DatePickerDialog datePickerDialog = new DatePickerDialog(view.getContext(),
+ (cView, year, month, day) -> {
+ Date resultDate = new GregorianCalendar(year, month, day).getTime();
+ view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+ observableDate.set(resultDate);
+ }, mYear, mMonth, mDay);
+ datePickerDialog.show();
+ };
+
+ //Adding click-listener
+ view.setOnClickListener(onClick::run);
+ if(view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) {
+ ((FrameLayout)view.getParent()).setOnClickListener(onClick::run);
+ ((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run);
+ }
+ }
+ Date newValue = observableDate.get();
+ view.setText(UtilityDate.formatDate(newValue, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+ }
+
@BindingAdapter("binding")
public static void bindAutoCompleteTextView(AutoCompleteTextView view, final BindableString bindableString) {
Pair pair = (Pair) view.getTag(R.id.bound_observable);
@@ -92,7 +240,8 @@ public class Converters {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
- @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
bindableString.set(s.toString());
}
};
@@ -113,7 +262,8 @@ public class Converters {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
- @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
bindableString.set(s.toString());
}
};
@@ -134,7 +284,8 @@ public class Converters {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
- @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
bindableString.set(s.toString());
}
};
@@ -164,12 +315,13 @@ public class Converters {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
- @Override public void onTextChanged(CharSequence s, int start, int before, int count) {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
try {
- if(s.toString().trim().isEmpty()){
+ if (s.toString().trim().isEmpty()) {
bindableFloat.set(null);
} else bindableFloat.set(decimalFormat.parse(s.toString()).floatValue());
- } catch (Exception ex){
+ } catch (Exception ex) {
Log.e("FloatFormat", ex.getMessage());
}
}
@@ -225,7 +377,7 @@ public class Converters {
@BindingAdapter({"layout_constraintGuide_percent"})
public static void bindFloatPercetageOnGuideline(View view, final float percentage) {
- ((Guideline)view).setGuidelinePercent(percentage);
+ ((Guideline) view).setGuidelinePercent(percentage);
}
@BindingAdapter({"backgroundTintResID"})
@@ -234,13 +386,10 @@ public class Converters {
}
-
-
- @BindingAdapter("visibility")
- public static void bindCheckbox(LinearLayout view, final BindableBoolean bindableBoolean) {
+ @BindingAdapter({"app:visibility"})
+ public static void bindViewVisibility(View view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
- //view.setOnCheckedChangeListener((compoundButton, b) -> bindableBoolean.set(b));
}
bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
@@ -254,7 +403,7 @@ public class Converters {
@BindingAdapter("visibility")
- public static void bindView(View view, final BindableBoolean bindableBoolean) {
+ public static void bindView(View view, final ObservableField bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
}
@@ -268,4 +417,13 @@ public class Converters {
view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE);
}
+
+ @BindingAdapter("android:layout_weight")
+ public static void setLayoutWeight(View view, final Float weight) {
+
+ LinearLayoutCompat.LayoutParams layoutParams = (LinearLayoutCompat.LayoutParams) view.getLayoutParams();
+ layoutParams.weight = weight;
+ view.setLayoutParams(layoutParams);
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/ViewConverters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/ViewConverters.java
new file mode 100644
index 00000000..9ade457e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/di/ViewConverters.java
@@ -0,0 +1,28 @@
+package it.integry.integrywmsnative.core.di;
+
+import android.view.View;
+
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.core.util.Pair;
+import androidx.databinding.BindingAdapter;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
+
+public class ViewConverters {
+
+
+
+ @BindingAdapter("singleClick")
+ public static void bindViewSingleClick(View view, final Runnable callback) {
+ view.setFocusable(true);
+ view.setClickable(true);
+ view.setOnClickListener(new OnSingleClickListener() {
+ @Override
+ public void onSingleClick(View v) {
+ callback.run();
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/ExceptionsHandler.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/ExceptionsHandler.java
index f249c0f2..58b4b6de 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/exception/ExceptionsHandler.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/ExceptionsHandler.java
@@ -10,7 +10,7 @@ import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
-import it.integry.integrywmsnative.BuildConfig;
+import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.view.dialogs.exception.DialogException;
@@ -41,7 +41,7 @@ public class ExceptionsHandler implements Thread.UncaughtExceptionHandler {
UtilityLogger.errorMe(new Exception(ex));
} catch (Exception e) {
Log.e(TAG, "Exception Logger failed!", e);
- System.exit(0);
+ MainApplication.exit();
}
appendToFile(new Exception(ex));
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUException.java
new file mode 100644
index 00000000..a0f73311
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUException.java
@@ -0,0 +1,7 @@
+package it.integry.integrywmsnative.core.exception;
+
+public class InvalidLUException extends Exception {
+ public InvalidLUException() {
+ super("L'unità logistica scansionata non è valida");
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUGestioneException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUGestioneException.java
new file mode 100644
index 00000000..cacb15da
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLUGestioneException.java
@@ -0,0 +1,15 @@
+package it.integry.integrywmsnative.core.exception;
+
+import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
+
+public class InvalidLUGestioneException extends Exception {
+
+ public InvalidLUGestioneException() {
+ super("La GESTIONE dell'unità logistica scansionata non è valida");
+ }
+
+ public InvalidLUGestioneException(GestioneEnum gestioneEnum) {
+ super("La GESTIONE " + gestioneEnum.getText() + " dell'unità logistica scansionata non è valida");
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/MyExceptionHandler.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/MyExceptionHandler.java
new file mode 100644
index 00000000..62a3d58e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/MyExceptionHandler.java
@@ -0,0 +1,36 @@
+package it.integry.integrywmsnative.core.exception;
+
+import android.content.Context;
+import android.content.Intent;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+public class MyExceptionHandler implements
+ java.lang.Thread.UncaughtExceptionHandler {
+ private final Context myContext;
+ private final Class> myActivityClass;
+
+ public MyExceptionHandler(Context context, Class> c) {
+
+ myContext = context;
+ myActivityClass = c;
+ }
+
+ public void uncaughtException(Thread thread, Throwable exception) {
+
+ StringWriter stackTrace = new StringWriter();
+ exception.printStackTrace(new PrintWriter(stackTrace));
+ System.err.println(stackTrace);// You can use LogCat too
+// Intent intent = new Intent(myContext, myActivityClass);
+// String s = stackTrace.toString();
+// //you can use this String to know what caused the exception and in which Activity
+// intent.putExtra("uncaughtException",
+// "Exception is: " + stackTrace.toString());
+// intent.putExtra("stacktrace", s);
+// myContext.startActivity(intent);
+ //for restarting the Activity
+// Process.killProcess(Process.myPid());
+// System.exit(0);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/NoArtsFoundException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoArtsFoundException.java
new file mode 100644
index 00000000..bd1ef28c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoArtsFoundException.java
@@ -0,0 +1,10 @@
+package it.integry.integrywmsnative.core.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public final class NoArtsFoundException extends Exception {
+ public NoArtsFoundException() {
+ super(UtilityResources.getString(R.string.no_result_from_barcode));
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/NoLUFoundException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoLUFoundException.java
new file mode 100644
index 00000000..f9ec381b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoLUFoundException.java
@@ -0,0 +1,8 @@
+package it.integry.integrywmsnative.core.exception;
+
+public final class NoLUFoundException extends Exception {
+
+ public NoLUFoundException() {
+ super("Nessuna UL trovata");
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/NoPrintersFoundException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoPrintersFoundException.java
new file mode 100644
index 00000000..c7dbc19e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoPrintersFoundException.java
@@ -0,0 +1,10 @@
+package it.integry.integrywmsnative.core.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public class NoPrintersFoundException extends Exception {
+ public NoPrintersFoundException() {
+ super(UtilityResources.getString(R.string.exception_printer_not_found));
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/NoResultFromBarcodeException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoResultFromBarcodeException.java
new file mode 100644
index 00000000..05ae8894
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/NoResultFromBarcodeException.java
@@ -0,0 +1,10 @@
+package it.integry.integrywmsnative.core.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public final class NoResultFromBarcodeException extends Exception {
+ public NoResultFromBarcodeException() {
+ super(UtilityResources.getString(R.string.no_result_from_barcode));
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/ScannedPositionNotExistException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/ScannedPositionNotExistException.java
new file mode 100644
index 00000000..8b43c1ea
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/ScannedPositionNotExistException.java
@@ -0,0 +1,7 @@
+package it.integry.integrywmsnative.core.exception;
+
+public final class ScannedPositionNotExistException extends Exception {
+ public ScannedPositionNotExistException() {
+ super("Nessuna posizione trovata con il barcode scansionato");
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/printer/PrinterNotFoundException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/printer/PrinterNotFoundException.java
deleted file mode 100644
index a967887c..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/core/exception/printer/PrinterNotFoundException.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package it.integry.integrywmsnative.core.exception.printer;
-
-import it.integry.integrywmsnative.MainApplication;
-import it.integry.integrywmsnative.R;
-
-public class PrinterNotFoundException extends Exception{
-
- public PrinterNotFoundException() {
- super(MainApplication.res.getString(R.string.exception_printer_not_found));
- }
-
-}
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
index 96fc38d7..9050c3b6 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
@@ -5,10 +5,15 @@ import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.integrywmsnative.core.exception.MyExceptionHandler;
public class BaseActivity extends AppCompatActivity {
+ public BaseActivity() {
+ Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, BaseActivity.class));
+ }
+
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java
new file mode 100644
index 00000000..b8d387b1
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java
@@ -0,0 +1,30 @@
+package it.integry.integrywmsnative.core.expansion;
+
+import androidx.databinding.ObservableArrayList;
+import androidx.databinding.ObservableList;
+
+public abstract class OnListGeneralChangedCallback extends ObservableList.OnListChangedCallback {
+
+
+ @Override
+ public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) {
+ onChanged(sender);
+ }
+
+ @Override
+ public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) {
+ onChanged(sender);
+ }
+
+ @Override
+ public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) {
+ onChanged(sender);
+ }
+
+ @Override
+ public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) {
+ onChanged(sender);
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnSingleClickListener.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnSingleClickListener.java
new file mode 100644
index 00000000..97dc26d8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnSingleClickListener.java
@@ -0,0 +1,55 @@
+package it.integry.integrywmsnative.core.expansion;
+
+import android.util.Config;
+import android.util.Log;
+import android.view.View;
+
+
+/**
+ * Implementation of {@link View.OnClickListener} that ignores subsequent clicks that happen too quickly after the first one.
+ * To use this class, implement {@link #onSingleClick(View)} instead of {@link View.OnClickListener#onClick(View)}.
+ */
+public abstract class OnSingleClickListener implements View.OnClickListener {
+ private static final String TAG = OnSingleClickListener.class.getSimpleName();
+
+ private static final long MIN_DELAY_MS = 500;
+
+ private long mLastClickTime;
+
+ @Override
+ public final void onClick(View v) {
+ long lastClickTime = mLastClickTime;
+ long now = System.currentTimeMillis();
+ mLastClickTime = now;
+ if (now - lastClickTime < MIN_DELAY_MS) {
+ // Too fast: ignore
+ if (Config.LOGD) Log.d(TAG, "onClick Clicked too quickly: ignored");
+ } else {
+ // Register the click
+ onSingleClick(v);
+ }
+ }
+
+ /**
+ * Called when a view has been clicked.
+ *
+ * @param v The view that was clicked.
+ */
+ public abstract void onSingleClick(View v);
+
+ /**
+ * Wraps an {@link View.OnClickListener} into an {@link OnSingleClickListener}.
+ * The argument's {@link View.OnClickListener#onClick(View)} method will be called when a single click is registered.
+ *
+ * @param onClickListener The listener to wrap.
+ * @return the wrapped listener.
+ */
+ public static View.OnClickListener wrap(final View.OnClickListener onClickListener) {
+ return new OnSingleClickListener() {
+ @Override
+ public void onSingleClick(View v) {
+ onClickListener.onClick(v);
+ }
+ };
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableWithReturn.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableWithReturn.java
new file mode 100644
index 00000000..cdd023b3
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableWithReturn.java
@@ -0,0 +1,7 @@
+package it.integry.integrywmsnative.core.expansion;
+
+public interface RunnableWithReturn {
+
+ R run();
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/WeakReferenceOnListChangedCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/WeakReferenceOnListChangedCallback.java
new file mode 100644
index 00000000..9ae2c97c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/WeakReferenceOnListChangedCallback.java
@@ -0,0 +1,56 @@
+package it.integry.integrywmsnative.core.expansion;
+
+import android.widget.BaseAdapter;
+
+import androidx.databinding.ObservableList;
+
+import java.lang.ref.WeakReference;
+
+public class WeakReferenceOnListChangedCallback extends ObservableList.OnListChangedCallback {
+
+ private final WeakReference adapterReference;
+
+ public WeakReferenceOnListChangedCallback(BaseAdapter baseAdapter) {
+ this.adapterReference = new WeakReference<>(baseAdapter);
+ }
+
+ @Override
+ public void onChanged(ObservableList sender) {
+ BaseAdapter adapter = adapterReference.get();
+ if (adapter != null) {
+ adapter.notifyDataSetChanged();
+ }
+ }
+
+ @Override
+ public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) {
+ BaseAdapter adapter = adapterReference.get();
+ if (adapter != null) {
+ adapter.notifyDataSetChanged();
+ }
+ }
+
+ @Override
+ public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) {
+ BaseAdapter adapter = adapterReference.get();
+ if (adapter != null) {
+ adapter.notifyDataSetChanged();
+ }
+ }
+
+ @Override
+ public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) {
+ BaseAdapter adapter = adapterReference.get();
+ if (adapter != null) {
+ adapter.notifyDataSetChanged();
+ }
+ }
+
+ @Override
+ public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) {
+ BaseAdapter adapter = adapterReference.get();
+ if (adapter != null) {
+ adapter.notifyDataSetChanged();
+ }
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java
new file mode 100644
index 00000000..cc9f63d7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java
@@ -0,0 +1,52 @@
+package it.integry.integrywmsnative.core.expansion.view;
+
+import android.view.View;
+
+import androidx.databinding.ObservableArrayList;
+import androidx.databinding.ObservableList;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+
+import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
+
+public abstract class ExtendedRecyclerView extends RecyclerView.Adapter {
+ protected ArrayList mDataset;
+ private View mEmptyView;
+
+ public ExtendedRecyclerView(ObservableArrayList myDataset) {
+ mDataset = myDataset;
+
+ myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() {
+ @Override
+ public void onChanged(ObservableList sender) {
+ notifyDataSetChanged();
+ checkIfEmpty();
+ }
+ });
+
+ checkIfEmpty();
+ }
+
+ @Override
+ public void onViewRecycled(VH holder) {
+ super.onViewRecycled(holder);
+ }
+
+ @Override
+ public int getItemCount() {
+ return mDataset.size();
+ }
+
+ public ExtendedRecyclerView setEmptyView(View emptyView) {
+ this.mEmptyView = emptyView;
+ return this;
+ }
+
+ private void checkIfEmpty() {
+ if (mEmptyView != null) {
+ final boolean emptyViewVisible = getItemCount() == 0;
+ mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
+ }
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ILifecycleFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ILifecycleFragment.java
new file mode 100644
index 00000000..284dac89
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ILifecycleFragment.java
@@ -0,0 +1,7 @@
+package it.integry.integrywmsnative.core.interfaces;
+
+public interface ILifecycleFragment {
+
+ void onPreDestroy(Runnable onComplete);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPositionListener.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPositionListener.java
new file mode 100644
index 00000000..e80ad6d4
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPositionListener.java
@@ -0,0 +1,11 @@
+package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
+
+
+import it.integry.integrywmsnative.core.expansion.RunnableArgss;
+import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
+
+public interface ILUPositionListener {
+
+ void onLUPositionChangeRequest(RunnableArgss onComplete);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPrintListener.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPrintListener.java
new file mode 100644
index 00000000..d197d5d0
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUPrintListener.java
@@ -0,0 +1,13 @@
+package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
+
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public interface ILUPrintListener {
+
+ void onLUSuccessullyPrinted();
+
+ void onLUPrintRequest(RunnableArgs onComplete);
+
+ void onLUPrintError(Exception ex, Runnable onComplete);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/CommonModelConsts.java b/app/src/main/java/it/integry/integrywmsnative/core/model/CommonModelConsts.java
index 4d66c266..a3bd4cc2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/CommonModelConsts.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/CommonModelConsts.java
@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.model;
public class CommonModelConsts {
+ public static String ENTITY_NULL_STRING = "[NULL]";
+
public static class OPERATION {
public static String INSERT_OR_UPDATE = "INSERT_OR_UPDATE";
public static String INSERT = "INSERT";
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java
index cbd3646e..1a78ad49 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java
@@ -1,16 +1,15 @@
package it.integry.integrywmsnative.core.model;
-import android.os.Parcel;
-import android.os.Parcelable;
-
import java.math.BigDecimal;
-import java.util.Date;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.utility.UtilityString;
/**
* Created by GiuseppeS on 06/03/2018.
*/
-public class MtbAart implements Parcelable{
+public class MtbAart extends EntityBase{
private String codMart;
private String descrizione;
@@ -88,103 +87,32 @@ public class MtbAart implements Parcelable{
private String codNcIntracee;
private String marchio;
private Integer sezione;
+ private UntMisRifPesoEnum untMisRifPeso;
+
+ private List mtbUntMis;
- public MtbAart(){}
+ public enum UntMisRifPesoEnum {
+ C,
+ M;
+ }
- public boolean isFlagTracciabilita() {
+
+ public MtbAart() {
+ this.type = "mtb_aart";
+ }
+
+ public boolean isFlagTracciabilitaBoolean() {
return flagTracciabilita != null && flagTracciabilita.equalsIgnoreCase("S");
}
-
-
-
-
-
- protected MtbAart(Parcel in) {
- codMart = in.readString();
- descrizione = in.readString();
- untMis = in.readString();
- barCode = in.readString();
- pesoKg = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- qtaCnf = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- codAliq = in.readString();
- codScoArt = in.readString();
- codTcolUi = in.readString();
- codTcolUl = in.readString();
- articoloComposto = in.readString();
- esposizioneComp = in.readString();
- descrizioneEstesa = in.readString();
- codUltForn = in.readString();
- dataUltCar = in.readString();
- valUltCar = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- codUltClie = in.readString();
- dataUltScar = in.readString();
- valUltScar = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- tipoCodice = in.readString();
- note = in.readString();
- posizione = in.readString();
- colliPedana = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- untMis2 = in.readString();
- rapConv2 = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- flagInclListino = in.readString();
- untMis3 = in.readString();
- rapConv3 = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- codMartStat = in.readString();
- codMcon = in.readString();
- codMgrp = in.readString();
- codMsfa = in.readString();
- codMsgr = in.readString();
- codMstp = in.readString();
- codMtip = in.readString();
- descrizioneStat = in.readString();
- flagStato = in.readString();
- cambioDiviCar = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- cambioDiviScar = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- ggScadPartita = in.readByte() == 0x00 ? null : in.readInt();
- volumeMc = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- flagEsponiPrz = in.readString();
- dataUltVar = in.readString();
- percSfrido = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- codBarreImb = in.readString();
- flagCalcPrz = in.readString();
- esposizioneCompAcq = in.readString();
- flagCalcPrzAcq = in.readString();
- diacod = in.readString();
- plu = in.readString();
- partIvaProd = in.readString();
- ragSocProd = in.readString();
- flagRapConvVariabile = in.readString();
- flagMovArtMag = in.readString();
- flagTracciabilita = in.readString();
- taraKg = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- colliStrato = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
- flagQtaCnfFissa = in.readString();
- flagColliPedanaFisso = in.readString();
- codCconCosti = in.readString();
- codCconRicavi = in.readString();
- codDgrpArt = in.readString();
- codDiviCar = in.readString();
- codDiviScar = in.readString();
- codEcrCat = in.readString();
- codEcrMcat = in.readString();
- codEcrRep = in.readString();
- codEcrStipo = in.readString();
- codEcrTipo = in.readString();
- codGrpBolla = in.readString();
- ingredienti = in.readString();
- idArtEqui = in.readString();
- descrCassa = in.readString();
- codNcIntracee = in.readString();
- marchio = in.readString();
- sezione = in.readByte() == 0x00 ? null : in.readInt();
+ public boolean isFlagQtaCnfFissaBoolean() {
+ return "S".equalsIgnoreCase(flagQtaCnfFissa);
}
- @Override
- public int describeContents() {
- return 0;
- }
+
+
public String getCodMart() {
return codMart;
@@ -658,6 +586,10 @@ public class MtbAart implements Parcelable{
return flagRapConvVariabile;
}
+ public boolean getFlagRapConvVariabileBoolean() {
+ return !UtilityString.isNullOrEmpty(flagRapConvVariabile) && flagRapConvVariabile.equalsIgnoreCase("S");
+ }
+
public MtbAart setFlagRapConvVariabile(String flagRapConvVariabile) {
this.flagRapConvVariabile = flagRapConvVariabile;
return this;
@@ -703,10 +635,6 @@ public class MtbAart implements Parcelable{
return flagQtaCnfFissa;
}
- public boolean isFlagQtaCnfFissa() {
- return "S".equalsIgnoreCase(flagQtaCnfFissa);
- }
-
public MtbAart setFlagQtaCnfFissa(String flagQtaCnfFissa) {
this.flagQtaCnfFissa = flagQtaCnfFissa;
return this;
@@ -874,111 +802,21 @@ public class MtbAart implements Parcelable{
return this;
}
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(codMart);
- dest.writeString(descrizione);
- dest.writeString(untMis);
- dest.writeString(barCode);
- dest.writeValue(pesoKg);
- dest.writeValue(qtaCnf);
- dest.writeString(codAliq);
- dest.writeString(codScoArt);
- dest.writeString(codTcolUi);
- dest.writeString(codTcolUl);
- dest.writeString(articoloComposto);
- dest.writeString(esposizioneComp);
- dest.writeString(descrizioneEstesa);
- dest.writeString(codUltForn);
- dest.writeString(dataUltCar);
- dest.writeValue(valUltCar);
- dest.writeString(codUltClie);
- dest.writeString(dataUltScar);
- dest.writeValue(valUltScar);
- dest.writeString(tipoCodice);
- dest.writeString(note);
- dest.writeString(posizione);
- dest.writeValue(colliPedana);
- dest.writeString(untMis2);
- dest.writeValue(rapConv2);
- dest.writeString(flagInclListino);
- dest.writeString(untMis3);
- dest.writeValue(rapConv3);
- dest.writeString(codMartStat);
- dest.writeString(codMcon);
- dest.writeString(codMgrp);
- dest.writeString(codMsfa);
- dest.writeString(codMsgr);
- dest.writeString(codMstp);
- dest.writeString(codMtip);
- dest.writeString(descrizioneStat);
- dest.writeString(flagStato);
- dest.writeValue(cambioDiviCar);
- dest.writeValue(cambioDiviScar);
- if (ggScadPartita == null) {
- dest.writeByte((byte) (0x00));
- } else {
- dest.writeByte((byte) (0x01));
- dest.writeInt(ggScadPartita);
- }
- dest.writeValue(volumeMc);
- dest.writeString(flagEsponiPrz);
- dest.writeString(dataUltVar);
- dest.writeValue(percSfrido);
- dest.writeString(codBarreImb);
- dest.writeString(flagCalcPrz);
- dest.writeString(esposizioneCompAcq);
- dest.writeString(flagCalcPrzAcq);
- dest.writeString(diacod);
- dest.writeString(plu);
- dest.writeString(partIvaProd);
- dest.writeString(ragSocProd);
- dest.writeString(flagRapConvVariabile);
- dest.writeString(flagMovArtMag);
- dest.writeString(flagTracciabilita);
- dest.writeValue(taraKg);
- dest.writeValue(colliStrato);
- dest.writeString(flagQtaCnfFissa);
- dest.writeString(flagColliPedanaFisso);
- dest.writeString(codCconCosti);
- dest.writeString(codCconRicavi);
- dest.writeString(codDgrpArt);
- dest.writeString(codDiviCar);
- dest.writeString(codDiviScar);
- dest.writeString(codEcrCat);
- dest.writeString(codEcrMcat);
- dest.writeString(codEcrRep);
- dest.writeString(codEcrStipo);
- dest.writeString(codEcrTipo);
- dest.writeString(codGrpBolla);
- dest.writeString(ingredienti);
- dest.writeString(idArtEqui);
- dest.writeString(descrCassa);
- dest.writeString(codNcIntracee);
- dest.writeString(marchio);
- if (sezione == null) {
- dest.writeByte((byte) (0x00));
- } else {
- dest.writeByte((byte) (0x01));
- dest.writeInt(sezione);
- }
-
-
-
-
+ public List getMtbUntMis() {
+ return mtbUntMis;
}
- @SuppressWarnings("unused")
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- @Override
- public MtbAart createFromParcel(Parcel in) {
- return new MtbAart(in);
- }
+ public MtbAart setMtbUntMis(List mtbUntMis) {
+ this.mtbUntMis = mtbUntMis;
+ return this;
+ }
- @Override
- public MtbAart[] newArray(int size) {
- return new MtbAart[size];
- }
- };
+ public UntMisRifPesoEnum getUntMisRifPeso() {
+ return untMisRifPeso;
+ }
+ public MtbAart setUntMisRifPeso(UntMisRifPesoEnum untMisRifPeso) {
+ this.untMisRifPeso = untMisRifPeso;
+ return this;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java
index dcfce5b4..19ae2f2b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java
@@ -50,9 +50,10 @@ public class MtbColr extends EntityBase {
private BigDecimal pesoLordoKg;
private MtbAart mtbAart;
-
private MtbPartitaMag mtbPartitaMag;
+ private transient MtbColr refMtbColr;
+
public MtbColr() {
type = "mtb_colr";
}
@@ -69,6 +70,10 @@ public class MtbColr extends EntityBase {
return gestione;
}
+ public GestioneEnum getGestioneEnum() {
+ return GestioneEnum.fromString(gestione);
+ }
+
public MtbColr setGestione(GestioneEnum gestione) {
@@ -180,6 +185,10 @@ public class MtbColr extends EntityBase {
return gestioneRif;
}
+ public GestioneEnum getGestioneRifEnum() {
+ return GestioneEnum.fromString(gestioneRif);
+ }
+
public MtbColr setGestioneRif(String gestioneRif) {
this.gestioneRif = gestioneRif;
return this;
@@ -501,4 +510,13 @@ public class MtbColr extends EntityBase {
this.pesoLordoKg = pesoLordoKg;
return this;
}
+
+ public MtbColr getRefMtbColr() {
+ return refMtbColr;
+ }
+
+ public MtbColr setRefMtbColr(MtbColr refMtbColr) {
+ this.refMtbColr = refMtbColr;
+ return this;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java
index dfde03b1..32624df3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java
@@ -5,8 +5,6 @@ import androidx.databinding.ObservableArrayList;
import org.jetbrains.annotations.Nullable;
import java.math.BigDecimal;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@@ -560,4 +558,12 @@ public class MtbColt extends EntityBase {
result = 31 * result + numCollo.hashCode();
return result;
}
+
+
+ @Override
+ public EntityBase clone() {
+ MtbColt mtbColt = (MtbColt) super.clone();
+ mtbColt.setMtbColr((ObservableArrayList) mtbColt.getMtbColr().clone());
+ return mtbColt;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java
new file mode 100644
index 00000000..89f8c0e4
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java
@@ -0,0 +1,75 @@
+package it.integry.integrywmsnative.core.model;
+
+import java.math.BigDecimal;
+
+public class MtbUntMis extends EntityBase {
+
+ private String untMis;
+ private String flagDig;
+ private BigDecimal cifreDec;
+ private String tipoUm;
+ private String flagUnitaKg;
+ private String flagAttivo;
+
+ public MtbUntMis() {
+ this.type = "mtb_unt_mis";
+ }
+
+ public String getUntMis() {
+ return untMis;
+ }
+
+ public MtbUntMis setUntMis(String untMis) {
+ this.untMis = untMis;
+ return this;
+ }
+
+ public boolean isFlagDig() {
+ return "S".equalsIgnoreCase(flagDig);
+ }
+
+ public String getFlagDig() {
+ return flagDig;
+ }
+
+ public MtbUntMis setFlagDig(String flagDig) {
+ this.flagDig = flagDig;
+ return this;
+ }
+
+ public BigDecimal getCifreDec() {
+ return cifreDec;
+ }
+
+ public MtbUntMis setCifreDec(BigDecimal cifreDec) {
+ this.cifreDec = cifreDec;
+ return this;
+ }
+
+ public String getTipoUm() {
+ return tipoUm;
+ }
+
+ public MtbUntMis setTipoUm(String tipoUm) {
+ this.tipoUm = tipoUm;
+ return this;
+ }
+
+ public String getFlagUnitaKg() {
+ return flagUnitaKg;
+ }
+
+ public MtbUntMis setFlagUnitaKg(String flagUnitaKg) {
+ this.flagUnitaKg = flagUnitaKg;
+ return this;
+ }
+
+ public String getFlagAttivo() {
+ return flagAttivo;
+ }
+
+ public MtbUntMis setFlagAttivo(String flagAttivo) {
+ this.flagAttivo = flagAttivo;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/dto/WithdrawableMtbColr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/dto/WithdrawableMtbColr.java
new file mode 100644
index 00000000..c23f5c3a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/dto/WithdrawableMtbColr.java
@@ -0,0 +1,21 @@
+package it.integry.integrywmsnative.core.model.dto;
+
+import it.integry.integrywmsnative.core.model.MtbColr;
+
+public class WithdrawableMtbColr extends MtbColr {
+
+ private transient MtbColr withdrawRow;
+
+ public WithdrawableMtbColr() {
+ super();
+ }
+
+ public MtbColr getWithdrawRow() {
+ return withdrawRow;
+ }
+
+ public WithdrawableMtbColr setWithdrawRow(MtbColr withdrawRow) {
+ this.withdrawRow = withdrawRow;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/report/ReportManager.java b/app/src/main/java/it/integry/integrywmsnative/core/report/ReportManager.java
index da7d70d8..28a9b227 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/report/ReportManager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/report/ReportManager.java
@@ -1,13 +1,13 @@
package it.integry.integrywmsnative.core.report;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
public class ReportManager {
- public static void getRightReportNameByGestione(GestioneEnum gestione, RunnableArgs onComplete, RunnableArgs onFailed) {
+
+ public static void getReportNameLUFromGestione(GestioneEnum gestione, RunnableArgs onComplete, RunnableArgs onFailed) {
if(gestione != null){
@@ -34,7 +34,7 @@ public class ReportManager {
}
- public static String getRightReportNameByGestione(GestioneEnum gestione) {
+ public static String getReportNameLUFromGestione(GestioneEnum gestione) {
if(gestione != null){
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/CommonRESTException.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/CommonRESTException.java
index 36c521a0..42e4abd4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/CommonRESTException.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/CommonRESTException.java
@@ -4,7 +4,7 @@ import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.util.HashMap;
-import it.integry.integrywmsnative.core.exception.printer.PrinterNotFoundException;
+import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
/**
* Created by GiuseppeS on 22/03/2018.
@@ -18,7 +18,7 @@ public class CommonRESTException {
private static HashMap> bindingExceptions = new HashMap() {{
put("Printer not found", new HashMap(){{
put(MESSAGE_KEY, "Stampante non trovata");
- put(EXCEPTION_KEY, PrinterNotFoundException.class);
+ put(EXCEPTION_KEY, NoPrintersFoundException.class);
}});
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
index 111f53b8..584a4219 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
@@ -5,6 +5,8 @@ import com.annimon.stream.Stream;
import java.util.List;
+import javax.inject.Singleton;
+
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -13,9 +15,10 @@ import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
+@Singleton
public class ArticoloRESTConsumer extends _BaseRESTConsumer {
- public static void getByBarcodeProd(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public static void getByBarcodeProdStatic(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) {
ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumerService.getByBarcodeProd(barcodeProd).enqueue(new Callback>() {
@Override
@@ -32,6 +35,10 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
});
}
+ public void getByBarcodeProd(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ getByBarcodeProdStatic(barcodeProd, onComplete, onFailed);
+ }
+
public static void getByCodMart(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
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 39e20897..31ab699a 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,5 +1,7 @@
package it.integry.integrywmsnative.core.rest.consumers;
+import javax.inject.Singleton;
+
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.IBarcodeCustomization;
@@ -11,9 +13,10 @@ import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
+@Singleton
public class BarcodeRESTConsumer extends _BaseRESTConsumer {
- public static void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) {
+ public static void decodeEan128Static(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) {
IBarcodeCustomization barcodeCustomization = ClassRouter.getInstance(ClassRouter.PATH.BARCODE_CUSTOMIZATION);
@@ -38,6 +41,9 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer {
onFailed.run(new Exception(t));
}
});
+ }
+ public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) {
+ BarcodeRESTConsumer.decodeEan128Static(barcodeObj, onComplete, onFailed);
}
}
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 3da97944..db8782ae 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,8 +1,5 @@
package it.integry.integrywmsnative.core.rest.consumers;
-import android.app.Dialog;
-import android.content.Context;
-
import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Stream;
@@ -20,6 +17,8 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import javax.inject.Singleton;
+
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -36,7 +35,6 @@ import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.settings.SettingsManager;
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.UtilityQuery;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
@@ -44,9 +42,10 @@ import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
+@Singleton
public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
- public static void saveCollo(MtbColt mtbColtToSave, final ISimpleOperationCallback callback) {
+ public static void saveColloStatic(MtbColt mtbColtToSave, final ISimpleOperationCallback callback) {
for (int i = 0; i < mtbColtToSave.getMtbColr().size(); i++) {
mtbColtToSave.getMtbColr().get(i)
@@ -58,8 +57,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
+ public void saveCollo(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) {
+ ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtToSave, onComplete, onFailed);
+ }
- public static void saveCollo(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) {
+ public static void saveColloStatic(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) {
MtbColt mtbColtToSaveClone = (MtbColt) mtbColtToSave.clone();
mtbColtToSave.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
@@ -113,25 +115,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
- public static void saveRigaCollo(MtbColr mtbColrToSave, RunnableArgs onComplete, RunnableArgs onFailed) {
-
- mtbColrToSave.setMtbAart(null);
- mtbColrToSave.setMtbPartitaMag(null);
-
- EntityRESTConsumer.processEntity(mtbColrToSave, new ISimpleOperationCallback() {
- @Override
- public void onSuccess(MtbColr value) {
- if (onComplete != null) onComplete.run(value);
- }
-
- @Override
- public void onFailed(Exception ex) {
- if (onFailed != null) onFailed.run(ex);
- }
- }, MtbColr.class);
-
- }
-
public static void createColloLavorazione(int segno, RunnableArgs onComplete, RunnableArgs onFailed) {
MtbColt mtbColtToCreate = new MtbColt()
.setSegno(segno)
@@ -143,7 +126,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
.setOperation(CommonModelConsts.OPERATION.INSERT);
- saveCollo(mtbColtToCreate, new ISimpleOperationCallback() {
+ saveColloStatic(mtbColtToCreate, new ISimpleOperationCallback() {
@Override
public void onSuccess(MtbColt value) {
if (onComplete != null) onComplete.run(value);
@@ -206,7 +189,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
- saveCollo(newMtbColt, new ISimpleOperationCallback() {
+ saveColloStatic(newMtbColt, new ISimpleOperationCallback() {
@Override
public void onSuccess(MtbColt value) {
if (onComplete != null) onComplete.run(value);
@@ -283,7 +266,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
- saveCollo(newMtbColt, new ISimpleOperationCallback() {
+ saveColloStatic(newMtbColt, new ISimpleOperationCallback() {
@Override
public void onSuccess(MtbColt value) {
if (onComplete != null) onComplete.run(value);
@@ -328,7 +311,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
mtbColtToCreate
.setOperation(CommonModelConsts.OPERATION.INSERT);
- saveCollo(mtbColtToCreate, new ISimpleOperationCallback() {
+ saveColloStatic(mtbColtToCreate, new ISimpleOperationCallback() {
@Override
public void onSuccess(MtbColt value) {
if (onComplete != null) onComplete.run(value);
@@ -341,11 +324,15 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
- public static void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) {
+ public void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) {
+ ColliMagazzinoRESTConsumer.deleteColloStatic(mtbColtToDelete, onComplete, onFailed);
+ }
+
+ public static void deleteColloStatic(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) {
mtbColtToDelete.setOperation(CommonModelConsts.OPERATION.DELETE);
- saveCollo(mtbColtToDelete, new ISimpleOperationCallback() {
+ saveColloStatic(mtbColtToDelete, new ISimpleOperationCallback() {
@Override
public void onSuccess(MtbColt value) {
if (onComplete != null) onComplete.run();
@@ -401,7 +388,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
- public static void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) {
+ public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) {
+ ColliMagazzinoRESTConsumer.getBySSCCStatic(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed);
+ }
+
+ public static void getBySSCCStatic(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) {
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback>() {
@Override
@@ -417,8 +408,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
}, onFailed);
-
-
}
@Override
@@ -469,7 +458,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}, onFailed);
}
- public static void getMultipleByTestate(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public void getMultipleByTestate(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ ColliMagazzinoRESTConsumer.getMultipleByTestateStatic(testate, onlyResiduo, onComplete, onFailed);
+ }
+
+ public static void getMultipleByTestateStatic(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) {
ArrayList resultMtbColt = new ArrayList<>();
cyclicGetMultipleByTestate(testate.iterator(), onlyResiduo, resultMtbColt, () -> {
onComplete.run(resultMtbColt);
@@ -479,7 +472,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
private static void cyclicGetMultipleByTestate(@NotNull Iterator sourceMtbColts, boolean onlyResiduo, ArrayList resultMtbColt, Runnable onComplete, RunnableArgs onAbort) {
if (sourceMtbColts.hasNext()) {
- getByTestata(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> {
+ getByTestataStatic(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> {
resultMtbColt.add(mtbColt);
cyclicGetMultipleByTestate(sourceMtbColts, onlyResiduo, resultMtbColt, onComplete, onAbort);
}, onAbort);
@@ -488,7 +481,21 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
}
- public static void getByTestata(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) {
+ public void getByChiaveCollo(GestioneEnum gestione, int numCollo, String dataCollo, String serCollo, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) {
+ MtbColt mtbColtToRetrieve = new MtbColt()
+ .setGestione(gestione)
+ .setNumCollo(numCollo)
+ .setDataCollo(dataCollo)
+ .setSerCollo(serCollo);
+
+ ColliMagazzinoRESTConsumer.getByTestataStatic(mtbColtToRetrieve, onlyResiduo, throwExcIfNull, onComplete, onFailed);
+ }
+
+ public void getByTestata(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) {
+ ColliMagazzinoRESTConsumer.getByTestataStatic(testata, onlyResiduo, throwExcIfNull, onComplete, onFailed);
+ }
+
+ public static void getByTestataStatic(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) {
String ssccString = null;
if (testata.getSerCollo().equalsIgnoreCase(CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE)) {
@@ -522,7 +529,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
ssccString += "0";
}
- getBySSCC(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed);
+ getBySSCCStatic(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed);
}
@@ -535,7 +542,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
if (posizione == null) mtbColtToSaveClone.setPosizione(null);
else mtbColtToSaveClone.setPosizione(posizione.getPosizione());
- ColliMagazzinoRESTConsumer.saveCollo(mtbColtToSaveClone, mtbColt -> {
+ ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtToSaveClone, mtbColt -> {
if (onComplete != null) onComplete.run();
}, ex -> {
if (onFailed != null) onFailed.run(ex);
@@ -544,69 +551,52 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
- public static void deleteRiga(MtbColr mtbColrToDelete, Runnable onComplete, RunnableArgs onFailed) {
- MtbColr newMtbColr = new MtbColr();
-
- newMtbColr.setNumCollo(mtbColrToDelete.getNumCollo());
- newMtbColr.setDataCollo(mtbColrToDelete.getDataColloS());
- newMtbColr.setSerCollo(mtbColrToDelete.getSerCollo());
- newMtbColr.setGestione(mtbColrToDelete.getGestione());
- newMtbColr.setRiga(mtbColrToDelete.getRiga());
-
-
- newMtbColr.setOperation(CommonModelConsts.OPERATION.DELETE);
-
- EntityRESTConsumer.processEntity(newMtbColr, new ISimpleOperationCallback