diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
new file mode 100644
index 00000000..a06c805b
--- /dev/null
+++ b/.idea/assetWizardSettings.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
new file mode 100644
index 00000000..f32d8f4d
Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 00000000..30aa626c
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index 96cc43ef..00000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
deleted file mode 100644
index e7bedf33..00000000
--- a/.idea/copyright/profiles_settings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 40b03484..2105900b 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -3,13 +3,15 @@
-
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 7af1a597..e0a9141b 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,8 +2,11 @@
-
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Integry.jks b/Integry.jks
new file mode 100644
index 00000000..1b30e196
Binary files /dev/null and b/Integry.jks differ
diff --git a/app/.gitignore b/app/.gitignore
index 796b96d1..956c004d 100644
--- a/app/.gitignore
+++ b/app/.gitignore
@@ -1 +1,2 @@
/build
+/release
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf435e74..636a418b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,14 +1,16 @@
apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
android {
- compileSdkVersion 25
- buildToolsVersion "27.0.0"
+ compileSdkVersion 28
+ buildToolsVersion '28.0.3'
defaultConfig {
applicationId "it.integry.integrywmsnative"
minSdkVersion 21
- targetSdkVersion 25
- versionCode 1
- versionName "1.0"
+ targetSdkVersion 28
+ versionCode 4
+ versionName "1.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -17,26 +19,69 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
+ dataBinding {
+ enabled = true
+ }
+
+ compileOptions {
+ targetCompatibility 1.8
+ sourceCompatibility 1.8
+ }
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
+ androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.android.support:appcompat-v7:25.3.1'
- compile 'com.android.support:support-v4:25.3.1'
- compile 'com.android.support:design:25.3.1'
- compile 'com.android.support.constraint:constraint-layout:1.0.2'
- compile 'com.android.support:cardview-v7:25.3.1'
- compile 'com.android.support:recyclerview-v7:25.3.1'
-
- compile 'com.squareup.retrofit2:retrofit:2.3.0'
- compile 'com.squareup.retrofit2:converter-gson:2.0.0'
-
- compile 'com.jakewharton:butterknife:8.8.1'
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation 'com.orhanobut:logger:2.2.0'
+ implementation 'com.android.support:appcompat-v7:28.0.0'
+ implementation 'com.android.support:support-v4:28.0.0'
+ implementation 'com.android.support:design:28.0.0'
+ implementation 'com.android.support.constraint:constraint-layout:1.1.3'
+ implementation 'com.android.support:cardview-v7:28.0.0'
+ implementation 'com.android.support:recyclerview-v7:28.0.0'
+ implementation 'com.android.support:preference-v7:28.0.0'
+ implementation 'com.squareup.retrofit2:retrofit:2.3.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.0.0'
+ implementation 'org.parceler:parceler-api:1.1.10'
+ annotationProcessor 'org.parceler:parceler:1.1.10'
+ implementation 'com.annimon:stream:1.2.1'
+ //MVVM
+ implementation 'android.arch.lifecycle:extensions:1.1.1'
+ annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
+ implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
+ implementation 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.1.1'
+ implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.1.1'
+ implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.1.1'
+ implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.1.1'
+ implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
+ implementation 'br.com.zbra:android-linq:1.1.0'
+ //FAB
+ //implementation 'com.getbase:floatingactionbutton:1.10.1'
+ implementation 'com.github.clans:fab:1.6.4'
+ //CUSTOM VIEWS
+ implementation 'de.hdodenhof:circleimageview:2.2.0'
+ 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 project(':waterfall_toolbar')
+ implementation 'com.mikhaellopez:lazydatepicker:1.0.0'
+ implementation 'com.github.demoNo:AutoScrollViewPager:v1.0.2'
+
+ //AppUpdate
+ implementation 'com.github.javiersantos:AppUpdater:2.7'
- testCompile 'junit:junit:4.12'
+ //Barcode
+ implementation project(':pointmobilescannerlibrary')
+ implementation project(path: ':barcode_base_library')
+}
+repositories {
+ mavenCentral()
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cbeb923f..062f1753 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,10 @@
package="it.integry.integrywmsnative">
+
+ android:theme="@style/Light"
+ android:windowSoftInputMode="adjustPan"
+ android:screenOrientation="portrait">
@@ -24,7 +28,28 @@
+ android:theme="@style/Light"
+ android:screenOrientation="portrait"
+ android:windowSoftInputMode="adjustNothing" />
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
index 1131dda7..1f5340a0 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
@@ -1,66 +1,103 @@
package it.integry.integrywmsnative;
-import android.graphics.Color;
-import android.graphics.ColorMatrixColorFilter;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.Drawable;
+import android.content.Intent;
+import android.databinding.DataBindingUtil;
import android.os.Bundle;
-import android.support.annotation.ColorRes;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.design.widget.NavigationView;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
-import android.text.SpannableString;
-import android.text.style.ForegroundColorSpan;
+import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
+import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
+import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment;
+import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.update.UpdatesManager;
+import it.integry.integrywmsnative.core.utility.UtilitySettings;
+import it.integry.integrywmsnative.databinding.ActivityMainBinding;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
-import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ITitledFragment;
+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.rettifica_giacenze.RettificaGiacenzeFragment;
+import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
+import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
+import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
+import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
- @BindView(R.id.main_search) SearchView mSearchView;
+ //@BindView(R.id.drawer_username) TextView mDrawerUsername;
+ //@BindView(R.id.drawer_logoAzienda) ImageView mDrawerLogo;
- @BindView(R.id.nav_view) NavigationView mNavigationView;
+ private ActivityMainBinding mBinding;
+
+ private boolean firstCheckExecution = true;
+ private boolean mIsOnline = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ButterKnife.bind(this);
+ if(SettingsManager.i().user.username == null && SettingsManager.i().user.password == null){
+ startLoginActivity();
+ } else {
+ mBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_main, null, false);
+ setContentView(mBinding.getRoot());
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
+ UpdatesManager.init(this);
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
- this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
- drawer.setDrawerListener(toggle);
- toggle.syncState();
+ Toolbar toolbar = findViewById(R.id.toolbar);
+ setSupportActionBar(toolbar);
- mNavigationView = (NavigationView) findViewById(R.id.nav_view);
- mNavigationView.setNavigationItemSelectedListener(this);
- mSearchView.setVisibility(View.GONE);
+ ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
+ this, mBinding.drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
+ mBinding.drawerLayout.setDrawerListener(toggle);
+ toggle.syncState();
+
+
+ mBinding.navView.setNavigationItemSelectedListener(this);
+ mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
+
+ changeContentFragment(MainFragment.newInstance());
+
+ init();
+
+ }
+
}
+ private void startLoginActivity(){
+ Intent myIntent = new Intent(this, LoginActivity.class);
+ startActivity(myIntent);
+ this.finish();
+ }
+
+
+
@Override
public void onBackPressed() {
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
+ DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
@@ -93,69 +130,66 @@ public class MainActivity extends AppCompatActivity
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
+
+ mBinding.appBarMain.waterfallToolbar.resetElevation();
+ mBinding.appBarMain.waterfallToolbar.setRecyclerView(null);
+
// Handle navigation view item clicks here.
-// resetAllMenuItemsTextColor(mNavigationView);
-
-// int[] menuColorArray = this.getResources().getIntArray(R.array.menuColors);
-
-
Fragment fragment = null;
int id = item.getItemId();
if (id == R.id.nav_accettazione) {
-// setTextColorForMenuItem(item, menuColorArray[0]);
-
fragment = MainAccettazioneFragment.newInstance();
this.adaptViewToFragment(fragment);
} else if (id == R.id.nav_gallery) {
-
+ fragment = MainVenditaFragment.newInstance();
+ this.adaptViewToFragment(fragment);
} else if (id == R.id.nav_slideshow) {
-
+ fragment = RettificaGiacenzeFragment.newInstance();
+ this.adaptViewToFragment(fragment);
} else if (id == R.id.nav_manage) {
-
- } else if (id == R.id.nav_share) {
+ fragment = VersamentoMerceFragment.newInstance();
+ this.adaptViewToFragment(fragment);
+ }
+ /*else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
+ }*/
+
+
+ else if(id == R.id.nav_settings){
+ fragment = new MainSettingsFragment();
+ this.adaptViewToFragment(fragment);
}
- if (fragment != null) {
- FragmentManager fragmentManager = getSupportFragmentManager();
- fragmentManager.beginTransaction()
- .replace(R.id.frame_container, fragment).commit();
-
+ else if(id == R.id.nav_logout){
+ UtilitySettings.logout();
+ startLoginActivity();
}
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
+ changeContentFragment(fragment);
+
+ DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
- private void resetAllMenuItemsTextColor(NavigationView navigationView) {
- for (int i = 0; i < navigationView.getMenu().size(); i++)
- setTextColorForMenuItem(navigationView.getMenu().getItem(i), R.color.colorPrimary);
+ public void popToMain() {
+ MainFragment mainFragment = MainFragment.newInstance();
+
+ adaptViewToFragment(mainFragment);
+
+ changeContentFragment(mainFragment);
}
- private void setTextColorForMenuItem(MenuItem menuItem, int color) {
- SpannableString spanString = new SpannableString(menuItem.getTitle().toString());
- spanString.setSpan(new ForegroundColorSpan(color), 0, spanString.length(), 0);
- menuItem.setTitle(spanString);
-
- if(menuItem.getIcon() != null){
- Drawable icon = menuItem.getIcon();
- icon.mutate();
- icon.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
- }
- }
-
-
private void adaptViewToFragment(Fragment fragment){
if(fragment instanceof SearchView.OnQueryTextListener) {
- mSearchView.setOnQueryTextListener((SearchView.OnQueryTextListener) fragment);
- mSearchView.setVisibility(View.VISIBLE);
+ mBinding.appBarMain.mainSearch.setOnQueryTextListener((SearchView.OnQueryTextListener) fragment);
+ mBinding.appBarMain.mainSearch.setVisibility(View.VISIBLE);
} else {
- mSearchView.setOnQueryTextListener(null);
- mSearchView.setVisibility(View.GONE);
+ mBinding.appBarMain.mainSearch.setOnQueryTextListener(null);
+ mBinding.appBarMain.mainSearch.setVisibility(View.GONE);
}
@@ -164,5 +198,82 @@ public class MainActivity extends AppCompatActivity
} else {
getSupportActionBar().setTitle(R.string.app_name);
}
+
+ if(fragment instanceof IRecyclerFragment) {
+ ((IRecyclerFragment) fragment).setWaterfallToolbar(mBinding.appBarMain.waterfallToolbar);
+ }
+
+ if(fragment instanceof ISelectAllFragment && ((ISelectAllFragment)fragment).isEnabled()) {
+ mBinding.appBarMain.mainSelectAll.setVisibility(View.VISIBLE);
+ mBinding.appBarMain.mainSelectAll.setOnClickListener(v -> ((ISelectAllFragment)fragment).onSelectAll());
+ } else {
+ mBinding.appBarMain.mainSelectAll.setVisibility(View.GONE);
+ mBinding.appBarMain.mainSelectAll.setOnClickListener(null);
+ }
+
+ if(fragment instanceof IFilterableFragment) {
+ mBinding.appBarMain.mainFilter.setVisibility(View.VISIBLE);
+ mBinding.appBarMain.mainFilter.setOnClickListener(v -> ((IFilterableFragment)fragment).onFilterClick());
+ } else {
+ mBinding.appBarMain.mainFilter.setVisibility(View.GONE);
+ mBinding.appBarMain.mainFilter.setOnClickListener(null);
+ }
}
+
+ private void changeContentFragment(Fragment fragment){
+ if (fragment != null) {
+ FragmentManager fragmentManager = getSupportFragmentManager();
+ fragmentManager.beginTransaction()
+ .replace(R.id.frame_container, fragment).commit();
+
+ }
+ }
+
+
+
+
+
+
+ private void init(){
+
+ if(BarcodeManager.getCurrentBarcodeInterface() != null) {
+// DialogSimpleMessageHelper.makeInfoDialog(this,
+// "Lettore barcode",
+// new SpannableString("Trovato adattatore " + BarcodeManager.getCurrentBarcodeInterface().getAdapterName() + " installato nel sistema"),
+// null, null).show();
+ }
+
+ ServerStatusChecker.getIstance().addCallback(value -> {
+ if(value && (!mIsOnline || firstCheckExecution)){
+
+ SettingsManager.reloadDBVariables(() -> {
+ mIsOnline = true;
+ firstCheckExecution = false;
+
+ onDBLoaded();
+ }, ex -> {
+ //mNoConnectionLayout.expand(true);
+ if(!mIsOnline) mIsOnline = false;
+ }
+ );
+
+ } else if(!value && mIsOnline){
+ mIsOnline = false;
+ }
+ });
+
+ }
+
+
+ private void onDBLoaded() {
+ LinearLayout headerLayout = (LinearLayout) mBinding.navView.getHeaderView(0);
+
+ ((TextView) headerLayout.findViewById(R.id.drawer_username)).setText(SettingsManager.i().user.fullname);
+ ((TextView) headerLayout.findViewById(R.id.drawer_deposito)).setText(SettingsManager.i().userSession.depo.getCodMdep() + " - " + SettingsManager.i().userSession.depo.getDescrizione());
+
+ if(SettingsManager.iDB().getDatiAzienda().isLogoAvailable()) {
+ ((ImageView) headerLayout.findViewById(R.id.drawer_logoAzienda)).setImageBitmap(SettingsManager.iDB().getDatiAzienda().getLogo());
+ }
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java
new file mode 100644
index 00000000..1457a234
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java
@@ -0,0 +1,62 @@
+package it.integry.integrywmsnative;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.text.SpannableString;
+
+import com.orhanobut.logger.AndroidLogAdapter;
+import com.orhanobut.logger.Logger;
+
+import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.settings.Stash;
+import it.integry.integrywmsnative.core.update.UpdatesManager;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
+
+public class MainApplication extends Application {
+
+ public static Resources res;
+ public static Context Context;
+
+ // Called when the application is starting, before any other application objects have been created.
+ // Overriding this method is totally optional!
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ Stash.init(this);
+
+ SettingsManager.init(this);
+ ServerStatusChecker.init();
+ BarcodeManager.init(this);
+
+// UtilityExceptions.init(this);
+ UtilityResources.init(this);
+
+ Logger.addLogAdapter(new AndroidLogAdapter());
+
+ res = getResources();
+ Context = this;
+ }
+
+ // Called by the system when the device configuration changes while your component is running.
+ // Overriding this method is totally optional!
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ }
+
+ // This is called when the overall system is running low on memory,
+ // and would like actively running processes to tighten their belts.
+ // Overriding this method is totally optional!
+ @Override
+ public void onLowMemory() {
+ super.onLowMemory();
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java
new file mode 100644
index 00000000..073abf4a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/CommonConst.java
@@ -0,0 +1,33 @@
+package it.integry.integrywmsnative.core;
+
+public class CommonConst {
+
+ public static class Login {
+
+ public static class Azienda {
+// public static String host = "192.168.2.13";
+// public static int port = 8080;
+
+ public static String host = "www2.studioml.it";
+ public static int port = 80;
+ }
+
+ }
+
+ public static class Config {
+ public static String COMMESSA_MAG = "MAG";
+
+ public static String DEFAULT_ANONYMOUS_UL_SERIE = "UL";
+ }
+
+
+ public static class Mail {
+
+ public static String[] forErrors = {
+// "syslogs@integry.it",
+ "g.scorrano@integry.it"
+ };
+
+ }
+
+}
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 13d27c25..6bcd686e 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
@@ -1,7 +1,16 @@
package it.integry.integrywmsnative.core.REST;
+import android.util.Log;
+
import java.net.SocketException;
import java.net.SocketTimeoutException;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
+import it.integry.integrywmsnative.core.REST.model.EsitoType;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import retrofit2.Response;
/**
* Created by GiuseppeS on 22/03/2018.
@@ -9,14 +18,17 @@ import java.net.SocketTimeoutException;
public class CommonRESTException {
+
public static String tryRecognizeThenGetMessage(Exception ex){
if(ex instanceof SocketException){
return "Errore di comunicazione con il server remoto. Riprova.";
} else if(ex instanceof SocketTimeoutException){
return "Errore di timeout durante la comunicazione con il server remoto. Riprova.";
+ } else if(ex.getMessage().startsWith("Printer not found")){
+ return "Stampante non trovata";
} else {
- return null;
+ return ex.getMessage();
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/HttpInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/HttpInterceptor.java
index 2de8038b..455fd0ed 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/REST/HttpInterceptor.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/HttpInterceptor.java
@@ -4,6 +4,7 @@ import android.util.Base64;
import java.io.IOException;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.Request;
@@ -15,12 +16,13 @@ import okhttp3.Response;
public class HttpInterceptor implements Interceptor {
- private final String USERNAME = "magazzino";
- private final String PASSWORD = "m";
- private final String PROFILE_DB = "IME_TE";
-
@Override
public Response intercept(Chain chain) throws IOException {
+
+ final String PROFILE_DB = SettingsManager.i().userSession.profileDB;
+ final String USERNAME = SettingsManager.i().user.username;
+ final String PASSWORD = SettingsManager.i().user.password;
+
final Request request = chain.request();
final HttpUrl url = request.url().newBuilder()
.addQueryParameter("profileDb", PROFILE_DB)
@@ -32,8 +34,8 @@ public class HttpInterceptor implements Interceptor {
.addHeader("Authorization", string)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "*/*")
- .addHeader("username", USERNAME)
- .addHeader("password", PASSWORD)
+ .addHeader("username", USERNAME != null ? USERNAME : "")
+ .addHeader("password", PASSWORD != null ? PASSWORD : "")
.url(url).build();
return chain.proceed(newRequest);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java
index 7f4f9b20..68fdd481 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java
@@ -1,5 +1,8 @@
package it.integry.integrywmsnative.core.REST;
+import java.util.concurrent.TimeUnit;
+
+import it.integry.integrywmsnative.core.settings.SettingsManager;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
@@ -11,11 +14,31 @@ import retrofit2.converter.gson.GsonConverterFactory;
public class RESTBuilder {
public static T getService(final Class service) {
- OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new HttpInterceptor()).build();
+// return getService(service, "192.168.2.13", 8080);
+ return getService(service, SettingsManager.i().server.host, SettingsManager.i().server.port, true);
+
+ }
+ public static T getService(final Class service, long timeout) {
+// return getService(service, "192.168.2.13", 8080);
+ return getService(service, SettingsManager.i().server.host, SettingsManager.i().server.port, true);
+
+ }
+
+ public static T getService(final Class service, String host, int port, boolean addInterceptors){
+ OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
+
+ clientBuilder.connectTimeout(30, TimeUnit.SECONDS);
+ clientBuilder.readTimeout(30, TimeUnit.SECONDS);
+ clientBuilder.writeTimeout(30, TimeUnit.SECONDS);
+
+ if(addInterceptors) clientBuilder.addInterceptor(new HttpInterceptor());
+
+ OkHttpClient client = clientBuilder.build();
+
+ String endpoint = "http://" + host + ":" + port + "/ems-api/";
Retrofit retrofit = new Retrofit.Builder()
- .baseUrl("http://192.168.2.13:8080/ems-api/")
-// .baseUrl("http://www2.studioml.it/ems-api/")
+ .baseUrl(endpoint)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
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
new file mode 100644
index 00000000..b7e5b40b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ArticoloRESTConsumer.java
@@ -0,0 +1,60 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import com.annimon.stream.Collectors;
+import com.annimon.stream.Stream;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.REST.RESTBuilder;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import it.integry.integrywmsnative.core.utility.UtilityDB;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class ArticoloRESTConsumer extends _BaseRESTConsumer {
+
+ public static void getByBarcodeProd(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class);
+ articoloRESTConsumerService.getByBarcodeProd(barcodeProd).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "getByBarcodeProd", (m) -> {
+ onComplete.run(response.body().getEntityList());
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+
+ public static void getByCodMart(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
+
+ String joinedCods = Stream.of(codMartToFind)
+ .collect(Collectors.joining(","));
+
+
+ ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
+ articoloRESTConsumer.getByCodMart(joinedCods).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "getByCodMart", (m) -> {
+ onComplete.run(response.body().getEntityList());
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ArticoloRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ArticoloRESTConsumerService.java
new file mode 100644
index 00000000..5d476b84
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ArticoloRESTConsumerService.java
@@ -0,0 +1,21 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.Query;
+
+public interface ArticoloRESTConsumerService {
+
+
+ @POST("SM2getArticoloByBarcode")
+ Call> getByBarcodeProd(@Query("barcode") String barcodeProd);
+
+ @GET("SM2getArticoloByCodMart")
+ Call> getByCodMart(@Query("codMart") String barcodeProd);
+
+}
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
new file mode 100644
index 00000000..7ba74db8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/BarcodeRESTConsumer.java
@@ -0,0 +1,34 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import com.google.gson.JsonObject;
+
+import it.integry.integrywmsnative.core.REST.RESTBuilder;
+import it.integry.integrywmsnative.core.REST.model.Ean128Model;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class BarcodeRESTConsumer extends _BaseRESTConsumer {
+
+ public static void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) {
+
+ String ean128 = barcodeObj.getStringValue().replaceAll("" + ((char) 29), "|");
+
+ BarcodeRESTConsumerService barcodeRESTConsumerService = RESTBuilder.getService(BarcodeRESTConsumerService.class);
+ barcodeRESTConsumerService.decodeEan128(ean128).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "DecodeEan128", onComplete, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/BarcodeRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/BarcodeRESTConsumerService.java
new file mode 100644
index 00000000..108eb2dc
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/BarcodeRESTConsumerService.java
@@ -0,0 +1,19 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import com.google.gson.JsonObject;
+
+import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
+import it.integry.integrywmsnative.core.REST.model.Ean128Model;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.Query;
+
+public interface BarcodeRESTConsumerService {
+
+ @GET("decodeEan128")
+ Call> decodeEan128(@Query("ean128") String ean128);
+
+}
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
new file mode 100644
index 00000000..c9755991
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java
@@ -0,0 +1,349 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import com.annimon.stream.Stream;
+import com.google.gson.JsonObject;
+
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.CommonConst;
+import it.integry.integrywmsnative.core.REST.RESTBuilder;
+import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.CommonModelConsts;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
+import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
+
+
+ public static void getAvailablePosizioni(RunnableArgs> onComplete, RunnableArgs onFailed) {
+ String codMdep = SettingsManager.i().userSession.depo.getCodMdep();
+
+ ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
+ colliMagazzinoRESTConsumerService.getAvailablePosizioni(codMdep).enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "getAvailablePosizioni", (m) -> {
+ onComplete.run(response.body().getDto());
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+
+ public static void saveCollo(MtbColt mtbColtToSave, final ISimpleOperationCallback callback){
+
+ EntityRESTConsumer.processEntity(mtbColtToSave, callback, MtbColt.class);
+
+ }
+
+
+ public static void saveCollo(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed){
+
+ EntityRESTConsumer.processEntity(mtbColtToSave, new ISimpleOperationCallback() {
+ @Override
+ public void onSuccess(MtbColt value) {
+ if(onComplete != null) onComplete.run(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ }, MtbColt.class);
+
+ }
+
+ public static void createColloLavorazione(int segno, RunnableArgs onComplete, RunnableArgs onFailed) {
+ MtbColt mtbColtToCreate = new MtbColt()
+ .setSegno(segno)
+ .setGestione(GestioneEnum.LAVORAZIONE);
+
+ mtbColtToCreate
+ .setOperation(CommonModelConsts.OPERATION.INSERT);
+
+
+ saveCollo(mtbColtToCreate, new ISimpleOperationCallback() {
+ @Override
+ public void onSuccess(MtbColt value) {
+ if(onComplete != null) onComplete.run(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+ }
+
+
+ public static void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, GestioneEnum gestione, RunnableArgs onComplete, RunnableArgs onFailed) {
+ createColloFromEtichettaAnonima(barcodeScanDTO.getStringValue(), gestione, onComplete, onFailed);
+ }
+
+
+ public static void createColloFromEtichettaAnonima(String barcode, GestioneEnum gestione, RunnableArgs onComplete, RunnableArgs onFailed) {
+
+ MtbColt mtbColtToCreate = new MtbColt()
+ .setGestione(gestione);
+
+ Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcode);
+ String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE;
+
+ if(customNumCollo != null) {
+ mtbColtToCreate.setNumCollo(customNumCollo);
+ }
+
+ if(!UtilityString.isNullOrEmpty(customSerCollo)) {
+ mtbColtToCreate.setSerCollo(customSerCollo);
+ }
+
+ mtbColtToCreate
+ .setOperation(CommonModelConsts.OPERATION.INSERT);
+
+ saveCollo(mtbColtToCreate, new ISimpleOperationCallback() {
+ @Override
+ public void onSuccess(MtbColt value) {
+ if(onComplete != null) onComplete.run(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+ }
+
+ public static void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed){
+
+ mtbColtToDelete.setOperation(CommonModelConsts.OPERATION.DELETE);
+
+ saveCollo(mtbColtToDelete, new ISimpleOperationCallback() {
+ @Override
+ public void onSuccess(MtbColt value) {
+ if(onComplete != null) onComplete.run();
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+
+ }
+
+ public static void distribuisciCollo(MtbColt mtbColtToDistribute, Runnable onComplete, RunnableArgs onFailed) {
+
+ DistribuzioneColloDTO distribuzioneColloDTO = new DistribuzioneColloDTO()
+ .setCriterioDistribuzione(DistribuzioneColloDTO.CriterioDistribuzione.UPDATE)
+ .setDataCollo(mtbColtToDistribute.getDataColloS())
+ .setNumCollo(mtbColtToDistribute.getNumCollo())
+ .setGestione(mtbColtToDistribute.getGestione())
+ .setSerCollo(mtbColtToDistribute.getSerCollo());
+
+ ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
+ colliMagazzinoRESTConsumerService.distribuisciCollo(distribuzioneColloDTO)
+ .enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "DistribuzioneCollo", obj -> onComplete.run(), onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+
+ }
+
+ public static void getBySSCC(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
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "GetBySSCC", mtbColt -> {
+
+ if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0){
+ List codMarts = Stream.of(mtbColt.getMtbColr())
+ .map(MtbColr::getCodMart)
+ .withoutNulls()
+ .distinct()
+ .toList();
+
+ ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
+
+ if(arts != null && arts.size() > 0) {
+ for (MtbColr mtbColr : mtbColt.getMtbColr()) {
+
+ MtbAart foundMtbAart = null;
+
+ List mtbAartStream = Stream.of(arts)
+ .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())).toList();
+
+ if(mtbAartStream != null && mtbAartStream.size() > 0){
+ foundMtbAart = mtbAartStream.get(0);
+ }
+
+ mtbColr.setMtbAart(foundMtbAart);
+ mtbColr.setGestione(mtbColt.getGestione());
+ mtbColr.setSerCollo(mtbColt.getSerCollo());
+ mtbColr.setNumCollo(mtbColt.getNumCollo());
+ mtbColr.setDataCollo(mtbColt.getDataColloS());
+ }
+
+
+ onComplete.run(mtbColt);
+ }
+
+ }, onFailed);
+
+ } else {
+ onComplete.run(mtbColt);
+ }
+
+ }, onFailed);
+
+
+
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+
+ public static void getByTestata(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) {
+ String ssccString = null;
+
+ if(testata.getSerCollo().equalsIgnoreCase(CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE)){
+ ssccString = "U";
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yy");
+ ssccString += sdf.format(testata.getDataColloD());
+
+ ssccString += String.format("%07d", testata.getNumCollo());
+ } else {
+ ssccString = "";
+
+ switch (testata.getGestioneEnum()) {
+ case ACQUISTO:
+ ssccString += "1";
+ break;
+
+ case LAVORAZIONE:
+ ssccString += "2";
+ break;
+
+ case VENDITA:
+ ssccString += "3";
+ break;
+ }
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yy");
+ ssccString += sdf.format(testata.getDataColloD());
+
+ ssccString += String.format("%05d", testata.getNumCollo());
+ ssccString += "0";
+ }
+
+ getBySSCC(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed);
+ }
+
+
+
+
+ public static void changePosizione(MtbColt testata, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs onFailed) {
+
+ testata.setOperation(CommonModelConsts.OPERATION.UPDATE);
+
+ if(posizione == null) testata.setPosizione(null);
+ else testata.setPosizione(posizione.getPosizione());
+
+ ColliMagazzinoRESTConsumer.saveCollo(testata, new ISimpleOperationCallback() {
+ @Override
+ public void onSuccess(MtbColt value) {
+ if(onComplete != null) onComplete.run();
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+
+ }
+
+
+
+ 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() {
+ @Override
+ public void onSuccess(MtbColr value) {
+ if(onComplete != null) onComplete.run();
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ }, MtbColr.class);
+
+ }
+
+ public static void updateRiga(MtbColr mtbColrToUpdate, Runnable onComplete, RunnableArgs onFailed){
+
+ mtbColrToUpdate.setOperation(CommonModelConsts.OPERATION.UPDATE);
+
+ EntityRESTConsumer.processEntity(mtbColrToUpdate, new ISimpleOperationCallback() {
+ @Override
+ public void onSuccess(MtbColr value) {
+ if(onComplete != null) onComplete.run();
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ }, MtbColr.class);
+
+ }
+
+
+
+
+
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumerService.java
new file mode 100644
index 00000000..571a9399
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumerService.java
@@ -0,0 +1,29 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import com.google.gson.JsonObject;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.Query;
+
+public interface ColliMagazzinoRESTConsumerService {
+
+ @GET("getAvailablePosizioni")
+ Call>> getAvailablePosizioni(@Query("codMdep") String codMdep);
+
+ @POST("SM2DistribuzioneRigheCollo")
+ Call> distribuisciCollo(@Body DistribuzioneColloDTO distribuzioneCollo);
+
+ @POST("getColloByBarcode")
+ Call> getColloByBarcode(@Query("codBarreCollo") String sscc, @Query("onlyResiduo") boolean onlyResiduo, @Query("throwExcIfNull") boolean throwExcIfNull);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/DepositoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/DepositoRESTConsumer.java
new file mode 100644
index 00000000..7e69f23a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/DepositoRESTConsumer.java
@@ -0,0 +1,35 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.CommonModelConsts;
+import it.integry.integrywmsnative.core.model.MtbDepo;
+import it.integry.integrywmsnative.core.utility.UtilityLogger;
+import it.integry.integrywmsnative.generated.callback.Runnable;
+
+public class DepositoRESTConsumer {
+
+ public static void getDepoByCodMdep(String codMdep, RunnableArgs onComplete) {
+
+ MtbDepo mtbDepo = new MtbDepo();
+ mtbDepo.setCodMdep(codMdep);
+ mtbDepo.setOperation(CommonModelConsts.OPERATION.SELECT);
+ mtbDepo.setOnlyPkMaster(false);
+
+ EntityRESTConsumer.selectEntity(mtbDepo, new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(List value) {
+ if(value != null && value.size() > 0) {
+ onComplete.run(value.get(0));
+ }
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ UtilityLogger.errorMe(ex);
+ }
+ }, MtbDepo.class);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumer.java
new file mode 100644
index 00000000..dc7ba934
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumer.java
@@ -0,0 +1,114 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.REST.RESTBuilder;
+import it.integry.integrywmsnative.core.REST.model.EsitoType;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.model.EntityBase;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class EntityRESTConsumer {
+
+ public static void processEntity(T entityToSave, final ISimpleOperationCallback callback, Class type){
+
+ EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class);
+ Call> request = service.processEntity(entityToSave);
+ request.enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if(response.isSuccessful()) {
+
+ if(response.body() != null) {
+ if(response.body().getEsito() == EsitoType.OK) {
+ Gson gson = new Gson();
+ T object = gson.fromJson(response.body().getEntity(), type);
+
+ callback.onSuccess(object);
+ } else {
+ Log.e("EntityRESTConsumer", response.body().getErrorMessage());
+ callback.onFailed(new Exception(response.body().getErrorMessage()));
+ }
+ } else {
+ Log.e("EntityRESTConsumer", response.message());
+ callback.onFailed(new Exception(response.message()));
+ }
+ } else {
+ Log.e("EntityRESTConsumer", "Status " + response.code() + ": " + response.message());
+ callback.onFailed(new Exception("Status " + response.code() + ": " + response.message()));
+ }
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ Log.e("EntityRESTConsumer", t.toString());
+ callback.onFailed(new Exception(t));
+ }
+ });
+
+ }
+
+
+
+
+ public static void selectEntity(T entityToSave, final ISimpleOperationCallback> callback, Class type){
+
+ EntityRESTConsumerService service = RESTBuilder.getService(EntityRESTConsumerService.class);
+ Call> request = service.processEntity(entityToSave);
+ request.enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if(response.isSuccessful()) {
+
+ if(response.body() != null) {
+ if(response.body().getEsito() == EsitoType.OK) {
+ Gson gson = new Gson();
+ List jsons = response.body().getEntityList();
+
+ List newList = new ArrayList();
+
+ if(jsons != null) {
+ for (int i = 0; i < jsons.size(); i ++){
+ JsonObject jsonTmp = jsons.get(i);
+
+ newList.add((T) gson.fromJson(jsonTmp, type));
+ }
+ }
+
+
+ callback.onSuccess(newList);
+ } else {
+ Log.e("EntityRESTConsumer", response.body().getErrorMessage());
+ callback.onFailed(new Exception(response.body().getErrorMessage()));
+ }
+ } else {
+ Log.e("EntityRESTConsumer", response.message());
+ callback.onFailed(new Exception(response.message()));
+ }
+ } else {
+ Log.e("EntityRESTConsumer", "Status " + response.code() + ": " + response.message());
+ callback.onFailed(new Exception("Status " + response.code() + ": " + response.message()));
+ }
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ Log.e("EntityRESTConsumer", t.toString());
+ callback.onFailed(new Exception(t));
+ }
+ });
+
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumerService.java
new file mode 100644
index 00000000..d74ed113
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/EntityRESTConsumerService.java
@@ -0,0 +1,17 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+
+import com.google.gson.JsonObject;
+
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.model.EntityBase;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.POST;
+
+public interface EntityRESTConsumerService {
+
+ @POST("processEntity")
+ Call> processEntity(@Body Object entity);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumer.java
new file mode 100644
index 00000000..dc0c96a7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumer.java
@@ -0,0 +1,72 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import android.util.Log;
+
+import it.integry.integrywmsnative.core.REST.RESTBuilder;
+import it.integry.integrywmsnative.core.REST.model.GestSetupDTO;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityLogger;
+import it.integry.integrywmsnative.generated.callback.Runnable;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class GestSetupRESTConsumer extends _BaseRESTConsumer {
+
+ public static void getValue(String gestName, String sectionName, String keySection, RunnableArgs onComplete, RunnableArgs onFailed) {
+ GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class);
+ service.getGestSetupValue(gestName, sectionName, keySection).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "GestSetup", onComplete, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ Log.e("PrintCollo", t.toString());
+ UtilityLogger.errorMe(new Exception(t));
+ if(onFailed != null) onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+ public static void getBooleanValue(String gestName, String sectionName, String keySection, RunnableArgs onComplete, RunnableArgs onFailed) {
+ getValue(gestName, sectionName, keySection, value -> {
+ if(value != null){
+ onComplete.run("S".equalsIgnoreCase(value.value));
+ } else onComplete.run(false);
+ }, ex -> {
+ if(onFailed != null) onFailed.run(ex);
+ });
+ }
+
+ public static void getValue(String gestName, String sectionName, String keySection, String codMdep, RunnableArgs onComplete, RunnableArgs onFailed) {
+ GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class);
+ service.getGestSetupValue(gestName, sectionName, keySection, codMdep).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "GestSetup", onComplete, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ Log.e("PrintCollo", t.toString());
+ UtilityLogger.errorMe(new Exception(t));
+ if(onFailed != null) onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+ public static void getBooleanValue(String gestName, String sectionName, String keySection, String codMdep, RunnableArgs onComplete, RunnableArgs onFailed) {
+ getValue(gestName, sectionName, keySection, codMdep, value -> {
+ if(value != null){
+ onComplete.run("S".equalsIgnoreCase(value.value));
+ } else onComplete.run(false);
+ }, ex -> {
+ if(onFailed != null) onFailed.run(ex);
+ });
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumerService.java
new file mode 100644
index 00000000..3ae911c7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/GestSetupRESTConsumerService.java
@@ -0,0 +1,27 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
+import it.integry.integrywmsnative.core.REST.model.GestSetupDTO;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface GestSetupRESTConsumerService {
+
+ @GET("gestSetup")
+ Call> getGestSetupValue(
+ @Query("gestName") String gestName,
+ @Query("section") String section,
+ @Query("keySection") String keySection);
+
+ @GET("gestSetup")
+ Call> getGestSetupValue(
+ @Query("gestName") String gestName,
+ @Query("section") String section,
+ @Query("keySection") String keySection,
+ @Query("codMdep") String codMdep);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISimpleOperationCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISimpleOperationCallback.java
new file mode 100644
index 00000000..3c61004f
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISimpleOperationCallback.java
@@ -0,0 +1,9 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+public interface ISimpleOperationCallback {
+
+ void onSuccess(T value);
+
+ void onFailed(Exception ex );
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISingleOperationDoubleCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISingleOperationDoubleCallback.java
new file mode 100644
index 00000000..8fc0af74
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISingleOperationDoubleCallback.java
@@ -0,0 +1,9 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+public interface ISingleOperationDoubleCallback {
+
+ void onSuccess(T firstValue, U secondValue);
+
+ void onFailed(Exception ex );
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISingleValueOperationCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISingleValueOperationCallback.java
new file mode 100644
index 00000000..1163f409
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ISingleValueOperationCallback.java
@@ -0,0 +1,7 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+public interface ISingleValueOperationCallback {
+
+ void onResult(T value);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PosizioneRESTonsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PosizioneRESTonsumer.java
new file mode 100644
index 00000000..cc970746
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PosizioneRESTonsumer.java
@@ -0,0 +1,41 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import com.annimon.stream.Stream;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
+import it.integry.integrywmsnative.core.utility.UtilityDB;
+
+public class PosizioneRESTonsumer extends _BaseRESTConsumer {
+
+
+
+ public static void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs> onComplete, RunnableArgs onFailed) {
+
+
+ String sql = "SELECT * FROM mtb_colt WHERE cod_mdep = " + UtilityDB.valueToString(mtbDepoPosizione.getCodMdep()) + " AND posizione = " + UtilityDB.valueToString(mtbDepoPosizione.getPosizione());
+
+
+ Type typeOfObjectsList = new TypeToken>() {}.getType();
+ SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(List value) {
+ if(onComplete != null) onComplete.run(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java
new file mode 100644
index 00000000..8b498f50
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumer.java
@@ -0,0 +1,121 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import android.util.Log;
+
+import java.util.List;
+import java.util.stream.Stream;
+
+import it.integry.integrywmsnative.core.REST.CommonRESTException;
+import it.integry.integrywmsnative.core.REST.RESTBuilder;
+import it.integry.integrywmsnative.core.REST.model.EsitoType;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.utility.UtilityLogger;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+import static br.com.zbra.androidlinq.Linq.stream;
+
+public class PrinterRESTConsumer extends _BaseRESTConsumer {
+
+ public enum Type {
+ PRIMARY,
+ SECONDARY
+ }
+
+
+ public static void getAvailablePrinters(final ISimpleOperationCallback> callback) {
+ PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
+ printerService.getAvailablePrinters().enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "GetAvailablePrinters", callback);
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+
+ }
+ });
+ }
+
+
+ public static void getAvailablePrinters(String codMdep, final ISimpleOperationCallback> callback) {
+
+ PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
+ printerService.getAvailablePrinters(codMdep).enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "GetAvailablePrinters", new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(List value) {
+ callback.onSuccess(value != null ? stream(value).where(x -> x != null).toList() : null);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ callback.onFailed(ex);
+ }
+ });
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ Log.e("GetAvailablePrinters", t.toString());
+ UtilityLogger.errorMe(new Exception(t));
+ callback.onFailed(new Exception(t));
+ }
+ });
+ }
+
+
+ public static void getAvailablePrinters(String codMdep, Type printerType, final ISimpleOperationCallback> callback) {
+
+ PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
+ printerService.getAvailablePrinters(codMdep, printerType.toString()).enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "GetAvailablePrinters", callback);
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ Log.e("GetAvailablePrinters", t.toString());
+ UtilityLogger.errorMe(new Exception(t));
+ callback.onFailed(new Exception(t));
+ }
+ });
+ }
+
+ public static void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs onFailed) {
+
+ PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
+ printerService.printCollo(
+ printerName,
+ testataColloToPrint.getDataColloS(),
+ testataColloToPrint.getGestione(),
+ testataColloToPrint.getSerCollo(),
+ testataColloToPrint.getNumCollo(),
+ quantity,
+ reportName)
+
+ .enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "PrintCollo", data -> {
+ onComplete.run();
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumerService.java
new file mode 100644
index 00000000..63ef3b2d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/PrinterRESTConsumerService.java
@@ -0,0 +1,39 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import retrofit2.Call;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.Query;
+
+public interface PrinterRESTConsumerService {
+
+ @POST("getAvailablePrinters")
+ Call>> getAvailablePrinters();
+
+ @POST("getAvailablePrinters")
+ Call>> getAvailablePrinters(@Query("codMdep") String codMdep);
+
+ @POST("getAvailablePrinters")
+ Call>> getAvailablePrinters(@Query("codMdep") String codMdep, @Query("printerType") String printerType);
+
+
+ @POST("pkgPrintLabel")
+ @FormUrlEncoded
+ Call> printCollo(
+ @Query("printerName") String printerName,
+ @Field("dataCollo") String dataCollo,
+ @Field("gestione") String gestione,
+ @Field("serCollo") String serCollo,
+ @Field("numCollo") int numCollo,
+ @Query("printQuantity") int printQuantity,
+ @Query("reportName") String reportName
+ );
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/SystemRESTConsumer.java
new file mode 100644
index 00000000..94d8e468
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/SystemRESTConsumer.java
@@ -0,0 +1,176 @@
+package it.integry.integrywmsnative.core.REST.consumers;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.CommonConst;
+import it.integry.integrywmsnative.core.REST.RESTBuilder;
+import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
+import it.integry.integrywmsnative.core.REST.model.MailRequestDTO;
+import it.integry.integrywmsnative.core.REST.model.NativeSqlRequestDTO;
+import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.Azienda;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityLogger;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.generated.callback.Runnable;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class SystemRESTConsumer extends _BaseRESTConsumer {
+
+ public static void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback callback) {
+
+ NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO();
+ nativeSqlDTO.nativeSql = nativeSql;
+
+ SystemRESTConsumerService service = RESTBuilder.getService(SystemRESTConsumerService.class);
+ service.processSql(nativeSqlDTO).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "ProcessSql", new ISimpleOperationCallback