commit 4b690023db9e2b4ac5526b6c90ed6fb2ce7fdd8f Author: Giuseppe Scorrano Date: Wed Mar 28 11:46:26 2018 +0200 First commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..39fb081a --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..96cc43ef --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 00000000..e7bedf33 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..40b03484 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..ba7052b8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..7af1a597 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 00000000..7f68460d --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 00000000..bf435e74 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,42 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 25 + buildToolsVersion "27.0.0" + defaultConfig { + applicationId "it.integry.integrywmsnative" + minSdkVersion 21 + targetSdkVersion 25 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('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' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' + + + testCompile 'junit:junit:4.12' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 00000000..579e09fa --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\Users\GiuseppeS\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/it/integry/integrywmsnative/ExampleInstrumentedTest.java b/app/src/androidTest/java/it/integry/integrywmsnative/ExampleInstrumentedTest.java new file mode 100644 index 00000000..7f8abc7d --- /dev/null +++ b/app/src/androidTest/java/it/integry/integrywmsnative/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package it.integry.integrywmsnative; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("it.integry.integrywmsnative", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..cbeb923f --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + \ 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 new file mode 100644 index 00000000..1131dda7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -0,0 +1,168 @@ +package it.integry.integrywmsnative; + +import android.graphics.Color; +import android.graphics.ColorMatrixColorFilter; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; +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.Menu; +import android.view.MenuItem; +import android.view.View; + +import butterknife.BindView; +import butterknife.ButterKnife; +import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment; +import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ITitledFragment; + +public class MainActivity extends AppCompatActivity + implements NavigationView.OnNavigationItemSelectedListener { + + @BindView(R.id.main_search) SearchView mSearchView; + + @BindView(R.id.nav_view) NavigationView mNavigationView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + ButterKnife.bind(this); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + 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(); + + mNavigationView = (NavigationView) findViewById(R.id.nav_view); + mNavigationView.setNavigationItemSelectedListener(this); + + mSearchView.setVisibility(View.GONE); + } + + + @Override + public void onBackPressed() { + DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); + if (drawer.isDrawerOpen(GravityCompat.START)) { + drawer.closeDrawer(GravityCompat.START); + } else { + super.onBackPressed(); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.main, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement +// if (id == R.id.action_search) { +// return true; +// } + + return super.onOptionsItemSelected(item); + } + + @SuppressWarnings("StatementWithEmptyBody") + @Override + public boolean onNavigationItemSelected(MenuItem item) { + // 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) { + + } else if (id == R.id.nav_slideshow) { + + } else if (id == R.id.nav_manage) { + + } else if (id == R.id.nav_share) { + + } else if (id == R.id.nav_send) { + + } + + if (fragment != null) { + FragmentManager fragmentManager = getSupportFragmentManager(); + fragmentManager.beginTransaction() + .replace(R.id.frame_container, fragment).commit(); + + } + + DrawerLayout drawer = (DrawerLayout) 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); + } + + 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); + } else { + mSearchView.setOnQueryTextListener(null); + mSearchView.setVisibility(View.GONE); + } + + + if(fragment instanceof ITitledFragment) { + getSupportActionBar().setTitle(((ITitledFragment) fragment).getTitle(this)); + } else { + getSupportActionBar().setTitle(R.string.app_name); + } + } +} 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 new file mode 100644 index 00000000..13d27c25 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/CommonRESTException.java @@ -0,0 +1,24 @@ +package it.integry.integrywmsnative.core.REST; + +import java.net.SocketException; +import java.net.SocketTimeoutException; + +/** + * Created by GiuseppeS on 22/03/2018. + */ + +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 { + return null; + } + + } + +} 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 new file mode 100644 index 00000000..2de8038b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/HttpInterceptor.java @@ -0,0 +1,41 @@ +package it.integry.integrywmsnative.core.REST; + +import android.util.Base64; + +import java.io.IOException; + +import okhttp3.HttpUrl; +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +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 Request request = chain.request(); + final HttpUrl url = request.url().newBuilder() + .addQueryParameter("profileDb", PROFILE_DB) + .build(); + + String string = "Basic " + Base64.encodeToString((USERNAME + ":" + PASSWORD).getBytes(), Base64.NO_WRAP); + + final Request newRequest = chain.request().newBuilder() + .addHeader("Authorization", string) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "*/*") + .addHeader("username", USERNAME) + .addHeader("password", 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 new file mode 100644 index 00000000..7f4f9b20 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java @@ -0,0 +1,26 @@ +package it.integry.integrywmsnative.core.REST; + +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class RESTBuilder { + + public static T getService(final Class service) { + OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new HttpInterceptor()).build(); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://192.168.2.13:8080/ems-api/") +// .baseUrl("http://www2.studioml.it/ems-api/") + .client(client) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + + return retrofit.create(service); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/model/EsitoType.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/model/EsitoType.java new file mode 100644 index 00000000..394da0ed --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/model/EsitoType.java @@ -0,0 +1,38 @@ +package it.integry.integrywmsnative.core.REST.model; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public enum EsitoType { + + OK(1), + KO(-1); + + @Override + public String toString() { + return value.toString(); + } + + private Integer value; + + public Integer value() { + return value; + } + + public EsitoType fromString(String val) { + return EsitoType.valueOf(val); + } + + public static EsitoType fromIntValue(Integer val) { + if(val==1) + return EsitoType.OK; + else if(val==-1) + return EsitoType.KO; + return null; + } + + EsitoType(Integer v) { + this.value = v; + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/model/ServiceRESTResponse.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/model/ServiceRESTResponse.java new file mode 100644 index 00000000..694e09dc --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/model/ServiceRESTResponse.java @@ -0,0 +1,49 @@ +package it.integry.integrywmsnative.core.REST.model; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class ServiceRESTResponse { + + private int esito; + private String execDate; + private String profileDB; + private String errorMessage; + + private T dto; + private T entity; + + public EsitoType getEsito() { + return EsitoType.fromIntValue(esito); + } + + public Date getExecDate() { + try { + return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(execDate); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + public String getProfileDB() { + return profileDB; + } + + public String getErrorMessage() { + return errorMessage; + } + + public T getDto() { + return dto; + } + + public T getEntity() { + return entity; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java new file mode 100644 index 00000000..447fd58e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java @@ -0,0 +1,49 @@ +package it.integry.integrywmsnative.core.coollection; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; +import it.integry.integrywmsnative.core.coollection.matcher.custom.Contains; +import it.integry.integrywmsnative.core.coollection.matcher.custom.Equals; +import it.integry.integrywmsnative.core.coollection.matcher.custom.EqualsIgnoreCase; +import it.integry.integrywmsnative.core.coollection.matcher.custom.GreaterThan; +import it.integry.integrywmsnative.core.coollection.matcher.custom.IsNull; +import it.integry.integrywmsnative.core.coollection.matcher.custom.LessThan; +import it.integry.integrywmsnative.core.coollection.matcher.custom.Not; +import it.integry.integrywmsnative.core.coollection.query.Query; + +import java.util.Collection; + +public class Coollection { + + public static Query from(Collection collection) { + return new Query(collection); + } + + public static Matcher eq(Object value) { + return new Equals(value); + } + + public static Matcher contains(String value) { + return new Contains(value); + } + + public static Matcher eqIgnoreCase(String value) { + return new EqualsIgnoreCase(value); + } + + public static Matcher not(Matcher matcher) { + return new Not(matcher); + } + + public static Matcher greaterThan(Number value) { + return new GreaterThan(value); + } + + public static Matcher lessThan(Number value) { + return new LessThan(value); + } + + public static Matcher isNull() { + return new IsNull(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java new file mode 100644 index 00000000..c2b41db2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.core.coollection.matcher; + +public interface Matcher { + + boolean match(Object value); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java new file mode 100644 index 00000000..e0d80ac7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.core.coollection.matcher.custom; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; + +public class Contains implements Matcher { + + private final String matcherValue; + + public Contains(String matcherValue) { + this.matcherValue = matcherValue; + } + + @Override + public boolean match(Object value) { + return String.valueOf(value).contains(matcherValue); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java new file mode 100644 index 00000000..ca2cc6c1 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.core.coollection.matcher.custom; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; + +public class Equals implements Matcher { + + private final Object value; + + public Equals(Object value) { + this.value = value; + } + + @Override + public boolean match(Object anotherValue) { + return value.equals(anotherValue); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java new file mode 100644 index 00000000..5c138c93 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.core.coollection.matcher.custom; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; + +public class EqualsIgnoreCase implements Matcher { + + private final String value; + + public EqualsIgnoreCase(String value) { + this.value = value; + } + + @Override + public boolean match(Object anotherValue) { + return (value).equalsIgnoreCase((String) anotherValue); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java new file mode 100644 index 00000000..1414a9e0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java @@ -0,0 +1,21 @@ +package it.integry.integrywmsnative.core.coollection.matcher.custom; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; + +public class GreaterThan implements Matcher { + + private final Number value; + + public GreaterThan(Number value) { + this.value = value; + } + + @Override + public boolean match(Object matchValue) { + if (matchValue == null) { + return false; + } + return ((Number) matchValue).doubleValue() > value.doubleValue(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java new file mode 100644 index 00000000..f14151e5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java @@ -0,0 +1,12 @@ +package it.integry.integrywmsnative.core.coollection.matcher.custom; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; + +public class IsNull implements Matcher { + + @Override + public boolean match(Object value) { + return value == null; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java new file mode 100644 index 00000000..c9c3c99e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java @@ -0,0 +1,21 @@ +package it.integry.integrywmsnative.core.coollection.matcher.custom; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; + +public class LessThan implements Matcher { + + private final Number value; + + public LessThan(Number value) { + this.value = value; + } + + @Override + public boolean match(Object matchValue) { + if (matchValue == null) { + return false; + } + return ((Number) matchValue).doubleValue() < value.doubleValue(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java new file mode 100644 index 00000000..dd76555f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.core.coollection.matcher.custom; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; + +public class Not implements Matcher { + + private final Matcher matcher; + + public Not(Matcher matcher) { + this.matcher = matcher; + } + + @Override + public boolean match(Object value) { + return !matcher.match(value); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java new file mode 100644 index 00000000..e6220bea --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java @@ -0,0 +1,90 @@ +package it.integry.integrywmsnative.core.coollection.query; + + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; +import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; +import it.integry.integrywmsnative.core.coollection.query.criteria.CriteriaList; +import it.integry.integrywmsnative.core.coollection.query.order.Order; +import it.integry.integrywmsnative.core.coollection.query.order.OrderCriteria; +import it.integry.integrywmsnative.core.coollection.query.specification.custom.AndSpecification; +import it.integry.integrywmsnative.core.coollection.query.specification.custom.OrSpecification; + +public class Query { + + private final Collection collection; + private CriteriaList criterias; + private OrderCriteria orderCriteria; + + public Query(Collection collection) { + this.collection = collection; + criterias = new CriteriaList(); + } + + public Query where(String method, Matcher matcher) { + Criteria criteria = new Criteria(method, matcher); + criterias.add(criteria); + return this; + } + + public Query and(String method, Matcher matcher) { + Criteria criteria = new Criteria(method, matcher); + criteria.setSpecification(new AndSpecification()); + criterias.add(criteria); + return this; + } + + public Query or(String method, Matcher matcher) { + Criteria criteria = new Criteria(method, matcher); + criteria.setSpecification(new OrSpecification()); + criterias.add(criteria); + return this; + } + + public Query orderBy(String method, Order order) { + orderCriteria = new OrderCriteria(method, order); + return this; + } + + public Query orderBy(String method) { + return orderBy(method, Order.ASC); + } + + public List all() { + List all = new ArrayList(); + for (T item : collection) { + if (criterias.match(item)) { + all.add(item); + } + } + if (orderCriteria != null) { + all = orderCriteria.sort(all); + } + return all; + } + + public T first() { + List all = cloneCollection(collection); + if (orderCriteria != null) { + all = orderCriteria.sort(all); + } + for (T item : all) { + if (criterias.match(item)) { + return item; + } + } + return null; + } + + private List cloneCollection(Collection collection) { + List list = new ArrayList(); + for (T item : collection) { + list.add(item); + } + return list; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java new file mode 100644 index 00000000..027d232a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java @@ -0,0 +1,34 @@ +package it.integry.integrywmsnative.core.coollection.query.criteria; + +import it.integry.integrywmsnative.core.coollection.matcher.Matcher; +import it.integry.integrywmsnative.core.coollection.query.specification.Specification; +import it.integry.integrywmsnative.core.coollection.reflection.Phanton; + +public class Criteria { + + private final String method; + private final Matcher matcher; + private Specification specification; + + public Criteria(String method, Matcher matcher) { + this.method = method; + this.matcher = matcher; + } + + public void setSpecification(Specification specification) { + this.specification = specification; + } + + public Specification specification() { + return specification; + } + + public boolean match(T item) { + try { + Object value = Phanton.from(item).call(method); + return matcher.match(value); + } catch (Exception err) { + throw new RuntimeException(err); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java new file mode 100644 index 00000000..e2f2f433 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java @@ -0,0 +1,34 @@ +package it.integry.integrywmsnative.core.coollection.query.criteria; + +import java.util.ArrayList; +import java.util.List; + +public class CriteriaList { + + private List> criterias; + + public CriteriaList() { + criterias = new ArrayList>(); + } + + public void add(Criteria criteria) { + criterias.add(criteria); + } + + public boolean match(T item) { + if (criterias.size() == 0) { + return true; + } + if (criterias.size() == 1) { + return criterias.get(0).match(item); + } + boolean matched = true; + for (int i = criterias.size() - 1; i > 0; i--) { + Criteria one = criterias.get(i); + Criteria other = criterias.get(i - 1); + matched = matched && one.specification().match(item, one, other); + } + return matched; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java new file mode 100644 index 00000000..4ed8e86c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.core.coollection.query.order; + +public enum Order { + ASC, DESC +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java new file mode 100644 index 00000000..a4bc0e64 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java @@ -0,0 +1,30 @@ +package it.integry.integrywmsnative.core.coollection.query.order; + +import it.integry.integrywmsnative.core.coollection.reflection.Phanton; + +import java.util.Comparator; + +public class OrderComparator implements Comparator { + + private final String method; + + public OrderComparator(String method) { + this.method = method; + } + + @Override + @SuppressWarnings("unchecked") + public int compare(T one, T other) { + Object oneValue = Phanton.from(one).call(method); + Object otherValue = Phanton.from(other).call(method); + if (oneValue == null || otherValue == null) { + return 0; + } + if (oneValue instanceof Comparable) { + return ((Comparable) oneValue).compareTo(otherValue); + } else { + return 0; + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java new file mode 100644 index 00000000..a049dc1e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java @@ -0,0 +1,24 @@ +package it.integry.integrywmsnative.core.coollection.query.order; + +import java.util.Collections; +import java.util.List; + +public class OrderCriteria { + + private final String method; + private final Order order; + + public OrderCriteria(String method, Order order) { + this.method = method; + this.order = order; + } + + public List sort(List list) { + Collections.sort(list, new OrderComparator(method)); + if (order == Order.DESC) { + Collections.reverse(list); + } + return list; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java new file mode 100644 index 00000000..719ea931 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java @@ -0,0 +1,9 @@ +package it.integry.integrywmsnative.core.coollection.query.specification; + +import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; + +public interface Specification { + + boolean match(T item, Criteria one, Criteria other); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java new file mode 100644 index 00000000..6119df2d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java @@ -0,0 +1,13 @@ +package it.integry.integrywmsnative.core.coollection.query.specification.custom; + +import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; +import it.integry.integrywmsnative.core.coollection.query.specification.Specification; + +public class AndSpecification implements Specification { + + @Override + public boolean match(T item, Criteria one, Criteria other) { + return one.match(item) && other.match(item); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java new file mode 100644 index 00000000..2b83db22 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.core.coollection.query.specification.custom; + +import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; +import it.integry.integrywmsnative.core.coollection.query.specification.Specification; + +public class OrSpecification implements Specification { + + @Override + public boolean match(T item, Criteria one, Criteria other) { + return one.match(item) || other.match(item); + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java new file mode 100644 index 00000000..0c8cf9c9 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java @@ -0,0 +1,37 @@ +package it.integry.integrywmsnative.core.coollection.reflection; + +import java.lang.reflect.Field; + +public class Phanton { + + private final T target; + private Class clazz; + + private Phanton(T target) { + this.target = target; + clazz = target.getClass(); + } + + public static Phanton from(T target) { + return new Phanton(target); + } + + public Object call(String name) { + return invoke(name); + } + + private Object invoke(String name) { + for (final Field field : clazz.getDeclaredFields()) { + try { + if (name.equals(field.getName())) { + field.setAccessible(Boolean.TRUE); + return field.get(target); + } + } catch (final IllegalAccessException e) { + throw new RuntimeException(e); + } + } + throw new RuntimeException("No such property with name " + name); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/AppComponent.java b/app/src/main/java/it/integry/integrywmsnative/core/di/AppComponent.java new file mode 100644 index 00000000..a6e5c330 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/AppComponent.java @@ -0,0 +1,8 @@ +package it.integry.integrywmsnative.core.di; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class AppComponent { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ICheckBoxCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ICheckBoxCallback.java new file mode 100644 index 00000000..249c282a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/ICheckBoxCallback.java @@ -0,0 +1,11 @@ +package it.integry.integrywmsnative.core.interfaces; + +/** + * Created by GiuseppeS on 07/03/2018. + */ + +public interface ICheckBoxCallback { + + void onToggle(boolean newValue); + +} 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 new file mode 100644 index 00000000..878853bc --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java @@ -0,0 +1,282 @@ +package it.integry.integrywmsnative.core.model; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class MtbAart implements Parcelable{ + + public String codMart; + public String descrizione; + public String untMis; + public String barCode; + public BigDecimal pesoKg; + public BigDecimal qtaCnf; + public String codAliq; + public String codScoArt; + public String codTcolUi; + public String codTcolUl; + public String articoloComposto; + public String esposizioneComp; + public String descrizioneEstesa; + public String codUltForn; + public String dataUltCar; + public BigDecimal valUltCar; + public String codUltClie; + public String dataUltScar; + public BigDecimal valUltScar; + public String tipoCodice; + public String note; + public String posizione; + public BigDecimal colliPedana; + public String untMis2; + public BigDecimal rapConv2; + public String flagInclListino; + public String untMis3; + public BigDecimal rapConv3; + public String codMartStat; + public String codMcon; + public String codMgrp; + public String codMsfa; + public String codMsgr; + public String codMstp; + public String codMtip; + public String descrizioneStat; + public String flagStato; + public BigDecimal cambioDiviCar; + public BigDecimal cambioDiviScar; + public Integer ggScadPartita; + public BigDecimal volumeMc; + public String flagEsponiPrz; + public String dataUltVar; + public BigDecimal percSfrido; + public String codBarreImb; + public String flagCalcPrz; + public String esposizioneCompAcq; + public String flagCalcPrzAcq; + public String diacod; + public String plu; + public String partIvaProd; + public String ragSocProd; + public String flagRapConvVariabile; + public String flagMovArtMag; + public String flagTracciabilita; + public BigDecimal taraKg; + public BigDecimal colliStrato; + public String flagQtaCnfFissa; + public String flagColliPedanaFisso; + public String codCconCosti; + public String codCconRicavi; + public String codDgrpArt; + public String codDiviCar; + public String codDiviScar; + public String codEcrCat; + public String codEcrMcat; + public String codEcrRep; + public String codEcrStipo; + public String codEcrTipo; + public String codGrpBolla; + public String ingredienti; + public String idArtEqui; + public String descrCassa; + public String codNcIntracee; + public String marchio; + public Integer sezione; + + + public MtbAart(){} + + 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(); + } + + @Override + public int describeContents() { + return 0; + } + + @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); + } + } + + @SuppressWarnings("unused") + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public MtbAart createFromParcel(Parcel in) { + return new MtbAart(in); + } + + @Override + public MtbAart[] newArray(int size) { + return new MtbAart[size]; + } + }; + +} 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 new file mode 100644 index 00000000..14a131fd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -0,0 +1,45 @@ +package it.integry.integrywmsnative.core.model; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class MtbColt { + private String gestione; + private String dataCollo; + private String serCollo; + private Integer numCollo; + private String rifOrd; + private String codAnag; + private String codVdes; + private String codMdep; + private String codVlis; + private String codDtip; + private String codTcol; + private String serDoc; + private String filtroOrdini; + private String preparatoDa; + private String annotazioni; + private String posizione; + private String codDtipProvv; + private String serDocProvv; + private String codJfas; + private String dataOrd; + private String dataDoc; + private String oraInizPrep; + private String oraFinePrep; + private String dataDocProvv; + private String dataVers; + private Integer segno; + private Integer numOrd; + private Integer numDoc; + private Integer numDocProvv; + private BigDecimal pesoKg; + private BigDecimal lunghezzaCm; + private BigDecimal larghezzaCm; + private BigDecimal altezzaCm; + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java new file mode 100644 index 00000000..0a315bb1 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java @@ -0,0 +1,69 @@ +package it.integry.integrywmsnative.core.utility; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by GiuseppeS on 07/03/2018. + */ + +public class UtilityDate { + + public static class COMMONS_DATE_FORMATS { + public static final String DMY_SLASH = "dd/MM/yyyy"; + public static final String YMD_SLASH = "yyyy/MM/dd"; + public static final String DMY_TIME_SLASH = DMY_SLASH + " hh:mm"; + public static final String YMD_TIME_SLASH = YMD_SLASH + " hh:mm"; + + + public static final String DMY_HUMAN = "dd MMM yyyy"; + } + + public static Date recognizeDate(String dateString) throws Exception{ + + if (dateString == null) { + return null; + } + + //SE SONO PIU' DI 10 caratteri allora c'รจ anche l'ora + + SimpleDateFormat format = null; + char dateSeparator; + + String onlyDateSubstring = dateString.substring(0, 10); + if(onlyDateSubstring.contains("/")) dateSeparator = '/'; + else if(onlyDateSubstring.contains("-")) dateSeparator = '-'; + else if(onlyDateSubstring.contains(".")) dateSeparator = '.'; + else throw new Exception("Data non riconosciuta (" + dateString + ")"); + + String dateFormatString = (dateString.charAt(2) == dateSeparator) + ? "dd" + dateSeparator + "MM" + dateSeparator + "yyyy" + : "yyyy" + dateSeparator + "MM" + dateSeparator + "dd"; + + + if(dateString.length() > 10){ + + char timeSeparator; + + String onlyTimeSubstring = dateString.substring(10, 14); + if(onlyTimeSubstring.contains("-")) timeSeparator = '-'; + else if(onlyTimeSubstring.contains(":")) timeSeparator = ':'; + else throw new Exception("Time non riconosciuto (" + dateString + ")"); + + String timeFormatString = "HH" + timeSeparator + "mm" + timeSeparator + "ss"; + + format = new SimpleDateFormat(dateFormatString + " " + timeFormatString); + + + } else { + format = new SimpleDateFormat(dateFormatString); + } + + return format.parse(dateString); + } + + + public static String formatDate(Date dateToFormat, String format) { + return new SimpleDateFormat(format).format(dateToFormat); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFAB.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFAB.java new file mode 100644 index 00000000..c3388622 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFAB.java @@ -0,0 +1,25 @@ +package it.integry.integrywmsnative.core.utility; + +import android.content.Context; +import android.support.design.widget.FloatingActionButton; +import android.view.animation.AccelerateInterpolator; +import android.view.animation.AnimationUtils; +import android.view.animation.DecelerateInterpolator; + +import it.integry.integrywmsnative.R; + +/** + * Created by GiuseppeS on 07/03/2018. + */ + +public class UtilityFAB { + + public static void show(Context context, FloatingActionButton fab){ + fab.startAnimation(AnimationUtils.loadAnimation(context, R.anim.scale_up)); + } + + public static void hide(Context context, FloatingActionButton fab){ + fab.startAnimation(AnimationUtils.loadAnimation(context, R.anim.scale_down)); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java new file mode 100644 index 00000000..3711788d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java @@ -0,0 +1,13 @@ +package it.integry.integrywmsnative.core.utility; + +/** + * Created by GiuseppeS on 07/03/2018. + */ + +public class UtilityString { + + public static boolean isNullOrEmpty(String stringToCheck){ + return stringToCheck == null || stringToCheck.equalsIgnoreCase(""); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java new file mode 100644 index 00000000..719780cb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java @@ -0,0 +1,291 @@ +package it.integry.integrywmsnative.gest.accettazione; + + +import android.app.ProgressDialog; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.Fragment; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.SearchView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import java.net.SocketException; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.REST.CommonRESTException; +import it.integry.integrywmsnative.core.coollection.Coollection; +import it.integry.integrywmsnative.core.interfaces.ICheckBoxCallback; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.accettazione.core.AccettazioneHelper; +import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapter; +import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadOrdiniCallback; +import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback; +import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity; +import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; + +public class MainAccettazioneFragment extends Fragment implements ICheckBoxCallback, SearchView.OnQueryTextListener, ITitledFragment { + + + @BindView(R.id.accettazione_main_fab) FloatingActionButton mFab; + + @BindView(R.id.accettazione_main_list) RecyclerView mRecyclerView; + + private MainListAccettazioneAdapter mAdapter; + private RecyclerView.LayoutManager mLayoutManager; + + + private AccettazioneHelper helper; + private List groupedOrdiniInevasi; + + + public MainAccettazioneFragment() { + // Required empty public constructor + } + + public static MainAccettazioneFragment newInstance() { + MainAccettazioneFragment fragment = new MainAccettazioneFragment(); + Bundle args = new Bundle(); + fragment.setArguments(args); + return fragment; + } + + @Override + public String getTitle(Context context){ + return context.getText(R.string.accettazione_title_fragment).toString(); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { +// mParam1 = getArguments().getString(ARG_PARAM1); +// mParam2 = getArguments().getString(ARG_PARAM2); + } + + init(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + + View layout = inflater.inflate(R.layout.fragment_main_accettazione, container, false); + + ButterKnife.bind(this, layout); + + mRecyclerView.setHasFixedSize(true); + + mLayoutManager = new LinearLayoutManager(getActivity()); + mRecyclerView.setLayoutManager(mLayoutManager); + + mFab.hide(); + + return layout; + } + + + + + private void init(){ + final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), + getText(R.string.loading) + " ...", true); + + helper = new AccettazioneHelper(getActivity()); + + helper.loadOrdini(new ILoadOrdiniCallback() { + @Override + public void onLoadSuccess(List ordini) { + Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show(); + groupOrdini(ordini); + progress.dismiss(); + } + + @Override + public void onLoadFail(Exception ex) { + progress.dismiss(); + + String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); + if(errorMessage == null) errorMessage = ex.getMessage(); + DialogSimpleMessageHelper.makeErrorDialog(getActivity(), errorMessage, null).show(); + } + }); + + + } + + + private void groupOrdini(List ordini){ + + String prevCodAnag = ""; + + for(OrdineAccettazioneInevasoDTO ordine : ordini){ + if(UtilityString.isNullOrEmpty(ordine.codJcom) || ordine.codJcom.equalsIgnoreCase("MAG")){ + ordine.codJcom = "MAG"; + ordine.descrizioneCom = "MAGAZZINO"; + } + } + + groupedOrdiniInevasi = new ArrayList<>(); + + //Splitto gli ordini per codAnagForn + for(int i = 0; i < ordini.size(); i++){ + if(prevCodAnag.equalsIgnoreCase(ordini.get(i).codAnagOrd)) continue; + else prevCodAnag = ordini.get(i).codAnagOrd; + + OrdineAccettazioneGroupedInevasoDTO groupedOrdine = new OrdineAccettazioneGroupedInevasoDTO(); + + groupedOrdine.codAnagForn = ordini.get(i).codAnagOrd; + groupedOrdine.nomeFornitore = ordini.get(i).ragSocOrd; + groupedOrdine.ordini = new ArrayList<>(); + + List filteredByCodAnagOrders = + Coollection + .from(ordini) + .where("codAnagOrd", Coollection.eq(ordini.get(i).codAnagOrd)).all(); + + + int prevNumOrd = -1; + String prevDataOrd = ""; + + + //Splitto gli ordini di ogni fornitore per data e numero + for(int j = 0; j < filteredByCodAnagOrders.size(); j++) { + if( prevNumOrd == filteredByCodAnagOrders.get(j).numero && + prevDataOrd.equalsIgnoreCase(filteredByCodAnagOrders.get(j).data)) continue; + + else { + prevNumOrd = filteredByCodAnagOrders.get(j).numero; + prevDataOrd = filteredByCodAnagOrders.get(j).data; + } + + OrdineAccettazioneGroupedInevasoDTO.Ordine rigaOrdine = new OrdineAccettazioneGroupedInevasoDTO.Ordine(); + + rigaOrdine.data = filteredByCodAnagOrders.get(j).data; + rigaOrdine.numero = filteredByCodAnagOrders.get(j).numero; + rigaOrdine.codAnagOrd = filteredByCodAnagOrders.get(j).codAnagOrd; + rigaOrdine.ragSocOrd = filteredByCodAnagOrders.get(j).ragSocOrd; + rigaOrdine.pesoTotale = filteredByCodAnagOrders.get(j).pesoTotale; + rigaOrdine.barcode = filteredByCodAnagOrders.get(j).barcode; + rigaOrdine.termCons = filteredByCodAnagOrders.get(j).termCons; + rigaOrdine.dataCons = filteredByCodAnagOrders.get(j).dataCons; + rigaOrdine.rifOrd = filteredByCodAnagOrders.get(j).rifOrd; + rigaOrdine.clienti = new ArrayList<>(); + + + + List filteredByCodAnagAndDateAndNumberOrders = + Coollection + .from(ordini) + .where("codAnagOrd", Coollection.eq(filteredByCodAnagOrders.get(j).codAnagOrd)) + .and("numero", Coollection.eq(filteredByCodAnagOrders.get(j).numero)) + .and("data", Coollection.eq(filteredByCodAnagOrders.get(j).data)).all(); + + + String prevCodJcom = ""; + + //Splitto gli ordini per codJcom + for(int k = 0; k < filteredByCodAnagAndDateAndNumberOrders.size(); k++) { + if(prevCodJcom.equalsIgnoreCase(filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom)) continue; + else prevCodJcom = filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom; + + OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente(); + + cliente.codJcom = filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom; + cliente.ragSocCom = filteredByCodAnagAndDateAndNumberOrders.get(k).ragSocCom; + cliente.descrCom = filteredByCodAnagAndDateAndNumberOrders.get(k).descrizioneCom; + cliente.dataCons = filteredByCodAnagAndDateAndNumberOrders.get(k).dataCons; + cliente.numCnf = filteredByCodAnagAndDateAndNumberOrders.get(k).numCnf; + + rigaOrdine.clienti.add(cliente); + } + + + groupedOrdine.ordini.add(rigaOrdine); + } + + groupedOrdiniInevasi.add(groupedOrdine); + } + + + mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, this); + mRecyclerView.setAdapter(mAdapter); + } + + @OnClick(R.id.accettazione_main_fab) + public void onClick(View view) { + + List selectedOrders = helper.getSelectedOrders(groupedOrdiniInevasi); + List barcodes = new ArrayList<>(); + + for(OrdineAccettazioneGroupedInevasoDTO ordine : selectedOrders){ + for(OrdineAccettazioneGroupedInevasoDTO.Ordine righeOrd : ordine.ordini){ + barcodes.add(righeOrd.barcode); + } + } + + final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), + getText(R.string.loading) + " ...", true); + + helper.retrievePiclingList(barcodes, new ILoadPickingListCallback() { + @Override + public void onLoadSuccess(List ordini) { + progress.dismiss(); + + Intent myIntent = new Intent(getActivity(), AccettazioneOrdineInevasoActivity.class); + myIntent.putExtra("key", (ArrayList) ordini); //Optional parameters + getActivity().startActivity(myIntent); + + } + + @Override + public void onLoadFail(Exception ex) { +// Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show(); + progress.dismiss(); + + String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); + if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); + DialogSimpleMessageHelper.makeErrorDialog(getActivity(), errorMessage, null).show(); + } + }); + + + } + + @Override + public void onToggle(boolean newValue) { + if(helper.getSelectedOrders(groupedOrdiniInevasi).size() > 0) mFab.show(); + else mFab.hide(); + } + + + + + + @Override + public boolean onQueryTextSubmit(String query) { + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + final List filtermodelist = helper.getFilteredOrdersByFornitore(groupedOrdiniInevasi, newText); + mAdapter.setFilter(filtermodelist); + return true; + + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java new file mode 100644 index 00000000..d0022178 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java @@ -0,0 +1,161 @@ +package it.integry.integrywmsnative.gest.accettazione.core; + +import android.app.ProgressDialog; +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +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.gest.accettazione.core.interfaces.ILoadOrdiniCallback; +import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumerService; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class AccettazioneHelper { + + private Context mContext; + + public AccettazioneHelper(Context context){ + mContext = context; + } + + public void loadOrdini(final ILoadOrdiniCallback callback){ + + + OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + service.listOrdiniInevasi().enqueue(new Callback>>() { + @Override + public void onResponse(Call>> call, Response>> response) { + + if(response.isSuccessful()) { + + if(response.body() != null) { + if(response.body().getEsito() == EsitoType.OK) { + callback.onLoadSuccess(response.body().getDto()); + } else { + Log.e("Accettazione", response.body().getErrorMessage()); + callback.onLoadFail(new Exception(response.message())); + } + } else { + Log.e("Accettazione", response.message()); + callback.onLoadFail(new Exception(response.message())); + } + } else { + Log.e("Accettazione", "Status " + response.code() + ": " + response.message()); + callback.onLoadFail(new Exception("Status " + response.code() + ": " + response.message())); + } + } + + @Override + public void onFailure(Call>> call, Throwable t) { + Log.e("Accettazione", t.toString()); + callback.onLoadFail(new Exception(t)); + } + }); + } + + public void retrievePiclingList(List barcodeOrdini, final ILoadPickingListCallback callback){ + + String joinedBarcodes = TextUtils.join(",", barcodeOrdini); + + OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + + service.pickingListAccettazione(joinedBarcodes).enqueue(new Callback>>() { + @Override + public void onResponse(Call>> call, Response>> response) { + if(response.isSuccessful()) { + + if(response.body() != null) { + if(response.body().getEsito() == EsitoType.OK) { + List dto = response.body().getDto(); + + for (OrdineAccettazioneDTO ordine : dto) { + for(OrdineAccettazioneDTO.Riga riga : ordine.ordini){ + riga.numOrd = ordine.numero; + riga.dataOrd = ordine.data; + riga.gestioneOrd = ordine.gestione; + riga.codAlis = ordine.codAlis; + } + } + + callback.onLoadSuccess(dto); + } else { + Log.e("Accettazione", response.body().getErrorMessage()); + callback.onLoadFail(new Exception(response.message())); + } + } else { + Log.e("Accettazione", response.message()); + callback.onLoadFail(new Exception(response.message())); + } + } else { + Log.e("Accettazione", "Status " + response.code() + ": " + response.message()); + callback.onLoadFail(new Exception("Status " + response.code() + ": " + response.message())); + } + } + + @Override + public void onFailure(Call>> call, Throwable t) { + Log.e("Accettazione", t.getCause().toString()); + callback.onLoadFail(new Exception(t)); + } + }); + + } + + + public List getSelectedOrders(List groupedOrdiniInevasi){ + List selectedOrdini = new ArrayList<>(); + + for(int i = 0; i < groupedOrdiniInevasi.size(); i++){ + List selectedOrdiniGroup = new ArrayList<>(); + + for(int j = 0; j < groupedOrdiniInevasi.get(i).ordini.size(); j++){ + if(groupedOrdiniInevasi.get(i).ordini.get(j).checkBox) { + selectedOrdiniGroup.add(groupedOrdiniInevasi.get(i).ordini.get(j)); + } + } + + if(selectedOrdiniGroup.size() > 0) { + try { + OrdineAccettazioneGroupedInevasoDTO cloneOrdine = groupedOrdiniInevasi.get(i).clone(); + cloneOrdine.ordini = selectedOrdiniGroup; + selectedOrdini.add(cloneOrdine); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + } + } + + return selectedOrdini; + } + + public List getFilteredOrdersByFornitore(List groupedOrdiniInevasi, String textFilter){ + List selectedOrdini = new ArrayList<>(); + + for(int i = 0; i < groupedOrdiniInevasi.size(); i++){ + + if(groupedOrdiniInevasi.get(i).nomeFornitore.toLowerCase().contains(textFilter.toLowerCase())){ + selectedOrdini.add(groupedOrdiniInevasi.get(i)); + } + } + + return selectedOrdini; + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java new file mode 100644 index 00000000..b49ec054 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java @@ -0,0 +1,164 @@ +package it.integry.integrywmsnative.gest.accettazione.core; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.LinearLayout; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.interfaces.ICheckBoxCallback; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class MainListAccettazioneAdapter extends RecyclerView.Adapter { + + private Context mContext; + private List mDataset; + private ICheckBoxCallback mCheckBoxCallback; + + public static class ViewHolder extends RecyclerView.ViewHolder { + // each data item is just a string in this case + private TextView mTextViewGroupHeader; + private LinearLayout mLinearLayoutGroupItemContainer; + public ViewHolder(View v) { + super(v); + } + } + + // Provide a suitable constructor (depends on the kind of dataset) + public MainListAccettazioneAdapter(Context context, List myDataset, ICheckBoxCallback checkBoxCallback) { + mContext = context; + mDataset = myDataset; + mCheckBoxCallback = checkBoxCallback; + } + + // Create new views (invoked by the layout manager) + @Override + public MainListAccettazioneAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, + int viewType) { + // create a new view + View v = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.accettazione_main_list_model, parent, false); + + v.setHasTransientState(true); + + ViewHolder vh = new ViewHolder(v); + + TextView groupHeader = (TextView) v.findViewById(R.id.accettazione_main_list_group_header); + vh.mTextViewGroupHeader = groupHeader; + + LinearLayout groupItemContainer = (LinearLayout) v.findViewById(R.id.accettazione_main_list_group_item_container); + vh.mLinearLayoutGroupItemContainer = groupItemContainer; + + return vh; + } + + // Replace the contents of a view (invoked by the layout manager) + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + // - get element from your dataset at this position + // - replace the contents of the view with that element + + final List subGroup = mDataset.get(position).ordini; + + holder.mTextViewGroupHeader.setText(mDataset.get(position).nomeFornitore); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + boolean newValue = true; + + for(int i = 0; i < subGroup.size(); i++){ + if(subGroup.get(i).checkBox) newValue = false; + } + + for(int i = 0; i < subGroup.size(); i++){ + subGroup.get(i).setCheckbox(newValue); + } + + mCheckBoxCallback.onToggle(newValue); + } + }); + + + for(int i = 0; i < subGroup.size(); i++){ + final OrdineAccettazioneGroupedInevasoDTO.Ordine ordine = subGroup.get(i); + View groupModelView = LayoutInflater.from(mContext) + .inflate(R.layout.accettazione_main_list_group_model, holder.mLinearLayoutGroupItemContainer, false); + + if(i % 2 == 1){ + groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG)); + } + + final CheckBox checkBox = (CheckBox) groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_checkBox); + checkBox.setChecked(ordine.checkBox); + + ordine.checkBoxCallback.add(new ICheckBoxCallback() { + @Override + public void onToggle(boolean newValue) { + checkBox.setChecked(newValue); + } + }); + + groupModelView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + checkBox.toggle(); + ordine.checkBox = checkBox.isChecked(); + mCheckBoxCallback.onToggle(checkBox.isChecked()); + } + }); + + TextView testataOrdTextView = (TextView) groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_testata_ord); + String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.numero), UtilityDate.formatDate(ordine.getData(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + testataOrdTextView.setText(Html.fromHtml(testataOrdString)); + + LinearLayout clientLinearLayout = (LinearLayout) groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_clienti_ord) ; + List subGroupClienti = ordine.clienti; + + for(int k = 0; k < subGroupClienti.size(); k++){ + View groupClienteModelView = LayoutInflater.from(mContext) + .inflate(R.layout.accettazione_main_list_group_clienti, clientLinearLayout, false); + + TextView clienteComm = (TextView) groupClienteModelView.findViewById(R.id.accettazione_main_list_group_clienti_comm); + String clienteText; + clienteText = subGroupClienti.get(k).codJcom + " - " + subGroupClienti.get(k).descrCom; + clienteComm.setText(clienteText); + + TextView dataCons = (TextView) groupClienteModelView.findViewById(R.id.accettazione_main_list_group_clienti_datacons); + dataCons.setText(UtilityDate.formatDate(subGroupClienti.get(k).getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH)); + + + clientLinearLayout.addView(groupClienteModelView); + } + + holder.mLinearLayoutGroupItemContainer.addView(groupModelView); + } + + } + + // Return the size of your dataset (invoked by the layout manager) + @Override + public int getItemCount() { + return mDataset.size(); + } + + + public void setFilter(List newDataset) { + mDataset = new ArrayList<>(); + mDataset.addAll(newDataset); + notifyDataSetChanged(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ILoadOrdiniCallback.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ILoadOrdiniCallback.java new file mode 100644 index 00000000..561329ef --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ILoadOrdiniCallback.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.gest.accettazione.core.interfaces; + +import java.util.List; + +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public interface ILoadOrdiniCallback { + + + void onLoadSuccess(List ordini); + + void onLoadFail(Exception ex); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ILoadPickingListCallback.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ILoadPickingListCallback.java new file mode 100644 index 00000000..bc07ccbf --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ILoadPickingListCallback.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.gest.accettazione.core.interfaces; + +import java.util.List; + +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; + +/** + * Created by GiuseppeS on 22/03/2018. + */ + +public interface ILoadPickingListCallback { + + void onLoadSuccess(List ordini); + + void onLoadFail(Exception ex); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ITitledFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ITitledFragment.java new file mode 100644 index 00000000..0426dfa8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/interfaces/ITitledFragment.java @@ -0,0 +1,13 @@ +package it.integry.integrywmsnative.gest.accettazione.core.interfaces; + +import android.content.Context; + +/** + * Created by GiuseppeS on 07/03/2018. + */ + +public interface ITitledFragment { + + String getTitle(Context context); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java new file mode 100644 index 00000000..060c797e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java @@ -0,0 +1,189 @@ +package it.integry.integrywmsnative.gest.accettazione.dto; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbColt; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class OrdineAccettazioneDTO implements Parcelable { + + public String ragSoc; + public int numero; + public String data; + public String gestione; + public String codMdep; + public String codAnag; + public String codVdes; + public String termCons; + public ArrayList ordini; + public String codAlis; + public String rifOrd; + + + public static class Riga implements Parcelable { + public Float qtaOrd; + public Float qtaRiservate; + public int rigaOrd; + public String codJcom; + public String ragSocCom; + public MtbAart mtbAart; + public PickingObjectDTO[] colliAssociati; + public boolean hidden = false; + public String partitaMag; + public String codArtFor; + public String descrizioneEstesa; + public String codAlis; + + public int numOrd; + public String dataOrd; + public String gestioneOrd; + + public String dataCons; + + public Float getQtaDaEvadere() { + return this.qtaOrd - this.qtaRiservate; + } + + public Riga(){} + + protected Riga(Parcel in) { + qtaOrd = in.readByte() == 0x00 ? null : in.readFloat(); + qtaRiservate = in.readByte() == 0x00 ? null : in.readFloat(); + rigaOrd = in.readInt(); + codJcom = in.readString(); + ragSocCom = in.readString(); + mtbAart = (MtbAart) in.readValue(MtbAart.class.getClassLoader()); + hidden = in.readByte() != 0x00; + partitaMag = in.readString(); + codArtFor = in.readString(); + descrizioneEstesa = in.readString(); + codAlis = in.readString(); + numOrd = in.readInt(); + dataOrd = in.readString(); + gestioneOrd = in.readString(); + dataCons = in.readString(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + if (qtaOrd == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeFloat(qtaOrd); + } + if (qtaRiservate == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeFloat(qtaRiservate); + } + dest.writeInt(rigaOrd); + dest.writeString(codJcom); + dest.writeString(ragSocCom); + dest.writeValue(mtbAart); + dest.writeByte((byte) (hidden ? 0x01 : 0x00)); + dest.writeString(partitaMag); + dest.writeString(codArtFor); + dest.writeString(descrizioneEstesa); + dest.writeString(codAlis); + dest.writeInt(numOrd); + dest.writeString(dataOrd); + dest.writeString(gestioneOrd); + dest.writeString(dataCons); + } + + @SuppressWarnings("unused") + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public Riga createFromParcel(Parcel in) { + return new Riga(in); + } + + @Override + public Riga[] newArray(int size) { + return new Riga[size]; + } + }; + + } + + public static class PickingObjectDTO extends MtbColt{ + public boolean hidden = false; + } + + public OrdineAccettazioneDTO() {} + + protected OrdineAccettazioneDTO(Parcel in) { + ragSoc = in.readString(); + numero = in.readInt(); + data = in.readString(); + gestione = in.readString(); + codMdep = in.readString(); + codAnag = in.readString(); + codVdes = in.readString(); + termCons = in.readString(); + codAlis = in.readString(); + rifOrd = in.readString(); + if (in.readByte() == 0x01) { + ordini = new ArrayList(); + in.readList(ordini, Riga.class.getClassLoader()); + } else { + ordini = null; + } + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(ragSoc); + dest.writeInt(numero); + dest.writeString(data); + dest.writeString(gestione); + dest.writeString(codMdep); + dest.writeString(codAnag); + dest.writeString(codVdes); + dest.writeString(termCons); + dest.writeString(codAlis); + dest.writeString(rifOrd); + if (ordini == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeList(ordini); + } + } + + @SuppressWarnings("unused") + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public OrdineAccettazioneDTO createFromParcel(Parcel in) { + return new OrdineAccettazioneDTO(in); + } + + @Override + public OrdineAccettazioneDTO[] newArray(int size) { + return new OrdineAccettazioneDTO[size]; + } + }; + + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneGroupedInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneGroupedInevasoDTO.java new file mode 100644 index 00000000..82bb7c63 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneGroupedInevasoDTO.java @@ -0,0 +1,229 @@ +package it.integry.integrywmsnative.gest.accettazione.dto; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import it.integry.integrywmsnative.core.interfaces.ICheckBoxCallback; +import it.integry.integrywmsnative.core.utility.UtilityDate; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class OrdineAccettazioneGroupedInevasoDTO implements Cloneable, Serializable, Parcelable { + + public String codAnagForn; + public String nomeFornitore; + public List ordini; + + public OrdineAccettazioneGroupedInevasoDTO clone() throws CloneNotSupportedException { + return (OrdineAccettazioneGroupedInevasoDTO) super.clone(); + } + + + public static class Ordine implements Parcelable{ + public String data; + public int numero; + public String codAnagOrd = ""; + public String ragSocOrd = ""; + public Float pesoTotale; + public String barcode; + public String termCons; + public String dataCons; + public String rifOrd; + + public boolean checkBox; + public List checkBoxCallback = new ArrayList<>(); + public void setCheckbox(boolean newValue){ + checkBox = newValue; + if(checkBoxCallback != null && checkBoxCallback.size() > 0) { + for(ICheckBoxCallback callback : checkBoxCallback) callback.onToggle(newValue); + } + } + + public List clienti; + + + public Date getData(){ + try { + return UtilityDate.recognizeDate(data); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + public Ordine(){} + + protected Ordine(Parcel in) { + data = in.readString(); + numero = in.readInt(); + codAnagOrd = in.readString(); + ragSocOrd = in.readString(); + pesoTotale = in.readByte() == 0x00 ? null : in.readFloat(); + barcode = in.readString(); + termCons = in.readString(); + dataCons = in.readString(); + rifOrd = in.readString(); + if (in.readByte() == 0x01) { + clienti = new ArrayList(); + in.readList(clienti, Cliente.class.getClassLoader()); + } else { + clienti = null; + } + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(data); + dest.writeInt(numero); + dest.writeString(codAnagOrd); + dest.writeString(ragSocOrd); + if (pesoTotale == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeFloat(pesoTotale); + } + dest.writeString(barcode); + dest.writeString(termCons); + dest.writeString(dataCons); + dest.writeString(rifOrd); + if (clienti == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeList(clienti); + } + } + + @SuppressWarnings("unused") + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public Ordine createFromParcel(Parcel in) { + return new Ordine(in); + } + + @Override + public Ordine[] newArray(int size) { + return new Ordine[size]; + } + }; + + } + + public static class Cliente implements Parcelable{ + public String codJcom; + public String ragSocCom; + public int idRiga; + public String dataCons; + public Integer numCnf; + public String descrCom; + + public Date getDataCons(){ + try { + return UtilityDate.recognizeDate(dataCons); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public Cliente(){} + + protected Cliente(Parcel in) { + codJcom = in.readString(); + ragSocCom = in.readString(); + idRiga = in.readInt(); + dataCons = in.readString(); + numCnf = in.readByte() == 0x00 ? null : in.readInt(); + descrCom = in.readString(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(codJcom); + dest.writeString(ragSocCom); + dest.writeInt(idRiga); + dest.writeString(dataCons); + if (numCnf == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeInt(numCnf); + } + dest.writeString(descrCom); + } + + @SuppressWarnings("unused") + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public Cliente createFromParcel(Parcel in) { + return new Cliente(in); + } + + @Override + public Cliente[] newArray(int size) { + return new Cliente[size]; + } + }; + } + + public OrdineAccettazioneGroupedInevasoDTO(){} + + protected OrdineAccettazioneGroupedInevasoDTO(Parcel in) { + codAnagForn = in.readString(); + nomeFornitore = in.readString(); + if (in.readByte() == 0x01) { + ordini = new ArrayList(); + in.readList(ordini, Ordine.class.getClassLoader()); + } else { + ordini = null; + } + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(codAnagForn); + dest.writeString(nomeFornitore); + if (ordini == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeList(ordini); + } + } + + @SuppressWarnings("unused") + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public OrdineAccettazioneGroupedInevasoDTO createFromParcel(Parcel in) { + return new OrdineAccettazioneGroupedInevasoDTO(in); + } + + @Override + public OrdineAccettazioneGroupedInevasoDTO[] newArray(int size) { + return new OrdineAccettazioneGroupedInevasoDTO[size]; + } + }; + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneInevasoDTO.java new file mode 100644 index 00000000..27272dc4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneInevasoDTO.java @@ -0,0 +1,28 @@ +package it.integry.integrywmsnative.gest.accettazione.dto; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public class OrdineAccettazioneInevasoDTO { + + public String data; + public int numero; + public String termCons; + public String codAuto; + public String descrizioneAuto; + public String rifOrd; + public String codVvet; + public String descrizioneVettore; + public String dataInizTrasp; + public String codJcom = ""; + public String descrizioneCom = ""; + public String codAnagOrd = ""; + public String ragSocOrd = ""; + public String ragSocCom = ""; + public Float pesoTotale; + public Integer numCnf; + public String dataCons; + public String barcode; + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumerService.java new file mode 100644 index 00000000..b2c96e09 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumerService.java @@ -0,0 +1,24 @@ +package it.integry.integrywmsnative.gest.accettazione.rest; + +import java.util.List; + +import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; +import retrofit2.Call; +import retrofit2.http.POST; +import retrofit2.http.Query; + +/** + * Created by GiuseppeS on 06/03/2018. + */ + +public interface OrdiniAccettazioneRESTConsumerService { + + @POST("SM2GetOrdiniAccettazioneInevasi") + Call>> listOrdiniInevasi(); + + @POST("WMSGetPickingListAccettazione") + Call>> pickingListAccettazione(@Query("codBarreBancale") String codBarreBacale); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java new file mode 100644 index 00000000..737383b9 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java @@ -0,0 +1,180 @@ +package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso; + +import android.content.DialogInterface; +import android.support.v7.app.AlertDialog; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.Toolbar; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core.AccettazioneOrdineInevasoHelper; +import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core.MainListOrdineAccettazioneAdapter; +import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto.AccettazioneOrdineInevasoOrderBy; +import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; + +public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { + + @BindView(R.id.toolbar) Toolbar toolbar; + + @BindView(R.id.accettazione_ordine_main_list) RecyclerView mRecyclerView; + + + private MainListOrdineAccettazioneAdapter mAdapter; + private RecyclerView.LayoutManager mLayoutManager; + + private List> groupedRighe; + private List groupedOrdini; + + private AccettazioneOrdineInevasoHelper helper; + + private AccettazioneOrdineInevasoOrderBy.Enum currentOrderBy = AccettazioneOrdineInevasoOrderBy.Enum.COD_ART_FOR; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_accettazione_ordine_inevaso); + + ButterKnife.bind(this); + + setSupportActionBar(toolbar); + + List orders = new ArrayList(); + orders = (ArrayList)getIntent().getSerializableExtra("key"); + + setTitle(orders); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + groupedOrdini = new ArrayList<>(); + for (OrdineAccettazioneDTO ordine : orders){ + groupedOrdini.addAll(ordine.ordini); + } + + helper = new AccettazioneOrdineInevasoHelper(this); + + groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini); + + initRecyclerView(groupedRighe); + + } + + @Override + public boolean onSupportNavigateUp() { + onBackPressed(); + return true; + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.activity_accettazione_ordine_inevaso, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle item selection + switch (item.getItemId()) { + case R.id.action_filter: + this.showOrderDialog(); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + + private void setTitle(List ordini){ + if(ordini.size() > 0){ + if(ordini.size() == 1){ + setTitle(ordini.get(0).ragSoc); + } else { + setTitle(R.string.accettazione_ordine_inevaso_title_multiple_order); + } + } else { + setTitle(R.string.accettazione_ordine_inevaso_title_empty); + } + } + + private void initRecyclerView(List> groupedRighe){ + //RecyclerView setup + mRecyclerView.setHasFixedSize(true); + + mLayoutManager = new LinearLayoutManager(this); + mRecyclerView.setLayoutManager(mLayoutManager); + + try { + mAdapter = helper.getRightListAdapter(AccettazioneOrdineInevasoOrderBy.Enum.COD_ART_FOR, groupedRighe); + } catch (Exception e) { + e.printStackTrace(); + DialogSimpleMessageHelper.makeErrorDialog(this, e.toString(), null).show(); + } + mRecyclerView.setAdapter(mAdapter); + } + + + + + + private void showOrderDialog() { + + AlertDialog dialog = new AlertDialog.Builder(this) + .setTitle(AccettazioneOrdineInevasoActivity.this.getText(R.string.action_orderBy)) + .setSingleChoiceItems(AccettazioneOrdineInevasoOrderBy.descriptions, currentOrderBy.getVal(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + currentOrderBy = AccettazioneOrdineInevasoOrderBy.Enum.fromInt(which); + } + }) + .setPositiveButton("Ok", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + refreshOrderBy(); + } + }) + .create(); + dialog.show(); + } + + + + private void refreshOrderBy(){ + switch (currentOrderBy){ + case COD_ART_FOR: + groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini); + break; + case DESCR_ART: + groupedRighe = helper.getOrdiniRaggruppatiPerDescrArt(groupedOrdini); + break; + + case RAG_SOC_COM: + groupedRighe = helper.getOrdiniRaggruppatiPerRagSocCommessa(groupedOrdini); + break; + + default: + break; + } + + try { + mRecyclerView.setAdapter(helper.getRightListAdapter(currentOrderBy, groupedRighe)); + mRecyclerView.invalidate(); + +// mAdapter = helper.getRightListAdapter(currentOrderBy, groupedRighe); +// mAdapter.notifyDataSetChanged(); + } catch (Exception e) { + e.printStackTrace(); + Toast.makeText(this, e.getMessage().toString(), Toast.LENGTH_LONG).show(); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/AccettazioneOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/AccettazioneOrdineInevasoHelper.java new file mode 100644 index 00000000..ecbb59bb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/AccettazioneOrdineInevasoHelper.java @@ -0,0 +1,269 @@ +package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core; + +import android.content.Context; +import android.content.SyncRequest; +import android.util.Log; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.coollection.Coollection; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto.AccettazioneOrdineInevasoListViewModel; +import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto.AccettazioneOrdineInevasoOrderBy; + +/** + * Created by GiuseppeS on 21/03/2018. + */ + +public class AccettazioneOrdineInevasoHelper { + + private Context mContext; + + public AccettazioneOrdineInevasoHelper(Context context){ + mContext = context; + } + + + + public MainListOrdineAccettazioneAdapter getRightListAdapter(AccettazioneOrdineInevasoOrderBy.Enum orderByEnum, List> mDataset) throws Exception { + + List listViewModels = null; + + switch (orderByEnum){ + case COD_ART_FOR: + case DESCR_ART: + listViewModels = getListViewModelPerArtForn(mDataset); + break; + + case RAG_SOC_COM: + listViewModels = getListViewModelPerRagSocCommessa(mDataset); + break; + + default: + throw new Exception("Cannot find right list adapter: " + orderByEnum.toString()); + } + + return new MainListOrdineAccettazioneAdapter(mContext, listViewModels); + + } + + + public List> getOrdiniRaggruppatiPerCodArtForn(List mDataset){ + List codArtForns = new ArrayList<>(); + + for(int i = 0; i < mDataset.size(); i++){ + if(!codArtForns.contains(mDataset.get(i).codArtFor)){ + codArtForns.add(mDataset.get(i).codArtFor); + } + } + + Collections.sort(codArtForns, new Comparator() { + public int compare(String str1, String str2) { + return str1.compareToIgnoreCase(str2); + } + }); + + List> groupedRighe = new ArrayList<>(); + for (String codArtForn : codArtForns) { + List tmpList = Coollection.from(mDataset) + .where("codArtFor", Coollection.eqIgnoreCase(codArtForn)).all(); + + for(int i = 0; i < tmpList.size(); i++){ + if(tmpList.get(i).qtaRiservate >= tmpList.get(i).qtaOrd){ + tmpList.remove(i); + i--; + } + } + + if(tmpList.size() > 0){ + groupedRighe.add(tmpList); + } + } + + return groupedRighe; + } + + + public List> getOrdiniRaggruppatiPerDescrArt(List mDataset){ + List descrArtForns = new ArrayList<>(); + + for(int i = 0; i < mDataset.size(); i++){ + if(!descrArtForns.contains(mDataset.get(i).descrizioneEstesa)){ + descrArtForns.add(mDataset.get(i).descrizioneEstesa); + } + } + + Collections.sort(descrArtForns, new Comparator() { + public int compare(String str1, String str2) { + return str1.compareToIgnoreCase(str2); + } + }); + + List> groupedRighe = new ArrayList<>(); + for (String descrArtForn : descrArtForns) { + List tmpList = Coollection.from(mDataset) + .where("descrizioneEstesa", Coollection.eqIgnoreCase(descrArtForn)).all(); + + for(int i = 0; i < tmpList.size(); i++){ + if(tmpList.get(i).qtaRiservate >= tmpList.get(i).qtaOrd){ + tmpList.remove(i); + i--; + } + } + + if(tmpList.size() > 0){ + groupedRighe.add(tmpList); + } + } + + return groupedRighe; + } + + + private class RaggruppaPerCommessaUtilDTO { + public String codJcom; + public String ragSocCom; + } + + public List> getOrdiniRaggruppatiPerRagSocCommessa(List mDataset) { + List commessaList = new ArrayList<>(); + + //ragSocList.add(mContext.getText(R.string.stock).toString()); + + for(int i = 0; i < mDataset.size(); i++){ + boolean alreadyExists = false; + + for(int k = 0; k < commessaList.size(); k++){ + if(commessaList.get(k).codJcom.equalsIgnoreCase(mDataset.get(i).codJcom)){ + alreadyExists = true; + } + } + + if(mDataset.get(i).codJcom != null && !alreadyExists){ + RaggruppaPerCommessaUtilDTO dto = new RaggruppaPerCommessaUtilDTO(); + dto.codJcom = mDataset.get(i).codJcom; + dto.ragSocCom = mDataset.get(i).ragSocCom; + commessaList.add(dto); + } + } + + Collections.sort(commessaList, new Comparator() { + public int compare(RaggruppaPerCommessaUtilDTO dto1, RaggruppaPerCommessaUtilDTO dto2) { + if(dto1.ragSocCom == null) return -1; + if(dto2.ragSocCom == null) return 1; + + return dto1.ragSocCom.compareToIgnoreCase(dto2.ragSocCom); + } + }); + + List> groupedRighe = new ArrayList<>(); + + for (RaggruppaPerCommessaUtilDTO dto : commessaList) { + + List tmpList = Coollection.from(mDataset) + .where("codJcom", Coollection.eqIgnoreCase(dto.codJcom)).all(); + + for(int i = 0; i < tmpList.size(); i++){ + if(tmpList.get(i).qtaRiservate >= tmpList.get(i).qtaOrd){ + tmpList.remove(i); + i--; + } + } + + Collections.sort(tmpList, new Comparator() { + public int compare(OrdineAccettazioneDTO.Riga obj1, OrdineAccettazioneDTO.Riga obj2) { + return obj1.mtbAart.descrizioneEstesa.compareToIgnoreCase(obj2.mtbAart.descrizioneEstesa); + } + }); + + if(tmpList.size() > 0){ + groupedRighe.add(tmpList); + } + + } + + //Raggruppo tutti quelli per il magazzino e li aggiungo alla fine + + List tmpList = Coollection.from(mDataset) + .where("ragSocCom", Coollection.eqIgnoreCase("MAG")).all(); + + return groupedRighe; + } + + + public List getListViewModelPerArtForn(List> groupedRighe){ + + List listModel = new ArrayList<>(); + + DecimalFormat decimalFormat = new DecimalFormat("#.#"); + for(int i = 0; i < groupedRighe.size(); i++){ + AccettazioneOrdineInevasoListViewModel itemModel = new AccettazioneOrdineInevasoListViewModel(); + + itemModel.descrizioneGroup = groupedRighe.get(i).get(0).codArtFor + " - " + groupedRighe.get(i).get(0).descrizioneEstesa; + + itemModel.rows = new ArrayList<>(); + + for(int k = 0; k < groupedRighe.get(i).size(); k++){ + final OrdineAccettazioneDTO.Riga rowItem = groupedRighe.get(i).get(k); + final AccettazioneOrdineInevasoListViewModel.SubItem rowModel = new AccettazioneOrdineInevasoListViewModel.SubItem(); + + rowModel.badge1 = rowItem.codJcom != null ? rowItem.codJcom : "MAG"; + rowModel.badge2 = String.valueOf(rowItem.numOrd); + + rowModel.descrizione = rowItem.ragSocCom; + + rowModel.qtaRiservata = decimalFormat.format(rowItem.qtaRiservate); + rowModel.qtaOrdinata = decimalFormat.format(rowItem.qtaOrd); + + itemModel.rows.add(rowModel); + } + listModel.add(itemModel); + } + + return listModel; + } + + + public List getListViewModelPerRagSocCommessa(List> groupedRighe) { + List listModel = new ArrayList<>(); + + DecimalFormat decimalFormat = new DecimalFormat("#.#"); + for(int i = 0; i < groupedRighe.size(); i++){ + AccettazioneOrdineInevasoListViewModel itemModel = new AccettazioneOrdineInevasoListViewModel(); + + itemModel.descrizioneGroup = groupedRighe.get(i).get(0).codJcom; + + if(groupedRighe.get(i).get(0).ragSocCom != null && groupedRighe.get(i).get(0).ragSocCom.trim().length() > 0){ + itemModel.descrizioneGroup += " - " + groupedRighe.get(i).get(0).ragSocCom; + } + + itemModel.rows = new ArrayList<>(); + + for(int k = 0; k < groupedRighe.get(i).size(); k++){ + final OrdineAccettazioneDTO.Riga rowItem = groupedRighe.get(i).get(k); + final AccettazioneOrdineInevasoListViewModel.SubItem rowModel = new AccettazioneOrdineInevasoListViewModel.SubItem(); + + rowModel.badge1 = rowItem.codArtFor; + rowModel.badge2 = String.valueOf(rowItem.numOrd); + + rowModel.descrizione = rowItem.mtbAart.descrizioneEstesa; + + rowModel.qtaRiservata = decimalFormat.format(rowItem.qtaRiservate); + rowModel.qtaOrdinata = decimalFormat.format(rowItem.qtaOrd); + + itemModel.rows.add(rowModel); + } + listModel.add(itemModel); + } + + return listModel; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/MainListOrdineAccettazioneAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/MainListOrdineAccettazioneAdapter.java new file mode 100644 index 00000000..b8634cc9 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/MainListOrdineAccettazioneAdapter.java @@ -0,0 +1,128 @@ +package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core; + +import android.content.Context; +import android.graphics.Color; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; + +import java.text.DecimalFormat; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto.AccettazioneOrdineInevasoListViewModel; + +/** + * Created by GiuseppeS on 21/03/2018. + */ + +public class MainListOrdineAccettazioneAdapter extends RecyclerView.Adapter { + + protected Context mContext; + protected List mDataset; + + public static class ViewHolder extends RecyclerView.ViewHolder { + // each data item is just a string in this case + protected View mGroupTitle; + protected LinearLayout mLinearLayoutGroupItemContainer; + public ViewHolder(View v) { + super(v); + } + } + + public MainListOrdineAccettazioneAdapter(Context context, List myDataset) { + mContext = context; + mDataset = myDataset; + } + + + @Override + public MainListOrdineAccettazioneAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + View v = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.accettazione_ordine_inevaso_main_list___cod_art_for, parent, false); + + v.setHasTransientState(true); + + ViewHolder vh = new ViewHolder(v); + + TextView descrizioneArtForn = (TextView) v.findViewById(R.id.accettazione_ordine_inevaso_main_list_descrArtFor); + vh.mGroupTitle = descrizioneArtForn; + + LinearLayout groupItemContainer = (LinearLayout) v.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_container); + vh.mLinearLayoutGroupItemContainer = groupItemContainer; + + return vh; + } + + + // Replace the contents of a view (invoked by the layout manager) + @Override + public void onBindViewHolder(MainListOrdineAccettazioneAdapter.ViewHolder holder, int position) { + // - get element from your dataset at this position + // - replace the contents of the view with that element + + ((TextView)holder.mGroupTitle).setText(mDataset.get(position).descrizioneGroup); + + List subset = mDataset.get(position).rows; + + for(int i = 0; i < subset.size(); i++) { + + final AccettazioneOrdineInevasoListViewModel.SubItem rowItem = subset.get(i); + + View groupModelView = LayoutInflater.from(mContext) + .inflate(R.layout.accettazione_ordine_inevaso_main_list___cod_art_for_group_model, holder.mLinearLayoutGroupItemContainer, false); + + if(i % 2 == 1){ + groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG)); + } + + + final TextView badge1 = (TextView) groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_badge1); + badge1.setText(rowItem.badge1); + + final TextView badge2 = (TextView) groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_badge2); + badge2.setText(rowItem.badge2); + + + final TextView descrizione = (TextView) groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_descrizione); + + String descrizioneString = rowItem.descrizione; + int descrizioneColor = Color.BLACK; + + if(descrizioneString == null || descrizioneString.trim().length() == 0) { + descrizioneString = mContext.getString(R.string.no_description); + descrizioneColor = Color.GRAY; + } else if(descrizioneString.equalsIgnoreCase("MAG")){ + descrizioneString = mContext.getString(R.string.stock); + } + + descrizione.setText(descrizioneString); + descrizione.setTextColor(descrizioneColor); + + final TextView qtaEvasa = (TextView) groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_qta_evasa); + qtaEvasa.setText(rowItem.qtaRiservata); + + final TextView qtaTot = (TextView) groupModelView.findViewById(R.id.accettazione_ordine_inevaso_main_list_group_item_qta_tot); + qtaTot.setText(rowItem.qtaOrdinata); + + + holder.mLinearLayoutGroupItemContainer.addView(groupModelView); + + } + + } + + + + // Return the size of your dataset (invoked by the layout manager) + @Override + public int getItemCount() { + return mDataset.size(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoListViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoListViewModel.java new file mode 100644 index 00000000..8c4e2f42 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoListViewModel.java @@ -0,0 +1,25 @@ +package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto; + +import java.util.List; + +/** + * Created by GiuseppeS on 27/03/2018. + */ + +public class AccettazioneOrdineInevasoListViewModel { + + public String descrizioneGroup; + public List rows; + + public static class SubItem { + + public String badge1; + public String badge2; + + public String descrizione; + public String qtaRiservata; + public String qtaOrdinata; + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoOrderBy.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoOrderBy.java new file mode 100644 index 00000000..858fcad8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/dto/AccettazioneOrdineInevasoOrderBy.java @@ -0,0 +1,36 @@ +package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto; + +/** + * Created by GiuseppeS on 21/03/2018. + */ + +public class AccettazioneOrdineInevasoOrderBy { + + public static String[] descriptions = new String[] { + "Cod articolo fornitore", + "Descrizione articolo", + "Ragione sociale commessa" + }; + + public enum Enum { + COD_ART_FOR(0), + DESCR_ART(1), + RAG_SOC_COM(2); + + + private int val; + Enum(int val) { + this.val = val; + } + public int getVal() { + return this.val; + } + + public static Enum fromInt(int val) { + for (Enum b : Enum.values()) { + if (b.val == val) return b; + } + return null; + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java new file mode 100644 index 00000000..d368560e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogSimpleMessageHelper.java @@ -0,0 +1,118 @@ +package it.integry.integrywmsnative.view.dialogs; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; + +import it.integry.integrywmsnative.R; + +/** + * Created by GiuseppeS on 22/03/2018. + */ + +public class DialogSimpleMessageHelper { + + public enum TYPE { + INFO(1), + WARNING(2), + ERROR(3); + + private int value; + TYPE(int value) { + this.value = value; + } + public int getValue() { + return this.value; + } + + public static TYPE fromInt(int value) { + for (TYPE b : TYPE.values()) { + if (b.value == value) return b; + } + return null; + } + } + + private static AlertDialog makeBase(TYPE type, Context mContext, String titleText, String messageText, DialogInterface.OnClickListener onPositiveClick, DialogInterface.OnClickListener onNegativeClick){ + LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + View titleView = inflater.inflate(R.layout.dialog_custom_header, null); + + int colorBackgroundTitle = -1; + int colorTextTitle = -1; + + switch (type){ + case INFO: + colorBackgroundTitle = mContext.getResources().getColor(R.color.colorPrimary); + colorTextTitle = mContext.getResources().getColor(android.R.color.white); + break; + + case WARNING: + colorBackgroundTitle = mContext.getResources().getColor(R.color.yellow_600); + colorTextTitle = mContext.getResources().getColor(android.R.color.black); + break; + + case ERROR: + colorBackgroundTitle = mContext.getResources().getColor(R.color.red_600); + colorTextTitle = mContext.getResources().getColor(android.R.color.white); + break; + } + + View backgroundView = titleView.findViewById(R.id.llsubhead); + backgroundView.setBackgroundColor(colorBackgroundTitle); + TextView title = (TextView) titleView.findViewById(R.id.exemptionSubHeading4); + title.setText(titleText); + title.setTextColor(colorTextTitle); + + + AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext) + .setCustomTitle(titleView) + .setMessage(messageText) + .setPositiveButton(mContext.getText(R.string.ok), onPositiveClick); + + if(onNegativeClick != null){ + alertDialog.setNegativeButton(mContext.getText(R.string.abort), onNegativeClick); + } + + AlertDialog alert = alertDialog.create(); + alert.setCanceledOnTouchOutside(false); + + return alert; + } + + + public static AlertDialog makeInfoDialog(Context mContext, String titleText, String messageText, DialogInterface.OnClickListener onPositiveClick){ + return makeBase(TYPE.INFO, + mContext, + titleText, + messageText, + onPositiveClick, + null); + } + + + public static AlertDialog makeWarningDialog(Context mContext, String messageText, DialogInterface.OnClickListener onPositiveClick){ + return makeBase(TYPE.WARNING, + mContext, + mContext.getText(R.string.warning).toString(), + messageText, + onPositiveClick, + null); + } + + public static AlertDialog makeErrorDialog(Context mContext, String messageText, DialogInterface.OnClickListener onPositiveClick){ + + return makeBase(TYPE.ERROR, + mContext, + mContext.getText(R.string.error).toString(), + messageText, + onPositiveClick, + null); + + } + + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/IButtonDialogAction.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/IButtonDialogAction.java new file mode 100644 index 00000000..b767088c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/IButtonDialogAction.java @@ -0,0 +1,12 @@ +package it.integry.integrywmsnative.view.dialogs; + +/** + * Created by GiuseppeS on 22/03/2018. + */ + +public interface IButtonDialogAction { + + void onPositiveButtonClicked(); + void onNegativeButtonClicked(); + +} diff --git a/app/src/main/res/anim/scale_down.xml b/app/src/main/res/anim/scale_down.xml new file mode 100644 index 00000000..90ab40ca --- /dev/null +++ b/app/src/main/res/anim/scale_down.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/scale_up.xml b/app/src/main/res/anim/scale_up.xml new file mode 100644 index 00000000..0cc5ee30 --- /dev/null +++ b/app/src/main/res/anim/scale_up.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/badge1_round_corner.xml b/app/src/main/res/drawable/badge1_round_corner.xml new file mode 100644 index 00000000..e75dd9b5 --- /dev/null +++ b/app/src/main/res/drawable/badge1_round_corner.xml @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/badge2_round_corner.xml b/app/src/main/res/drawable/badge2_round_corner.xml new file mode 100644 index 00000000..9ecc4c83 --- /dev/null +++ b/app/src/main/res/drawable/badge2_round_corner.xml @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_check_black_24dp.xml b/app/src/main/res/drawable/ic_check_black_24dp.xml new file mode 100644 index 00000000..3c728c59 --- /dev/null +++ b/app/src/main/res/drawable/ic_check_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_filter_list_24dp.xml b/app/src/main/res/drawable/ic_filter_list_24dp.xml new file mode 100644 index 00000000..7d435fa2 --- /dev/null +++ b/app/src/main/res/drawable/ic_filter_list_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_camera.xml b/app/src/main/res/drawable/ic_menu_camera.xml new file mode 100644 index 00000000..0d9ea104 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_camera.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_menu_gallery.xml b/app/src/main/res/drawable/ic_menu_gallery.xml new file mode 100644 index 00000000..f6872c40 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_gallery.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_manage.xml b/app/src/main/res/drawable/ic_menu_manage.xml new file mode 100644 index 00000000..c1be60b3 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_manage.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu_send.xml b/app/src/main/res/drawable/ic_menu_send.xml new file mode 100644 index 00000000..00c668c6 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_send.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_share.xml b/app/src/main/res/drawable/ic_menu_share.xml new file mode 100644 index 00000000..a28fb9e2 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_share.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_slideshow.xml b/app/src/main/res/drawable/ic_menu_slideshow.xml new file mode 100644 index 00000000..209aa643 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_slideshow.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_search_black_24dp.xml b/app/src/main/res/drawable/ic_search_black_24dp.xml new file mode 100644 index 00000000..affc7ba2 --- /dev/null +++ b/app/src/main/res/drawable/ic_search_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/app/src/main/res/drawable/side_nav_bar.xml new file mode 100644 index 00000000..458b4b07 --- /dev/null +++ b/app/src/main/res/drawable/side_nav_bar.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/accettazione_main_list_group_clienti.xml b/app/src/main/res/layout/accettazione_main_list_group_clienti.xml new file mode 100644 index 00000000..ea278f24 --- /dev/null +++ b/app/src/main/res/layout/accettazione_main_list_group_clienti.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/accettazione_main_list_group_model.xml b/app/src/main/res/layout/accettazione_main_list_group_model.xml new file mode 100644 index 00000000..a908f7d7 --- /dev/null +++ b/app/src/main/res/layout/accettazione_main_list_group_model.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/accettazione_main_list_model.xml b/app/src/main/res/layout/accettazione_main_list_model.xml new file mode 100644 index 00000000..cdfd46a0 --- /dev/null +++ b/app/src/main/res/layout/accettazione_main_list_model.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/accettazione_ordine_inevaso_main_list___cod_art_for.xml b/app/src/main/res/layout/accettazione_ordine_inevaso_main_list___cod_art_for.xml new file mode 100644 index 00000000..f53f5bf6 --- /dev/null +++ b/app/src/main/res/layout/accettazione_ordine_inevaso_main_list___cod_art_for.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/accettazione_ordine_inevaso_main_list___cod_art_for_group_model.xml b/app/src/main/res/layout/accettazione_ordine_inevaso_main_list___cod_art_for_group_model.xml new file mode 100644 index 00000000..ab760a0b --- /dev/null +++ b/app/src/main/res/layout/accettazione_ordine_inevaso_main_list___cod_art_for_group_model.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml b/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml new file mode 100644 index 00000000..6766dfca --- /dev/null +++ b/app/src/main/res/layout/activity_accettazione_ordine_inevaso.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..a61d8a63 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml new file mode 100644 index 00000000..65262710 --- /dev/null +++ b/app/src/main/res/layout/app_bar_main.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml new file mode 100644 index 00000000..dadc681c --- /dev/null +++ b/app/src/main/res/layout/content_main.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/layout/dialog_custom_header.xml b/app/src/main/res/layout/dialog_custom_header.xml new file mode 100644 index 00000000..8e5aeba9 --- /dev/null +++ b/app/src/main/res/layout/dialog_custom_header.xml @@ -0,0 +1,25 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_accettazione.xml b/app/src/main/res/layout/fragment_main_accettazione.xml new file mode 100644 index 00000000..e050f57b --- /dev/null +++ b/app/src/main/res/layout/fragment_main_accettazione.xml @@ -0,0 +1,28 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/nav_header_main.xml b/app/src/main/res/layout/nav_header_main.xml new file mode 100644 index 00000000..5eea9a6f --- /dev/null +++ b/app/src/main/res/layout/nav_header_main.xml @@ -0,0 +1,35 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/switch_item.xml b/app/src/main/res/layout/switch_item.xml new file mode 100644 index 00000000..ee492c6e --- /dev/null +++ b/app/src/main/res/layout/switch_item.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/menu/activity_accettazione_ordine_inevaso.xml b/app/src/main/res/menu/activity_accettazione_ordine_inevaso.xml new file mode 100644 index 00000000..ab7682c2 --- /dev/null +++ b/app/src/main/res/menu/activity_accettazione_ordine_inevaso.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml new file mode 100644 index 00000000..74dc552a --- /dev/null +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml new file mode 100644 index 00000000..0e9a98a0 --- /dev/null +++ b/app/src/main/res/menu/main.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..cde69bcc Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000..9a078e3e Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..c133a0cb Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000..efc028a6 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..bfa42f0e Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000..3af2608a Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..324e72cd Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..9bec2e62 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..aee44e13 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..34947cd6 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml new file mode 100644 index 00000000..9da0445d --- /dev/null +++ b/app/src/main/res/values-it/strings.xml @@ -0,0 +1,21 @@ + + + Integry WMS Native + Attendere + Caricamento + %s del %s]]> + Cerca... + Accettazione + Ordine di accettazione + Ordini di accettazione + Errore + Attenzione + OK + Annulla + Evasi + Impostazioni + Nessuna descrizione + Stock + Filtra + Ordina + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 00000000..22962968 --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,17 @@ + + + + + + @color/green_500 + @color/green_500 + @color/green_500 + @color/green_500 + @color/green_500 + @color/green_500 + @color/green_500 + @color/green_500 + @color/green_500 + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..7acf66c7 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,37 @@ + + + @color/indigo_500 + @color/indigo_700 + #387ef5 + + @color/green_500 + #32db64 + #eeeeee + + + + + + #1976D2 + + + #4CAF50 + #43A047 + #388E3C + + + #5C6BC0 + #3F51B5 + #3949AB + #303F9F + + + #FB8C00 + + + #E53935 + + + #FDD835 + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 00000000..8f830eec --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,8 @@ + + + 16dp + 16dp + 16dp + 160dp + 16dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..8bc5f716 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,29 @@ + + Integry WMS Native + + Open navigation drawer + Close navigation drawer + + Settings + + + Waiting + Loading + Search... + + + %s of %s]]> + Acceptance + Acceptance order + Multiple acceptance orders + Error + Warning + OK + Abort + Dispatched + No description + Stock + Filter + Order + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..710be351 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,20 @@ + + + + + + + +