Modifiche varie

This commit is contained in:
2018-10-20 12:38:25 +02:00
parent 3683062370
commit 3a8e475f72
40 changed files with 883 additions and 308 deletions

View File

@@ -1,8 +1,6 @@
package it.integry.integrywmsnative;
import android.content.Intent;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
@@ -13,32 +11,26 @@ 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 net.cachapa.expandablelayout.ExpandableLayout;
import org.xml.sax.ErrorHandler;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.exception.ExceptionsHandler;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilitySettings;
import it.integry.integrywmsnative.core.wifi.WiFiCheckerViewHolder;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.main.MainFragment;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.integrywmsnative.gest.settings.SettingsPreferenceFragment;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@@ -47,11 +39,12 @@ public class MainActivity extends AppCompatActivity
@BindView(R.id.nav_view) NavigationView mNavigationView;
@BindView(R.id.no_connection_top_layout)
ExpandableLayout mNoConnectionLayout;
private ServerStatusChecker serverStatusChecker;
private boolean firstCheckExecution = true;
private boolean mIsOnline = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -79,7 +72,10 @@ public class MainActivity extends AppCompatActivity
mSearchView.setVisibility(View.GONE);
changeContentFragment(MainFragment.newInstance());
init();
}
}
@@ -91,54 +87,6 @@ public class MainActivity extends AppCompatActivity
this.finish();
}
private void init(){
serverStatusChecker = new ServerStatusChecker();
serverStatusChecker.startMonitoring(new ISingleValueOperationCallback<Boolean>() {
@Override
public void onResult(Boolean value) {
if(value && (mNoConnectionLayout.isExpanded() || firstCheckExecution)){
SettingsManager.reloadDBVariables(new ISimpleOperationCallback() {
@Override
public void onSuccess(Object value) {
collapseNoConnectionLayout();
firstCheckExecution = false;
}
@Override
public void onFailed(Exception ex) {
//mNoConnectionLayout.expand(true);
if(!mNoConnectionLayout.isExpanded()) expandNoConnectionLayout();
}
});
} else if(!value && !mNoConnectionLayout.isExpanded()){
expandNoConnectionLayout();
}
}
});
WiFiCheckerViewHolder wiFiCheckerViewHolder = new WiFiCheckerViewHolder(this, R.id.wifi_power);
wiFiCheckerViewHolder.startMonitoring();
}
private void collapseNoConnectionLayout(){
runOnUiThread(new Runnable() {
@Override
public void run() {
mNoConnectionLayout.collapse(true);
}
});
}
private void expandNoConnectionLayout(){
runOnUiThread(new Runnable() {
@Override
public void run() {
mNoConnectionLayout.expand(true);
}
});
}
@Override
@@ -196,17 +144,17 @@ public class MainActivity extends AppCompatActivity
}
else if(id == R.id.nav_settings){
fragment = new MainSettingsFragment();
this.adaptViewToFragment(fragment);
}
else if(id == R.id.nav_logout){
UtilitySettings.logout();
startLoginActivity();
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
}
changeContentFragment(fragment);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
@@ -229,4 +177,44 @@ public class MainActivity extends AppCompatActivity
getSupportActionBar().setTitle(R.string.app_name);
}
}
private void changeContentFragment(Fragment fragment){
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
}
}
private void init(){
ServerStatusChecker.getIstance().addCallback(value -> {
if(value && (!mIsOnline || firstCheckExecution)){
SettingsManager.reloadDBVariables(new ISimpleOperationCallback() {
@Override
public void onSuccess(Object value) {
mIsOnline = true;
firstCheckExecution = false;
}
@Override
public void onFailed(Exception ex) {
//mNoConnectionLayout.expand(true);
if(!mIsOnline) mIsOnline = false;
}
});
} else if(!value && mIsOnline){
mIsOnline = false;
}
});
}
}

View File

@@ -6,6 +6,10 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.text.SpannableString;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.Stash;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
@@ -23,6 +27,9 @@ public class MainApplication extends Application {
Stash.init(this);
SettingsManager.init(this);
ServerStatusChecker.init();
Logger.addLogAdapter(new AndroidLogAdapter());
res = getResources();
Context = this;

View File

@@ -1,7 +1,16 @@
package it.integry.integrywmsnative.core.REST;
import android.util.Log;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.util.List;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.model.EsitoType;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Response;
/**
* Created by GiuseppeS on 22/03/2018.
@@ -9,6 +18,7 @@ import java.net.SocketTimeoutException;
public class CommonRESTException {
public static String tryRecognizeThenGetMessage(Exception ex){
if(ex instanceof SocketException){

View File

@@ -32,7 +32,7 @@ public class EntityRESTConsumer {
Gson gson = new Gson();
//Type fooType = new TypeToken<T>() {}.getType();
String json = gson.toJson(response.body().getEntity());
callback.onSuccess((T) gson.fromJson(json, clazzType));
callback.onSuccess(gson.fromJson(json, clazzType));
} else {
Log.e("EntityRESTConsumer", response.body().getErrorMessage());
callback.onFailed(new Exception(response.body().getErrorMessage()));

View File

@@ -0,0 +1,62 @@
package it.integry.integrywmsnative.core.REST.consumers;
import android.util.Log;
import java.util.List;
import it.integry.integrywmsnative.core.REST.CommonRESTException;
import it.integry.integrywmsnative.core.REST.RESTBuilder;
import it.integry.integrywmsnative.core.REST.model.EsitoType;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class PrinterRESTConsumer extends _BaseRESTConsumer {
public static void getAvailablePrinters(final ISimpleOperationCallback<List<String>> callback) {
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.getAvailablePrinters().enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
analyzeAnswer(response, "GetAvailablePrinters", callback);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) {
}
});
}
public static void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, final ISimpleOperationCallback<Object> callback) {
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.printCollo(
printerName,
testataColloToPrint.getDataColloS(),
testataColloToPrint.getGestione(),
testataColloToPrint.getSerCollo(),
testataColloToPrint.getNumCollo(),
quantity,
reportName)
.enqueue(new Callback<ServiceRESTResponse<Object>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "PrintCollo", callback);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Object>> call, Throwable t) {
Log.e("PrintCollo", t.toString());
callback.onFailed(new Exception(t));
}
});
}
}

View File

@@ -0,0 +1,30 @@
package it.integry.integrywmsnative.core.REST.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface PrinterRESTConsumerService {
@POST("getAvailablePrinters")
Call<ServiceRESTResponse<List<String>>> getAvailablePrinters();
@POST("pkgPrintLabel")
Call<ServiceRESTResponse<Object>> printCollo(
@Query("printerName") String printerName,
@Query("dataCollo") String dataCollo,
@Query("gestione") String gestione,
@Query("serCollo") String serCollo,
@Query("numCollo") int numCollo,
@Query("printQuantity") int printQuantity,
@Query("reportName") String reportName
);
}

View File

@@ -13,7 +13,7 @@ import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class SystemRESTConsumer {
public class SystemRESTConsumer extends _BaseRESTConsumer {
public static void getAvailableProfiles(final ISimpleOperationCallback<List<String>> callback){
@@ -21,36 +21,13 @@ public class SystemRESTConsumer {
service.getAvailableProfiles(SettingsManager.i().user.username, SettingsManager.i().user.password).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
if(response.isSuccessful()) {
if(response.body() != null) {
if(response.body().getEsito() == EsitoType.OK) {
callback.onSuccess(response.body().getDto());
} else {
Log.e("ProfilesAvailable", response.body().getErrorMessage());
callback.onFailed(new Exception(response.body().getErrorMessage()));
}
} else {
Log.e("ProfilesAvailable", response.message());
callback.onFailed(new Exception(response.message()));
}
} else {
Log.e("ProfilesAvailable", "Status " + response.code() + ": " + response.message());
callback.onFailed(new Exception("Status " + response.code() + ": " + response.message()));
}
analyzeAnswer(response, "ProfilesAvailable", callback);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, final Throwable t) {
Log.e("ProfilesAvailable", t.toString());
callback.onFailed(new Exception(t));
}
});
@@ -67,36 +44,13 @@ public class SystemRESTConsumer {
service.getAvailableCodMdeps().enqueue(new Callback<ServiceRESTResponse<List<AvailableCodMdepsDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> call, Response<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> response) {
if(response.isSuccessful()) {
if(response.body() != null) {
if(response.body().getEsito() == EsitoType.OK) {
callback.onSuccess(response.body().getDto());
} else {
Log.e("CodMdepsAvailable", response.body().getErrorMessage());
callback.onFailed(new Exception(response.body().getErrorMessage()));
}
} else {
Log.e("CodMdepsAvailable", response.message());
callback.onFailed(new Exception(response.message()));
}
} else {
Log.e("CodMdepsAvailable", "Status " + response.code() + ": " + response.message());
callback.onFailed(new Exception("Status " + response.code() + ": " + response.message()));
}
analyzeAnswer(response, "CodMdepsAvailable", callback);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> call, final Throwable t) {
Log.e("CodMdepsAvailable", t.toString());
callback.onFailed(new Exception(t));
}
});

View File

@@ -0,0 +1,35 @@
package it.integry.integrywmsnative.core.REST.consumers;
import android.util.Log;
import it.integry.integrywmsnative.core.REST.model.EsitoType;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Response;
public class _BaseRESTConsumer {
public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, final ISimpleOperationCallback<T> callback){
if(response.isSuccessful()) {
if(response.body() != null) {
if(response.body().getEsito() == EsitoType.OK) {
if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){
callback.onFailed(new Exception(response.body().getErrorMessage()));
} else callback.onSuccess(response.body().getDto());
} else {
Log.e(logTitle, response.body().getErrorMessage());
callback.onFailed(new Exception(response.body().getErrorMessage()));
}
} else {
Log.e(logTitle, response.message());
callback.onFailed(new Exception(response.message()));
}
} else {
Log.e(logTitle, "Status " + response.code() + ": " + response.message());
callback.onFailed(new Exception("Status " + response.code() + ": " + response.message()));
}
}
}

View File

@@ -2,13 +2,28 @@ package it.integry.integrywmsnative.core.REST.watcher;
import android.os.Handler;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityServer;
import it.integry.integrywmsnative.core.utility.UtilityString;
public class ServerStatusChecker {
private ISingleValueOperationCallback<Boolean> mCallback;
private static ServerStatusChecker istance = new ServerStatusChecker();
private List<ISingleValueOperationCallback<Boolean>> mCallback = new ArrayList<>();
private ISingleValueOperationCallback<Boolean> mInternalCallback = new ISingleValueOperationCallback<Boolean>() {
@Override
public void onResult(Boolean value) {
for (ISingleValueOperationCallback callback : mCallback) {
callback.onResult(value);
}
}
};
private boolean shouldExecute = true;
private final long MILLIS_DELAY = 5 * 1000;
@@ -18,22 +33,35 @@ public class ServerStatusChecker {
private Runnable runnableCode = new Runnable() {
@Override
public void run() {
if(shouldExecute) {
UtilityServer.isHostReachable(SettingsManager.i().server.host, SettingsManager.i().server.port, mCallback);
if(shouldExecute && !UtilityString.isNullOrEmpty(SettingsManager.i().server.host)) {
UtilityServer.isHostReachable(SettingsManager.i().server.host, SettingsManager.i().server.port, mInternalCallback);
handler.postDelayed(this, MILLIS_DELAY);
}
}
};
public void startMonitoring(ISingleValueOperationCallback<Boolean> callback){
this.mCallback = callback;
shouldExecute = true;
public void addCallback(ISingleValueOperationCallback<Boolean> callback){
this.mCallback.add(callback);
handler.post(runnableCode);
}
public void stopMonitoring(){
shouldExecute = false;
public void removeCallback(ISingleValueOperationCallback<Boolean> callback){
this.mCallback.remove(callback);
}
public static void init(){
istance.shouldExecute = true;
istance.handler.post(istance.runnableCode);
}
public static void dispose() {
istance.shouldExecute = false;
}
public static ServerStatusChecker getIstance() {
return istance;
}
}

View File

@@ -9,6 +9,7 @@ import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.utility.UtilityDate;
/**
* Created by GiuseppeS on 06/03/2018.
@@ -49,6 +50,30 @@ public class MtbColt extends EntityBase{
private BigDecimal larghezzaCm;
private BigDecimal altezzaCm;
public void generaFiltroOrdine() throws Exception {
if (this.gestione == null) {
throw new Exception("Impossibile creare il filtro dell'ordine se la gestione non è valorizzata");
}
if (this.dataOrd == null) {
throw new Exception("Impossibile creare il filtro dell'ordine se la data dell'ordine non è valorizzata");
}
if (this.numOrd == null) {
throw new Exception("Impossibile creare il filtro dell'ordine se il numero dell'ordine non è valorizzato");
}
Date dateOrd = UtilityDate.recognizeDate(this.dataOrd);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String dateYMD = sdf.format(dateOrd);
this.filtroOrdini = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ROOT><FILTER><DTB_ORDT><GESTIONE type=\"V\">" + this.gestione + "</GESTIONE><DATA_ORD type=\"D\">" + dateYMD + "</DATA_ORD><NUM_ORD type=\"N\">" + this.numOrd + "</NUM_ORD></DTB_ORDT></FILTER></ROOT>";
}
private ObservableArrayList<MtbColr> mtbColr = new ObservableArrayList<>();
public ObservableArrayList<MtbColr> getMtbColr() {

View File

@@ -0,0 +1,8 @@
package it.integry.integrywmsnative.core.settings;
public final class SharedPrefKeys {
public static final String ACCETTAZIONE_PRINTER = "accettazione_printer";
}

View File

@@ -0,0 +1,16 @@
package it.integry.integrywmsnative.core.utility;
import java.lang.reflect.Array;
import java.util.List;
public class UtilityArray {
public static<T> T[] listToArray(List<T> inputList, Class<T> c) {
T[] result = (T[]) Array.newInstance(c, inputList.size());
result = inputList.toArray(result);
return result;
}
}

View File

@@ -7,7 +7,7 @@ package it.integry.integrywmsnative.core.utility;
public class UtilityString {
public static boolean isNullOrEmpty(String stringToCheck){
return stringToCheck == null || stringToCheck.equalsIgnoreCase("");
return stringToCheck == null || stringToCheck.trim().length() == 0;
}
}

View File

@@ -1,6 +1,8 @@
package it.integry.integrywmsnative.core.wifi;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.TextView;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
@@ -11,10 +13,10 @@ public class WiFiCheckerViewHolder implements ISingleValueOperationCallback<WiFi
private WiFiStatusChecker mWiFiStatusChecker;
public WiFiCheckerViewHolder(Activity activity, int rsid){
mWifiSignalTextView = activity.findViewById(rsid);
public WiFiCheckerViewHolder(Context context, View view, int rsid){
mWifiSignalTextView = view.findViewById(rsid);
mWiFiStatusChecker = new WiFiStatusChecker(activity);
mWiFiStatusChecker = new WiFiStatusChecker(context);
}

View File

@@ -1,6 +1,5 @@
package it.integry.integrywmsnative.gest.accettazione.core;
import android.app.ProgressDialog;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
@@ -12,6 +11,7 @@ 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.core.settings.SettingsManager;
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;
@@ -35,10 +35,10 @@ public class AccettazioneHelper {
}
public void loadOrdini(final ILoadOrdiniCallback callback){
String codMdep = SettingsManager.i().userSession.codMdep;
OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class);
service.listOrdiniInevasi().enqueue(new Callback<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>>() {
service.listOrdiniInevasi(codMdep).enqueue(new Callback<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> call, Response<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> response) {

View File

@@ -17,7 +17,7 @@ import retrofit2.http.Query;
public interface OrdiniAccettazioneRESTConsumerService {
@GET("SM2GetOrdiniAccettazioneInevasi")
Call<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> listOrdiniInevasi();
Call<ServiceRESTResponse<List<OrdineAccettazioneInevasoDTO>>> listOrdiniInevasi(@Query("codMdep") String codMdep);
@GET("WMSGetPickingListAccettazione")
Call<ServiceRESTResponse<List<OrdineAccettazioneDTO>>> pickingListAccettazione(@Query("codBarreBancale") String codBarreBacale);

View File

@@ -1,19 +1,16 @@
package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core;
import android.content.Context;
import android.content.SyncRequest;
import android.databinding.ObservableArrayList;
import android.util.Log;
import com.orhanobut.logger.Logger;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
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;
@@ -167,13 +164,11 @@ public class AccettazioneOrdineInevasoHelper {
}
}
Collections.sort(commessaList, new Comparator<RaggruppaPerCommessaUtilDTO>() {
public int compare(RaggruppaPerCommessaUtilDTO dto1, RaggruppaPerCommessaUtilDTO dto2) {
if(dto1.ragSocCom == null || dto2.codJcom.equalsIgnoreCase("MAG")) return -1;
if(dto2.ragSocCom == null || dto1.codJcom.equalsIgnoreCase("MAG")) return 1;
Collections.sort(commessaList, (dto1, dto2) -> {
if(dto1.ragSocCom == null || dto2.codJcom.equalsIgnoreCase("MAG")) return -1;
if(dto2.ragSocCom == null || dto1.codJcom.equalsIgnoreCase("MAG")) return 1;
return dto1.ragSocCom.compareToIgnoreCase(dto2.ragSocCom);
}
return dto1.ragSocCom.compareToIgnoreCase(dto2.ragSocCom);
});
List<List<OrdineAccettazioneDTO.Riga>> groupedRighe = new ArrayList<>();
@@ -190,11 +185,11 @@ public class AccettazioneOrdineInevasoHelper {
}
}
Collections.sort(tmpList, new Comparator<OrdineAccettazioneDTO.Riga>() {
public int compare(OrdineAccettazioneDTO.Riga obj1, OrdineAccettazioneDTO.Riga obj2) {
return obj1.mtbAart.descrizioneEstesa.compareToIgnoreCase(obj2.mtbAart.descrizioneEstesa);
}
});
Collections.sort(tmpList, (obj1, obj2) -> obj1.mtbAart.descrizioneEstesa.compareToIgnoreCase(obj2.mtbAart.descrizioneEstesa));
for(int i = 0; i < tmpList.size(); i++) {
Logger.d(tmpList.get(i));
}
if(tmpList.size() > 0){
groupedRighe.add(tmpList);
@@ -250,7 +245,11 @@ public class AccettazioneOrdineInevasoHelper {
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).codJcom.equalsIgnoreCase("N/A")){
itemModel.descrizioneGroup = mContext.getString(R.string.warehouse).toUpperCase();
} else {
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;

View File

@@ -168,12 +168,9 @@ public class MainListOrdineAccettazioneAdapter extends RecyclerView.Adapter<Main
qtaTot.setText(rowItem.qtaOrdinata);
groupModelView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mOrdineRowDispatch != null){
mOrdineRowDispatch.onOrdineRowDispatch(rowItem.originalModel);
}
groupModelView.setOnClickListener(view -> {
if(mOrdineRowDispatch != null){
mOrdineRowDispatch.onOrdineRowDispatch(rowItem.originalModel);
}
});

View File

@@ -9,7 +9,7 @@ public class AccettazioneOrdineInevasoOrderBy {
public static String[] descriptions = new String[] {
"Cod articolo fornitore",
"Descrizione articolo",
"Ragione sociale commessa"
"Commessa - Articolo"
};
public enum Enum {

View File

@@ -4,25 +4,24 @@ import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableField;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.res.ResourcesCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.LinearLayoutManager;
import android.text.SpannableString;
import android.widget.Toast;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import br.com.zbra.androidlinq.delegate.Selector;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.CommonRESTException;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.coollection.Coollection;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbColr;
@@ -43,6 +42,8 @@ import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import static br.com.zbra.androidlinq.Linq.stream;
public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallback, IOnOrdineRowDispatchCallback {
public ObservableField<Boolean> isFabVisible = new ObservableField<>();
@@ -179,7 +180,43 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
.setAnnotazioni(noteString)
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
List<String> codAnags =
stream(mOrders)
.select(c -> c.codAnag)
.distinct()
.toList();
if(codAnags != null && codAnags.size() == 1){
mtbColt.setCodAnag(codAnags.get(0));
}
List<String> rifOrds =
stream(mOrders)
.select(c -> c.rifOrd)
.distinct()
.toList();
if(rifOrds != null && rifOrds.size() == 1){
mtbColt.setRifOrd(rifOrds.get(0));
}
List<String> numDataOrds =
stream(mOrders)
.select(value -> ("" + value.numero) + value.data)
.distinct()
.toList();
if(numDataOrds != null && numDataOrds.size() == 1){
mtbColt.setNumOrd(mOrders.get(0).numero);
mtbColt.setDataOrd(mOrders.get(0).data);
try {
mtbColt.generaFiltroOrdine();
} catch (Exception ex) {
DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(ex.getMessage()), null, null).show();
return;
}
}
ColliMagazzinoRESTConsumer.saveCollo(mtbColt, new ISimpleOperationCallback<MtbColt>() {
@@ -187,7 +224,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
public void onSuccess(MtbColt value) {
isFabVisible.set(false);
value.setMtbColr(new ObservableArrayList<MtbColr>());
value.setMtbColr(new ObservableArrayList<>());
mArticoliInColloBottomSheetViewModel.mtbColt.set(value);
@@ -238,9 +275,39 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
@Override
public void onColloClosed() {
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
if(mArticoliInColloBottomSheetViewModel.mtbColt.get() != null) {
final ProgressDialog progress = ProgressDialog.show(mActivity, mActivity.getText(R.string.waiting),
mActivity.getText(R.string.loading) + " ...", true);
progress.show();
PrinterRESTConsumer.printCollo(
"Brother MFC-L2700DW series Printer",
mArticoliInColloBottomSheetViewModel.mtbColt.get(),
1, "EtichettaBancale", new ISimpleOperationCallback<Object>() {
@Override
public void onSuccess(Object value) {
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
isFabVisible.set(true);
progress.dismiss();
}
@Override
public void onFailed(Exception ex) {
progress.dismiss();
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
if(errorMessage == null) errorMessage = ex.getMessage();
DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(errorMessage), null, null).show();
}
});
}
isFabVisible.set(true);
}
@Override

View File

@@ -106,43 +106,31 @@ public class LoginViewModel {
final String host = u.getHost();
final int port = u.getPort();
UtilityServer.isHostReachable(host, port, new ISingleValueOperationCallback<Boolean>() {
@Override
public void onResult(Boolean value) {
UtilityServer.isHostReachable(host, port, value1 -> {
if(value){ //Is online
loginHelper.doLogin(host, port, new ISimpleOperationCallback<LoginDTO>() {
@Override
public void onSuccess(final LoginDTO value) {
if(value1){ //Is online
loginHelper.doLogin(host, port, new ISimpleOperationCallback<LoginDTO>() {
@Override
public void onSuccess(final LoginDTO value1) {
SettingsManager.iDB().setAvailableProfiles(value.availableProfiles);
SettingsManager.iDB().setAvailableProfiles(value1.availableProfiles);
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
mActivity.runOnUiThread(() -> onLoginSuccess(
"Benvenuto",
Html.fromHtml("Ciao <b>" + value1.full_name + "</b>, la Integry le augura di svolgere al meglio il suo lavoro"),
host, port, value1.availableProfiles));
onLoginSuccess(
"Benvenuto",
Html.fromHtml("Ciao <b>" + value.full_name + "</b>, la Integry le augura di svolgere al meglio il suo lavoro"),
host, port, value.availableProfiles);
}
@Override
public void onFailed(final Exception ex) {
onLoginFailed(new SpannableString(ex.getMessage().toString()));
}
});
}
});
}
@Override
public void onFailed(final Exception ex) {
onLoginFailed(new SpannableString(ex.getMessage().toString()));
}
});
} else { //Is not online
onLoginFailed(Html.fromHtml(String.format(mActivity.getText(R.string.server_not_reachable).toString(), host, port)));
}
} else { //Is not online
onLoginFailed(Html.fromHtml(String.format(mActivity.getText(R.string.server_not_reachable).toString(), host, port)));
}
});

View File

@@ -0,0 +1,102 @@
package it.integry.integrywmsnative.gest.main;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import net.cachapa.expandablelayout.ExpandableLayout;
import butterknife.BindView;
import butterknife.ButterKnife;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.wifi.WiFiCheckerViewHolder;
/**
* A simple {@link Fragment} subclass.
* Use the {@link MainFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class MainFragment extends Fragment {
@BindView(R.id.no_connection_top_layout) ExpandableLayout mNoConnectionLayout;
private View mView;
public MainFragment() {
// Required empty public constructor
}
public static MainFragment newInstance() {
MainFragment fragment = new MainFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mView = inflater.inflate(R.layout.fragment_main, container, false);
ButterKnife.bind(this, mView);
init();
return mView;
}
private void init(){
ServerStatusChecker.getIstance().addCallback(new ISingleValueOperationCallback<Boolean>() {
@Override
public void onResult(Boolean value) {
if(value && mNoConnectionLayout.isExpanded()){
collapseNoConnectionLayout();
} else if(!value && !mNoConnectionLayout.isExpanded()){
expandNoConnectionLayout();
}
}
});
WiFiCheckerViewHolder wiFiCheckerViewHolder = new WiFiCheckerViewHolder(getActivity(), mView, R.id.wifi_power);
wiFiCheckerViewHolder.startMonitoring();
}
private void collapseNoConnectionLayout(){
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mNoConnectionLayout.collapse(true);
}
});
}
private void expandNoConnectionLayout(){
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mNoConnectionLayout.expand(true);
}
});
}
}

View File

@@ -0,0 +1,55 @@
package it.integry.integrywmsnative.gest.settings;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import butterknife.ButterKnife;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.databinding.FragmentMainSettingsBinding;
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ITitledFragment;
public class MainSettingsFragment extends Fragment implements ITitledFragment {
private FragmentMainSettingsBinding mBinding;
public MainSettingsFragment() {
// Required empty public constructor
}
public static MainSettingsFragment newInstance() {
MainSettingsFragment fragment = new MainSettingsFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public String getTitle(Context context){
return context.getText(R.string.settings_category).toString();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//init();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_settings, container, false);
ButterKnife.bind(this, mBinding.getRoot());
return mBinding.getRoot();
}
}

View File

@@ -0,0 +1,99 @@
package it.integry.integrywmsnative.gest.settings;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.EditTextPreference;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.support.v7.preference.PreferenceScreen;
import android.support.v7.view.ContextThemeWrapper;
import android.util.TypedValue;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.settings.SharedPrefKeys;
import it.integry.integrywmsnative.core.utility.UtilityArray;
import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ITitledFragment;
import static br.com.zbra.androidlinq.Linq.stream;
public class SettingsPreferenceFragment extends PreferenceFragmentCompat implements ITitledFragment {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
PrinterRESTConsumer.getAvailablePrinters(new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(final List<String> availablePrinters) {
initScreen(availablePrinters);
}
@Override
public void onFailed(Exception ex) {
}
});
}
@Override
public String getTitle(Context context) {
return context.getText(R.string.settings_category).toString();
}
private void initScreen(List<String> availablePrinters) {
// Load the Preferences from the XML file
Context activityContext = getActivity();
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(activityContext);
setPreferenceScreen(preferenceScreen);
TypedValue themeTypedValue = new TypedValue();
activityContext.getTheme().resolveAttribute(R.attr.preferenceTheme, themeTypedValue, true);
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(activityContext, themeTypedValue.resourceId);
// We instance each Preference using our ContextThemeWrapper object
PreferenceCategory preferenceCategory = new PreferenceCategory(contextThemeWrapper);
preferenceCategory.setTitle("Category test");
EditTextPreference editTextPreference = new EditTextPreference(contextThemeWrapper);
editTextPreference.setKey("edittext");
editTextPreference.setTitle("EditText test");
CheckBoxPreference checkBoxPreference = new CheckBoxPreference(contextThemeWrapper);
checkBoxPreference.setTitle("Checkbox test");
checkBoxPreference.setKey("checkbox");
checkBoxPreference.setChecked(true);
availablePrinters.add(0, "Nessuna");
String[] availablePritersArray = UtilityArray.listToArray(availablePrinters, String.class);
ListPreference listPreferece = new ListPreference(contextThemeWrapper);
listPreferece.setTitle("Current printer");
listPreferece.setKey(SharedPrefKeys.ACCETTAZIONE_PRINTER);
listPreferece.setEntries(availablePritersArray);
listPreferece.setEntryValues(availablePritersArray);
// It's REALLY IMPORTANT to add Preferences with child Preferences to the Preference Hierarchy first
// Otherwise, the PreferenceManager will fail to load their keys
// First we add the category to the root PreferenceScreen
getPreferenceScreen().addPreference(preferenceCategory);
// Then their child to it
preferenceCategory.addPreference(editTextPreference);
preferenceCategory.addPreference(checkBoxPreference);
preferenceCategory.addPreference(listPreferece);
}
}