diff --git a/app/build.gradle b/app/build.gradle
index 40f2f587..a9d66d66 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 121
- def appVersionName = '1.11.2'
+ def appVersionCode = 123
+ def appVersionName = '1.11.4'
signingConfigs {
release {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9c827172..73effea7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
-
+
{
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
- List codMarts = Stream.of(mtbColt.getMtbColr())
- .map(MtbColr::getCodMart)
- .withoutNulls()
- .distinct()
- .toList();
-
- ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
-
- if (arts != null && arts.size() > 0) {
- for (MtbColr mtbColr : mtbColt.getMtbColr()) {
-
- MtbAart foundMtbAart = null;
-
- List mtbAartStream = Stream.of(arts)
- .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())).toList();
-
- if (mtbAartStream != null && mtbAartStream.size() > 0) {
- foundMtbAart = mtbAartStream.get(0);
- }
-
- mtbColr.setMtbAart(foundMtbAart);
- mtbColr.setGestione(mtbColt.getGestione());
- mtbColr.setSerCollo(mtbColt.getSerCollo());
- mtbColr.setNumCollo(mtbColt.getNumCollo());
- mtbColr.setDataCollo(mtbColt.getDataColloS());
- }
-
-
- onComplete.run(mtbColt);
- }
-
- }, onFailed);
-
+ List mtbColtList = new ArrayList<>();
+ mtbColtList.add(mtbColt);
+ fillMtbAartsOfMtbColts(mtbColtList, mtbColts -> onComplete.run(mtbColts.get(0)), onFailed);
} else {
onComplete.run(mtbColt);
}
@@ -470,6 +425,47 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
+
+ public static void fillMtbAartsOfMtbColts(List mtbColts, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ List codMarts = new ArrayList<>();
+
+ for (MtbColt mtbColt : mtbColts) {
+ codMarts.addAll(Stream.of(mtbColt.getMtbColr())
+ .map(MtbColr::getCodMart)
+ .withoutNulls()
+ .distinct()
+ .toList());
+ }
+
+
+ ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
+
+ if (arts != null && arts.size() > 0) {
+ for (MtbColt mtbColt : mtbColts) {
+ for (MtbColr mtbColr : mtbColt.getMtbColr()) {
+
+ MtbAart foundMtbAart = null;
+
+ List mtbAartStream = Stream.of(arts)
+ .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())).toList();
+
+ if (mtbAartStream != null && mtbAartStream.size() > 0) {
+ foundMtbAart = mtbAartStream.get(0);
+ }
+
+ mtbColr.setMtbAart(foundMtbAart);
+ mtbColr.setGestione(mtbColt.getGestione());
+ mtbColr.setSerCollo(mtbColt.getSerCollo());
+ mtbColr.setNumCollo(mtbColt.getNumCollo());
+ mtbColr.setDataCollo(mtbColt.getDataColloS());
+ }
+ }
+ }
+
+ onComplete.run(mtbColts);
+ }, onFailed);
+ }
+
public static void getMultipleByTestate(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) {
ArrayList resultMtbColt = new ArrayList<>();
cyclicGetMultipleByTestate(testate.iterator(), onlyResiduo, resultMtbColt, () -> {
@@ -631,4 +627,23 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
+
+
+ public static void retrieveBasketColli(RunnableArgs> onComplete, RunnableArgs onFailed) {
+ ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
+ colliMagazzinoRESTConsumerService.getColliInBasket(SettingsManager.i().getUserSession().getDepo().getCodMdep()).enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "GetBySSCC", mtbColts -> {
+ fillMtbAartsOfMtbColts(mtbColts, onComplete, onFailed);
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ if(onFailed != null) onFailed.run(new Exception(t));
+ }
+ });
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java
index e5471436..025b83d1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java
@@ -2,11 +2,14 @@ package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.JsonObject;
+import java.util.List;
+
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.model.MtbColt;
import retrofit2.Call;
import retrofit2.http.Body;
+import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
@@ -18,4 +21,7 @@ public interface ColliMagazzinoRESTConsumerService {
@POST("getColloByBarcode")
Call> getColloByBarcode(@Query("codBarreCollo") String sscc, @Query("onlyResiduo") boolean onlyResiduo, @Query("throwExcIfNull") boolean throwExcIfNull);
+ @GET("getColliInBasket")
+ Call>> getColliInBasket(@Query("codMdep") String codMdep);
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java
index 27d2b48b..03c8554c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java
@@ -22,20 +22,125 @@ public class SettingsModel {
public String codAzienda;
public String host;
public int port;
+
+ public String getCodAzienda() {
+ return codAzienda;
+ }
+
+ public Server setCodAzienda(String codAzienda) {
+ this.codAzienda = codAzienda;
+ return this;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public Server setHost(String host) {
+ this.host = host;
+ return this;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public Server setPort(int port) {
+ this.port = port;
+ return this;
+ }
}
public static class User {
public String username;
public String password;
public String fullname;
+
+ public String getUsername() {
+ return username;
+ }
+
+ public User setUsername(String username) {
+ this.username = username;
+ return this;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public User setPassword(String password) {
+ this.password = password;
+ return this;
+ }
+
+ public String getFullname() {
+ return fullname;
+ }
+
+ public User setFullname(String fullname) {
+ this.fullname = fullname;
+ return this;
+ }
}
public static class UserSession {
public String profileDB;
public AvailableCodMdepsDTO depo;
public Integer defaultOrdinamentoPickingAccettazione = 0;
-// public String codMdep;
+
+ public String getProfileDB() {
+ return profileDB;
+ }
+
+ public UserSession setProfileDB(String profileDB) {
+ this.profileDB = profileDB;
+ return this;
+ }
+
+ public AvailableCodMdepsDTO getDepo() {
+ return depo;
+ }
+
+ public UserSession setDepo(AvailableCodMdepsDTO depo) {
+ this.depo = depo;
+ return this;
+ }
+
+ public Integer getDefaultOrdinamentoPickingAccettazione() {
+ return defaultOrdinamentoPickingAccettazione;
+ }
+
+ public UserSession setDefaultOrdinamentoPickingAccettazione(Integer defaultOrdinamentoPickingAccettazione) {
+ this.defaultOrdinamentoPickingAccettazione = defaultOrdinamentoPickingAccettazione;
+ return this;
+ }
}
+ public Server getServer() {
+ return server;
+ }
+ public SettingsModel setServer(Server server) {
+ this.server = server;
+ return this;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public SettingsModel setUser(User user) {
+ this.user = user;
+ return this;
+ }
+
+ public UserSession getUserSession() {
+ return userSession;
+ }
+
+ public SettingsModel setUserSession(UserSession userSession) {
+ this.userSession = userSession;
+ return this;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java
index bca2182f..c3d4f623 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java
@@ -44,8 +44,8 @@ public class UpdatesManager {
.setDisplay(Display.DIALOG)
.setUpdateFrom(UpdateFrom.JSON)
.setUpdateJSON(currentVersionUrl)
+ .setButtonDoNotShowAgain(null)
.setButtonUpdateClickListener((dialog, which) -> {
-
installAPK(context, currentDownloadUrl);
});
appUpdater.start();
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java
index fe963a00..571f2c1f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java
@@ -74,12 +74,25 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter {
if(mOnItemClickListener != null) {
- mOnItemClickListener.onItemClick(item, position);
+ mOnItemClickListener.onItemClick(mtbColr, position);
}
});
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java
index 15f12385..e0d97260 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java
@@ -288,7 +288,7 @@ public class ProdRecuperoMaterialeViewModel {
};
if(sourceMtbColt != null) saveRunnable.run(sourceMtbColt);
- else DialogScanOrCreateLU.make(mContext, false, false, saveRunnable).show();
+ else DialogScanOrCreateLU.make(mContext, true, false, saveRunnable).show();
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java
index cd6dee09..94d0cce0 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java
@@ -95,7 +95,8 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter ordiniSelezionati = getSelectedData();
@@ -103,23 +104,40 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter 0){
+ usedCnf = BigDecimal.ONE;
+ }
usedCol = usedCnf.multiply(mtbColr.getQtaCnf()).setScale(0,BigDecimal.ROUND_FLOOR);
} else {
usedCol = residuoCol.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR);
- usedCnf = usedCol.divide(mtbColr.getQtaCnf()).setScale(0, BigDecimal.ROUND_CEILING);
+ if (usedCol.compareTo(BigDecimal.ZERO) <= 0 && offsetCol.compareTo(BigDecimal.ZERO) > 0){
+ usedCol = BigDecimal.ONE;
+ }
+ usedCnf = usedCol.divide(mtbColr.getQtaCnf()).setScale(3, BigDecimal.ROUND_FLOOR);
}
- offset = offset.subtract(usedCol);
+ offsetCol = offsetCol.subtract(usedCol);
+ offsetCnf = offsetCnf.subtract(usedCnf);
c.setQtaCol(usedCol.floatValue());
c.setNumCnf(usedCnf.floatValue());
}
- if (ordiniSelezionati.size() > 0 && offset.floatValue() != 0) {
+ if (ordiniSelezionati.size() > 0) {
CheckableOrdineLavoro majorOrder = Stream.of(ordiniSelezionati).max((o1, o2) -> Integer.compare(o1.getItem().getOrdineLav().getHrNum(), o2.getItem().getOrdineLav().getHrNum())).get();
if (majorOrder == null) {
majorOrder = ordiniSelezionati.get(0);
}
- majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offset.floatValue());
+ if (offsetCnf.floatValue() != 0 || offsetCol.floatValue() != 0){
+ if ( SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissa())) {
+ majorOrder.setNumCnf(majorOrder.getNumCnf().get() + offsetCnf.floatValue());
+ majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offsetCol.floatValue());
+ } else {
+ majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offsetCol.floatValue());
+ majorOrder.setNumCnf(majorOrder.getQtaCol().get() / mtbColr.getQtaCnf().floatValue());
+ }
+
+
+ }
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java
index 99a30c7c..43d4dca2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java
@@ -86,7 +86,7 @@ public class ProdVersamentoMaterialViewModel {
public void openLU() {
- DialogScanOrCreateLU.make(mContext, true, true, false, mtbColt -> {
+ DialogScanOrCreateLU.make(mContext, false, false, true, false, mtbColt -> {
if (mtbColt == null) {
((IPoppableActivity) mContext).pop();
} else if ((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java
index 760af892..6d574a10 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java
@@ -67,10 +67,8 @@ public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter
}
public void openLU() {
- DialogScanOrCreateLU.make(mContext, false, false, mtbColt -> {
+ DialogScanOrCreateLU.make(mContext, true, false, mtbColt -> {
if(mtbColt == null) {
((IPoppableActivity)mContext).pop();
} else {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java
index 8b3005e2..177f2a2d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java
@@ -21,7 +21,9 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
+import it.integry.integrywmsnative.core.model.GtbAnag;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -32,30 +34,30 @@ public class DialogUltimeConsegneFiltroAvanzato {
private AlertDialog mAlert;
private Context mContext;
private DialogUltimeConsegneFiltroAvanzatoViewModel mBaseViewModel;
- private RunnableArgss, DialogUltimeConsegneFiltroAvanzatoViewModel> mOnDismiss;
+ private RunnableArgs mOnDismiss;
private ArrayAdapter arrayAdapterRagSoc;
- private List mItems;
- private List mFilteredItems;
+ private List mItems;
+ private List mFilteredItems;
- private Predicate currentRagSocPredicate = null;
- private Predicate currentDataDocPredicate = null;
+ private Predicate currentRagSocPredicate = null;
+ private Predicate currentDataDocPredicate = null;
public static AlertDialog make(final Context context,
- final List items,
+ final List items,
DialogUltimeConsegneFiltroAvanzatoViewModel baseViewModel,
- RunnableArgss, DialogUltimeConsegneFiltroAvanzatoViewModel> onDismiss) {
+ RunnableArgs onDismiss) {
return new DialogUltimeConsegneFiltroAvanzato(context, items, baseViewModel, onDismiss).mAlert;
}
public DialogUltimeConsegneFiltroAvanzato(final Context context,
- final List items,
+ final List items,
DialogUltimeConsegneFiltroAvanzatoViewModel baseViewModel,
- RunnableArgss, DialogUltimeConsegneFiltroAvanzatoViewModel> onDismiss) {
+ RunnableArgs onDismiss) {
mContext = context;
mItems = items;
mBaseViewModel = baseViewModel;
@@ -89,7 +91,7 @@ public class DialogUltimeConsegneFiltroAvanzato {
mAlert.setOnDismissListener(dialogInterface -> {
- if(mOnDismiss != null) mOnDismiss.run(mFilteredItems, viewModel);
+ if(mOnDismiss != null) mOnDismiss.run(viewModel);
});
refreshList();
@@ -144,26 +146,13 @@ public class DialogUltimeConsegneFiltroAvanzato {
refreshList();
});
-
- BindableString.resetListeners(viewModel.dataDoc);
- BindableString.registerListener(viewModel.dataDoc, value -> {
- if (UtilityString.isNullOrEmpty(value)) currentDataDocPredicate = null;
- else {
- currentDataDocPredicate = o -> o.getDataDocD().equals(viewModel.dataDocDate);
- }
-
- refreshList();
-
- arrayAdapterRagSoc.clear();
- arrayAdapterRagSoc.addAll(getAvailableRagSocs(true));
- });
}
private List getAvailableRagSocs(boolean skipRecalc) {
if(currentDataDocPredicate == null){
mFilteredItems = mItems;
} else if(!skipRecalc){
- Stream tmpStream = Stream.of(mItems)
+ Stream tmpStream = Stream.of(mItems)
.filter(x ->
(currentDataDocPredicate == null || (currentDataDocPredicate.test(x)))
);
@@ -171,7 +160,7 @@ public class DialogUltimeConsegneFiltroAvanzato {
mFilteredItems = tmpStream.toList();
}
- return Stream.of(mFilteredItems).map(DocumentoResoDTO::getRagSoc).distinct().withoutNulls().toList();
+ return Stream.of(mFilteredItems).map(x -> x.getCodAnag() + " - " + x.getRagSoc()).distinct().withoutNulls().toList();
}
@@ -180,7 +169,7 @@ public class DialogUltimeConsegneFiltroAvanzato {
if(currentRagSocPredicate == null && currentDataDocPredicate == null){
mFilteredItems = mItems;
} else {
- Stream tmpStream = Stream.of(mItems)
+ Stream tmpStream = Stream.of(mItems)
.filter(x ->
(currentRagSocPredicate == null || (currentRagSocPredicate.test(x))) &&
(currentDataDocPredicate== null || (currentDataDocPredicate.test(x)))
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java
index 96575640..85fdde8b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java
@@ -8,6 +8,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import it.integry.integrywmsnative.core.model.GtbAnag;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
@@ -22,7 +23,27 @@ import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
public class UltimeConsegneClienteRESTConsumer {
- public static void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, int limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public static void getAvailableCodAnagClienti(RunnableArgs> onComplete, RunnableArgs onFailed) {
+ String sql = "SELECT DISTINCT gtb_anag.cod_anag, gtb_anag.rag_soc " +
+ "FROM gtb_anag " +
+ "INNER JOIN vtb_clie ON vtb_clie.cod_anag = gtb_anag.cod_anag " +
+ "WHERE flag_stato = 'A'";
+
+ Type typeOfObjectsList = new TypeToken>() {}.getType();
+ SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(ArrayList value) {
+ if(onComplete != null) onComplete.run(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+ }
+
+ public static void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) {
String sql = "SELECT consegne.*, " +
" rag_soc," +
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java
index c0afc93a..3a36e6db 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java
@@ -7,12 +7,14 @@ import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
+import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.model.GtbAnag;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
@@ -31,52 +33,36 @@ public class UltimeConsegneClienteViewModel {
private List mItems;
private List mRenderedItems = new ArrayList<>();
+ private List mAvailableGtbAnags = null;
+
private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel;
public UltimeConsegneClienteViewModel(Context context, FragmentMainUltimeConsegneClienteBinding binding) {
this.mContext = context;
this.mBinding = binding;
- this.initList();
-
this.mBinding.mainFab.hide();
this.mBinding.mainFab.setOnClickListener(v -> {
dispatchConsegne();
});
+
+ openFilterDialog();
}
public void openFilterDialog() {
- DialogUltimeConsegneFiltroAvanzato.make(mContext, mItems, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
- mAppliedFilterViewModel = filter;
-
- if(filteredOrderList != null){
-
- refreshItems(filteredOrderList);
- }
-
- }).show();
- }
-
- private void initList() {
-
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
- UltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti(
- SettingsManager.i().userSession.depo.getCodMdep(),
- null,
- null,
- 100,
- 365,
- consegne -> {
- this.mItems = consegne;
+ UltimeConsegneClienteRESTConsumer.getAvailableCodAnagClienti(gtbAnags -> {
+ mAvailableGtbAnags = gtbAnags;
+ progressDialog.dismiss();
- this.initDataAdapter(consegne);
- refreshItems(consegne);
-
- progressDialog.dismiss();
- }, ex -> {
- UtilityExceptions.defaultException(mContext, ex, progressDialog);
- });
+ DialogUltimeConsegneFiltroAvanzato.make(mContext, gtbAnags, mAppliedFilterViewModel, (filter) -> {
+ mAppliedFilterViewModel = filter;
+ refreshItems();
+ }).show();
+ }, ex -> {
+ UtilityExceptions.defaultException(mContext, ex, progressDialog);
+ });
}
private void initDataAdapter(ArrayList dataset) {
@@ -90,12 +76,43 @@ public class UltimeConsegneClienteViewModel {
}
- private void refreshItems(List items){
- mBinding.emptyView.setVisibility((items != null && items.size() > 0) ? View.GONE : View.VISIBLE);
+ private void refreshItems(){
- mRenderedItems.clear();
- if(items != null) mRenderedItems.addAll(items);
- mAdapter.updateItems(mRenderedItems);
+ Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
+
+ String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null;
+ String currentCodAnagFilter = null;
+
+ Optional singleGtbAnag = Stream.of(mAvailableGtbAnags)
+ .filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter))
+ .findSingle();
+
+ if(singleGtbAnag.isPresent()) {
+ currentCodAnagFilter = singleGtbAnag.get().getCodAnag();
+ }
+
+ UltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti(
+ SettingsManager.i().userSession.depo.getCodMdep(),
+ currentCodAnagFilter,
+ null,
+ null,
+ 365,
+ consegne -> {
+
+ this.mItems = consegne;
+
+ this.initDataAdapter(consegne);
+ mBinding.emptyView.setVisibility((this.mItems != null && this.mItems.size() > 0) ? View.GONE : View.VISIBLE);
+
+ mRenderedItems.clear();
+ if(this.mItems != null) mRenderedItems.addAll(this.mItems);
+ mAdapter.updateItems(mRenderedItems);
+
+ progressDialog.dismiss();
+
+ }, ex -> {
+ UtilityExceptions.defaultException(mContext, ex, progressDialog);
+ });
}
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
index edcb109c..7c608c24 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
@@ -14,6 +14,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.util.ArrayList;
@@ -21,6 +22,7 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
+import it.integry.integrywmsnative.core.model.GtbAnag;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
@@ -30,6 +32,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
+import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
@@ -42,14 +45,7 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
private Runnable mOnPreDestroy;
private ElevatedToolbar mToolbar;
- private FragmentUltimiArriviFornitoreBinding mBinding;
-
- private List mItems;
- private List mRenderedItems = new ArrayList<>();
-
- private UltimiArriviFornitoreListAdapter mAdapter;
-
- private DialogUltimiArriviFornitoreFiltroAvanzato.DialogUltimiArriviFiltroAvanzatoViewModel mAppliedFilterViewModel;
+ private UltimiArriviFornitoreViewModel mViewModel;
public UltimiArriviFornitoreFragment() {
// Required empty public constructor
@@ -68,14 +64,14 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
- mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultimi_arrivi_fornitore, container, false);
+ FragmentUltimiArriviFornitoreBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_ultimi_arrivi_fornitore, container, false);
- mBinding.setViewmodel(this);
+ mViewModel = new UltimiArriviFornitoreViewModel(getActivity(), mBinding);
+
+ mBinding.setViewmodel(mViewModel);
mToolbar.setRecyclerView(mBinding.recyclerView);
- this.initView();
-
// Inflate the layout for this fragment
return mBinding.getRoot();
}
@@ -104,98 +100,11 @@ public class UltimiArriviFornitoreFragment extends Fragment implements ITitledFr
- private void initView() {
- this.initList();
-
- this.mBinding.mainFab.hide();
- this.mBinding.mainFab.setOnClickListener(v -> {
- dispatchConsegne();
- });
-
- }
-
- private void initList() {
- Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(getActivity());
-
- UltimiArriviFornitoreRESTConsumer.getUltimeConsegneFornitori(
- SettingsManager.i().userSession.depo.getCodMdep(),
- null,
- null,
- consegne -> {
- this.mItems = consegne;
-
- this.initDataAdapter(consegne);
- refreshItems(consegne);
-
- progressDialog.dismiss();
- }, ex -> {
- UtilityExceptions.defaultException(getActivity(), ex, progressDialog);
- });
- }
-
-
-
- private void initDataAdapter(ArrayList dataset) {
- mAdapter = new UltimiArriviFornitoreListAdapter(getActivity(), dataset);
- mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
-
- mBinding.recyclerView.setHasFixedSize(true);
- mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
- mBinding.recyclerView.setAdapter(mAdapter);
- mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
-
- }
-
-
- private void onSingleSelectionChanged(DocumentoResoDTO dto) {
- List selectedOrders = getSelectedItems();
-
- if(dto.isSelected()) {
- Stream.of(selectedOrders)
- .filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc()))
- .forEach(x -> x.setSelected(false));
- }
-
- if(selectedOrders != null && selectedOrders.size() > 0) {
- mBinding.mainFab.show();
- }
- else {
- mBinding.mainFab.hide();
- }
- }
-
- private List getSelectedItems() {
- return Stream.of(this.mItems)
- .filter(DocumentoResoDTO::isSelected)
- .toList();
- }
-
-
- private void dispatchConsegne() {
- List selectedConsegne = getSelectedItems();
-
- PickingResiActivity.startActivity(getActivity(), getText(R.string.ultime_arrivi_fornitore_title).toString(), selectedConsegne, -1);
- }
-
@Override
public void onFilterClick() {
- DialogUltimiArriviFornitoreFiltroAvanzato.make(getActivity(), mItems, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
- mAppliedFilterViewModel = filter;
-
- if(filteredOrderList != null){
-
- refreshItems(filteredOrderList);
- }
-
- }).show();
+ mViewModel.openFilterDialog();
}
- private void refreshItems(List items){
- mBinding.emptyView.setVisibility((items != null && items.size() > 0) ? View.GONE : View.VISIBLE);
- mRenderedItems.clear();
- if(items != null) mRenderedItems.addAll(items);
- mAdapter.updateItems(mRenderedItems);
- }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java
new file mode 100644
index 00000000..edd936b9
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java
@@ -0,0 +1,154 @@
+package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.view.View;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.annimon.stream.Optional;
+import com.annimon.stream.Stream;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.model.GtbAnag;
+import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
+import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
+import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
+import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
+
+public class UltimiArriviFornitoreViewModel {
+
+ private Context mContext;
+ private FragmentUltimiArriviFornitoreBinding mBinding;
+
+ private List mItems;
+ private List mRenderedItems = new ArrayList<>();
+
+ private List mAvailableGtbAnags = null;
+
+ private UltimiArriviFornitoreListAdapter mAdapter;
+
+ private DialogUltimiArriviFornitoreFiltroAvanzato.DialogUltimiArriviFiltroAvanzatoViewModel mAppliedFilterViewModel;
+
+ public UltimiArriviFornitoreViewModel(Context context, FragmentUltimiArriviFornitoreBinding binding) {
+ this.mContext = context;
+ this.mBinding = binding;
+
+ this.mBinding.mainFab.hide();
+ this.mBinding.mainFab.setOnClickListener(v -> {
+ dispatchConsegne();
+ });
+
+ openFilterDialog();
+ }
+
+
+
+ private void initDataAdapter(ArrayList dataset) {
+ mAdapter = new UltimiArriviFornitoreListAdapter(mContext, dataset);
+ mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
+
+ mBinding.recyclerView.setHasFixedSize(true);
+ mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext));
+ mBinding.recyclerView.setAdapter(mAdapter);
+ mBinding.fastscroll.setRecyclerView(mBinding.recyclerView);
+
+ }
+
+
+ public void openFilterDialog() {
+ Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
+
+ UltimiArriviFornitoreRESTConsumer.getAvailableCodAnagFornitori(gtbAnags -> {
+ mAvailableGtbAnags = gtbAnags;
+ progressDialog.dismiss();
+
+ DialogUltimiArriviFornitoreFiltroAvanzato.make(mContext, mAvailableGtbAnags, mAppliedFilterViewModel, (filter) -> {
+ mAppliedFilterViewModel = filter;
+ refreshItems();
+ }).show();
+ }, ex -> {
+ UtilityExceptions.defaultException(mContext, ex, progressDialog);
+ });
+ }
+
+
+ private void dispatchConsegne() {
+ List selectedConsegne = getSelectedItems();
+
+ PickingResiActivity.startActivity(mContext, mContext.getText(R.string.ultime_arrivi_fornitore_title).toString(), selectedConsegne, -1);
+ }
+
+ private List getSelectedItems() {
+ return Stream.of(this.mItems)
+ .filter(DocumentoResoDTO::isSelected)
+ .toList();
+ }
+
+
+ private void refreshItems(){
+
+ Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
+
+ String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null;
+ String currentCodAnagFilter = null;
+
+ Optional singleGtbAnag = Stream.of(mAvailableGtbAnags)
+ .filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter))
+ .findSingle();
+
+ if(singleGtbAnag.isPresent()) {
+ currentCodAnagFilter = singleGtbAnag.get().getCodAnag();
+ }
+
+
+ UltimiArriviFornitoreRESTConsumer.getUltimeConsegneFornitori(
+ SettingsManager.i().userSession.depo.getCodMdep(),
+ currentCodAnagFilter,
+ null,
+ null,
+ 365,
+ consegne -> {
+ this.mItems = consegne;
+
+ this.initDataAdapter(consegne);
+
+ mBinding.emptyView.setVisibility((this.mItems != null && this.mItems.size() > 0) ? View.GONE : View.VISIBLE);
+
+ mRenderedItems.clear();
+ if(this.mItems != null) mRenderedItems.addAll(this.mItems);
+ mAdapter.updateItems(mRenderedItems);
+
+ progressDialog.dismiss();
+ }, ex -> {
+ UtilityExceptions.defaultException(mContext, ex, progressDialog);
+ });
+
+
+ }
+
+
+ private void onSingleSelectionChanged(DocumentoResoDTO dto) {
+ List selectedOrders = getSelectedItems();
+
+ if(dto.isSelected()) {
+ Stream.of(selectedOrders)
+ .filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc()))
+ .forEach(x -> x.setSelected(false));
+ }
+
+ if(selectedOrders != null && selectedOrders.size() > 0) {
+ mBinding.mainFab.show();
+ }
+ else {
+ mBinding.mainFab.hide();
+ }
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/dialog/DialogUltimiArriviFornitoreFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/dialog/DialogUltimiArriviFornitoreFiltroAvanzato.java
index d0f4a6b5..55756808 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/dialog/DialogUltimiArriviFornitoreFiltroAvanzato.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/dialog/DialogUltimiArriviFornitoreFiltroAvanzato.java
@@ -21,7 +21,9 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
+import it.integry.integrywmsnative.core.model.GtbAnag;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -34,29 +36,29 @@ public class DialogUltimiArriviFornitoreFiltroAvanzato {
private AlertDialog mAlert;
private Context mContext;
private DialogUltimiArriviFiltroAvanzatoViewModel mBaseViewModel;
- private RunnableArgss, DialogUltimiArriviFiltroAvanzatoViewModel> mOnDismiss;
+ private RunnableArgs mOnDismiss;
private ArrayAdapter arrayAdapterRagSoc;
- private List mItems;
- private List mFilteredItems;
+ private List mItems;
+ private List mFilteredItems;
- private Predicate currentRagSocPredicate = null;
- private Predicate currentDataDocPredicate = null;
+ private Predicate currentRagSocPredicate = null;
+ private Predicate currentDataDocPredicate = null;
public static AlertDialog make(final Context context,
- final List items,
+ final List items,
DialogUltimiArriviFiltroAvanzatoViewModel baseViewModel,
- RunnableArgss, DialogUltimiArriviFiltroAvanzatoViewModel> onDismiss) {
+ RunnableArgs onDismiss) {
return new DialogUltimiArriviFornitoreFiltroAvanzato(context, items, baseViewModel, onDismiss).mAlert;
}
public DialogUltimiArriviFornitoreFiltroAvanzato(final Context context,
- final List items,
+ final List items,
DialogUltimiArriviFiltroAvanzatoViewModel baseViewModel,
- RunnableArgss, DialogUltimiArriviFiltroAvanzatoViewModel> onDismiss) {
+ RunnableArgs onDismiss) {
mContext = context;
mItems = items;
mBaseViewModel = baseViewModel;
@@ -90,7 +92,7 @@ public class DialogUltimiArriviFornitoreFiltroAvanzato {
mAlert.setOnDismissListener(dialogInterface -> {
- if(mOnDismiss != null) mOnDismiss.run(mFilteredItems, viewModel);
+ if(mOnDismiss != null) mOnDismiss.run(viewModel);
});
refreshList();
@@ -145,26 +147,13 @@ public class DialogUltimiArriviFornitoreFiltroAvanzato {
refreshList();
});
-
- BindableString.resetListeners(viewModel.dataDoc);
- BindableString.registerListener(viewModel.dataDoc, value -> {
- if (UtilityString.isNullOrEmpty(value)) currentDataDocPredicate = null;
- else {
- currentDataDocPredicate = o -> o.getDataDocD().equals(viewModel.dataDocDate);
- }
-
- refreshList();
-
- arrayAdapterRagSoc.clear();
- arrayAdapterRagSoc.addAll(getAvailableRagSocs(true));
- });
}
private List getAvailableRagSocs(boolean skipRecalc) {
if(currentDataDocPredicate == null){
mFilteredItems = mItems;
} else if(!skipRecalc){
- Stream tmpStream = Stream.of(mItems)
+ Stream tmpStream = Stream.of(mItems)
.filter(x ->
(currentDataDocPredicate == null || (currentDataDocPredicate.test(x)))
);
@@ -172,7 +161,7 @@ public class DialogUltimiArriviFornitoreFiltroAvanzato {
mFilteredItems = tmpStream.toList();
}
- return Stream.of(mFilteredItems).map(DocumentoResoDTO::getRagSoc).distinct().withoutNulls().toList();
+ return Stream.of(mFilteredItems).map(x -> x.getCodAnag() + " - " + x.getRagSoc()).distinct().withoutNulls().toList();
}
@@ -181,7 +170,7 @@ public class DialogUltimiArriviFornitoreFiltroAvanzato {
if(currentRagSocPredicate == null && currentDataDocPredicate == null){
mFilteredItems = mItems;
} else {
- Stream tmpStream = Stream.of(mItems)
+ Stream tmpStream = Stream.of(mItems)
.filter(x ->
(currentRagSocPredicate == null || (currentRagSocPredicate.test(x))) &&
(currentDataDocPredicate== null || (currentDataDocPredicate.test(x)))
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java
index 0abbf8be..5141ca40 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/rest/UltimiArriviFornitoreRESTConsumer.java
@@ -4,7 +4,9 @@ import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
+import java.util.List;
+import it.integry.integrywmsnative.core.model.GtbAnag;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -13,19 +15,37 @@ import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
public class UltimiArriviFornitoreRESTConsumer {
- public static void getUltimeConsegneFornitori(String codMdep, String codAnag, String codMart, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public static void getAvailableCodAnagFornitori(RunnableArgs> onComplete, RunnableArgs onFailed) {
+ String sql = "SELECT DISTINCT gtb_anag.cod_anag, gtb_anag.rag_soc " +
+ "FROM gtb_anag " +
+ "INNER JOIN atb_forn ON atb_forn.cod_anag = gtb_anag.cod_anag " +
+ "WHERE flag_stato = 'A'";
+
+ Type typeOfObjectsList = new TypeToken>() {}.getType();
+ SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(ArrayList value) {
+ if(onComplete != null) onComplete.run(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+ }
+
+ public static void getUltimeConsegneFornitori(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) {
- int numberOfConsegnePerForn = 100;
- int numberOfDayToAnalyze = 365;
String sql = "SELECT consegne.*, " +
" rag_soc " +
"FROM WMS_GetUltimeConsegneFornitori(" +
- UtilityDB.valueToString(numberOfConsegnePerForn) + ", " +
+ UtilityDB.valueToString(limitConsegnePerCli) + ", " +
UtilityDB.valueToString(codAnag) + ", " +
UtilityDB.valueToString(codMart) + ", " +
UtilityDB.valueToString(codMdep) + ", " +
- UtilityDB.valueToString(numberOfDayToAnalyze) + ") consegne " +
+ UtilityDB.valueToString(limitDays) + ") consegne " +
"LEFT OUTER JOIN gtb_anag ON consegne.cod_anag = gtb_anag.cod_anag " +
"ORDER BY rag_soc, " +
" counter_consegna ";
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java
index cceb9441..56f08ae9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java
@@ -68,7 +68,7 @@ public class VersamentoMerceViewModel {
}
public void openLU() {
- DialogScanOrCreateLU.make(mContext, true, false, mtbColt -> {
+ DialogScanOrCreateLU.make(mContext, true, false, true, false, mtbColt -> {
if(mtbColt == null) {
((IPoppableActivity)mContext).pop();
} else if((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)){
diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/DeactivatableViewPager.java b/app/src/main/java/it/integry/integrywmsnative/ui/DeactivatableViewPager.java
index 3298829d..200d73aa 100644
--- a/app/src/main/java/it/integry/integrywmsnative/ui/DeactivatableViewPager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/ui/DeactivatableViewPager.java
@@ -1,21 +1,37 @@
package it.integry.integrywmsnative.ui;
+import android.animation.LayoutTransition;
import android.content.Context;
import androidx.viewpager.widget.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.Interpolator;
+import android.view.animation.Transformation;
-public class DeactivatableViewPager extends ViewPager {
+public class DeactivatableViewPager extends ViewPager implements Animation.AnimationListener {
private View mCurrentView;
+ private PagerAnimation mAnimation = new PagerAnimation();
+ private boolean mAnimStarted = false;
+ private long mAnimDuration = 100;
+
public DeactivatableViewPager(Context context) {
super(context);
+ mAnimation.setAnimationListener(this);
+
+ setLayerType(View.LAYER_TYPE_HARDWARE, null);
+// getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
}
public DeactivatableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
+ mAnimation.setAnimationListener(this);
+
+ setLayerType(View.LAYER_TYPE_HARDWARE, null);
+// getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
}
@Override
@@ -31,30 +47,113 @@ public class DeactivatableViewPager extends ViewPager {
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- if (mCurrentView == null) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- return;
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+
+ if (!mAnimStarted && mCurrentView != null) {
+ mCurrentView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+ int height = mCurrentView.getMeasuredHeight();
+
+ if (height < getMinimumHeight()) {
+ height = getMinimumHeight();
+ }
+
+ int newHeight = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
+ if (/*getLayoutParams().height != 0 && */heightMeasureSpec != height && height > 0 && height < 100000) {
+// animate()
+// .y(height)
+// .withLayer()
+// .start();
+// mAnimation.setDimensions(height, getLayoutParams().height);
+// mAnimation.setDuration(mAnimDuration);
+// startAnimation(mAnimation);
+// mAnimStarted = true;
+ } else {
+ }
+ heightMeasureSpec = newHeight;
}
- int height = 0;
- mCurrentView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- int h = mCurrentView.getMeasuredHeight();
- if (h > height) height = h;
- heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
- public void measureCurrentView(View currentView) {
+ /**
+ * This method should be called when the ViewPager changes to another page. For best results
+ * call this method in the adapter's setPrimary
+ *
+ * @param currentView PagerAdapter item view
+ */
+ public void onPageChanged(View currentView) {
mCurrentView = currentView;
requestLayout();
}
- public int measureFragment(View view) {
- if (view == null)
- return 0;
- view.measure(0, 0);
- return view.getMeasuredHeight();
+ /**
+ * Custom animation to animate the change of height in the
+ */
+ private class PagerAnimation extends Animation {
+ private int targetHeight;
+ private int currentHeight;
+ private int heightChange;
+
+ /**
+ * Set the dimensions for the animation.
+ *
+ * @param targetHeight View's target height
+ * @param currentHeight View's current height
+ */
+ void setDimensions(int targetHeight, int currentHeight) {
+ this.targetHeight = targetHeight;
+ this.currentHeight = currentHeight;
+ this.heightChange = targetHeight - currentHeight;
+ }
+
+ @Override
+ protected void applyTransformation(float interpolatedTime, Transformation t) {
+ if (interpolatedTime >= 1) {
+ getLayoutParams().height = targetHeight;
+ } else {
+ int stepHeight = (int) (heightChange * interpolatedTime);
+ getLayoutParams().height = currentHeight + stepHeight;
+ }
+ requestLayout();
+ }
+
+ @Override
+ public boolean willChangeBounds() {
+ return true;
+ }
+ }
+
+ /**
+ * Sets the duration of the animation.
+ *
+ * @param duration Duration in ms
+ */
+ public void setAnimationDuration(long duration) {
+ mAnimDuration = duration;
+ }
+
+ /**
+ * Sets the interpolator used by the animation.
+ *
+ * @param interpolator {@link Interpolator}
+ */
+ public void setAnimationInterpolator(Interpolator interpolator) {
+ mAnimation.setInterpolator(interpolator);
+ }
+
+ @Override
+ public void onAnimationStart(Animation animation) {
+ mAnimStarted = true;
+ }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ mAnimStarted = false;
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java
index 184f454b..bc7c418d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java
@@ -102,7 +102,7 @@ public class DialogAskClienteAdapter extends PagerAdapter implements ViewPager.O
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(position != lastPage) {
- viewPager.measureCurrentView(mDatasetViews.get(position).getKey().getRoot());
+ viewPager.onPageChanged(mDatasetViews.get(position).getKey().getRoot());
mDatasetViews.get(position).getValue().onShow();
lastPage = position;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
index 9698bf7d..d41ff95b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
@@ -27,6 +27,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
@@ -84,6 +85,8 @@ public class DialogAskPositionOfLU {
// mDialog.setCancelable(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ UtilityDialog.setTo90PercentSize(mContext, mDialog);
+
mDialog.setOnShowListener(dialog -> {
((AppCompatTextView) adapter.getPage(0).findViewById(R.id.description_text)).setText(mCheckForLineaProd ? R.string.ask_production_line_of_lu_message : R.string.ask_position_of_lu_message);
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUAdapter.java
index 0bcb48d4..939ad643 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUAdapter.java
@@ -37,7 +37,7 @@ public class DialogAskPositionOfLUAdapter extends PagerAdapter {
this.mDatasetViews.add(view);
DeactivatableViewPager pager = (DeactivatableViewPager) container;
- pager.measureCurrentView(view);
+ pager.onPageChanged(view);
return view;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java
new file mode 100644
index 00000000..dbf5b69c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java
@@ -0,0 +1,88 @@
+package it.integry.integrywmsnative.view.dialogs.basket_lu;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.utility.UtilityDialog;
+import it.integry.integrywmsnative.databinding.DialogBasketLuBinding;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel;
+import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1.DialogBasketLU_Page1_ListAdapter;
+import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1.DialogBasketLU_Page1_ViewModel;
+import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2.DialogBasketLU_Page2_ViewModel;
+
+public class DialogBasketLU {
+
+ private Context mContext;
+ private Dialog mDialog;
+ private DialogBasketLuBinding mBinding;
+
+ private RunnableArgs mOnComplete;
+
+ public static Dialog make(final Context context, RunnableArgs onComplete) {
+ return new DialogBasketLU(context, onComplete).mDialog;
+ }
+
+
+ private DialogBasketLU(Context context, RunnableArgs onComplete) {
+ mContext = context;
+ mOnComplete = onComplete;
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_basket_lu, null, false);
+
+ mDialog = new Dialog(context);
+
+ mDialog.setContentView(mBinding.getRoot());
+
+ mDialog.setCanceledOnTouchOutside(false);
+ mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+ UtilityDialog.setTo90PercentSize(context, mDialog);
+
+ this.initViewPager();
+ }
+
+ private void initViewPager() {
+ List> views = new ArrayList<>();
+ views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page1, DialogBasketLU_Page1_ViewModel.class));
+ views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page2, DialogBasketLU_Page2_ViewModel.class));
+
+ DialogBasketLU_ViewPagerAdapter viewPagerAdapter = new DialogBasketLU_ViewPagerAdapter(mContext, views);
+ mBinding.viewpager.setAdapter(viewPagerAdapter);
+ mBinding.viewpager.beginFakeDrag();
+ mBinding.viewpager.addOnPageChangeListener(viewPagerAdapter);
+ mBinding.viewpager.setEnabled(false);
+
+
+ mDialog.setOnShowListener(v -> {
+ viewPagerAdapter.getViewModel(R.layout.dialog_basket_lu__page2).setOnConfirmClickListener(data -> {
+ MtbColt mtbColt = (MtbColt) data;
+
+ mOnComplete.run(mtbColt);
+ mDialog.dismiss();
+ });
+
+ });
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java
new file mode 100644
index 00000000..bf4e2edc
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java
@@ -0,0 +1,131 @@
+package it.integry.integrywmsnative.view.dialogs.basket_lu;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import androidx.annotation.NonNull;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ViewDataBinding;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import it.integry.integrywmsnative.BR;
+import it.integry.integrywmsnative.ui.DeactivatableViewPager;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAskClienteViewModel;
+import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel;
+
+public class DialogBasketLU_ViewPagerAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener {
+
+ private Context mContext;
+
+ private List> mDatasetLayout;
+ private List> mDatasetViews;
+
+ private DeactivatableViewPager viewPager;
+
+ public DialogBasketLU_ViewPagerAdapter(Context context, List> datasetLayouts) {
+ this.mContext = context;
+ this.mDatasetLayout = datasetLayouts;
+ this.mDatasetViews = new ArrayList<>();
+ }
+
+ @Override
+ public View instantiateItem(ViewGroup container, int position) {
+ viewPager = (DeactivatableViewPager) container;
+
+ Integer viewId = mDatasetLayout.get(position).getKey();
+
+
+ LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+ ViewDataBinding mBinding = DataBindingUtil.inflate(inflater, viewId, null, false);
+
+ Class viewModelClass = mDatasetLayout.get(position).getValue();
+ IDialogBasketLUViewModel viewModel = null;
+
+ try {
+ viewModel = (IDialogBasketLUViewModel) viewModelClass.newInstance();
+ viewModel.setBinding(mBinding);
+ viewModel.setContext(mContext);
+ viewModel.setOnDone(data -> {
+ int newIndex = viewPager.getCurrentItem() + 1;
+
+ if(newIndex <= getCount()) {
+ this.mDatasetViews.get(newIndex).getValue().setInputData(data);
+ this.mDatasetViews.get(newIndex).getValue().onPreShow();
+ viewPager.setCurrentItem(newIndex, true);
+ }
+ });
+ viewModel.setOnPrev(() -> {
+ int newIndex = viewPager.getCurrentItem() - 1;
+
+ if(newIndex >= 0) {
+ viewPager.setCurrentItem(newIndex, true);
+ }
+ });
+ } catch (IllegalAccessException | InstantiationException e) {
+ e.printStackTrace();
+ }
+
+ mBinding.setVariable(it.integry.integrywmsnative.BR.viewmodel, viewModel);
+
+ container.addView(mBinding.getRoot());
+ this.mDatasetViews.add(new AbstractMap.SimpleEntry<>(mBinding, viewModel));
+
+ return mBinding.getRoot();
+ }
+
+ @Override
+ public void destroyItem(ViewGroup container, int position, Object object) {
+ container.removeView((LinearLayout)object);
+ }
+
+ @Override
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
+ return view == o;
+ }
+
+
+ @Override
+ public int getCount() {
+ return mDatasetLayout.size();
+ }
+
+ public IDialogBasketLUViewModel getViewModel(@NonNull int layoutID) {
+ for(int i = 0; i < mDatasetLayout.size(); i++) {
+ if(mDatasetLayout.get(i).getKey() == layoutID) {
+ return this.mDatasetViews.get(i).getValue();
+ }
+ }
+ return null;
+ }
+
+ private int lastPage = -1;
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ if(position != lastPage) {
+ mDatasetViews.get(position).getValue().onShow();
+ viewPager.onPageChanged(mDatasetViews.get(position).getKey().getRoot());
+ lastPage = position;
+ }
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ // mDatasetViews.get(position).getValue().onShow();
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/DialogBasketLU_BaseViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/DialogBasketLU_BaseViewModel.java
new file mode 100644
index 00000000..da560f4e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/DialogBasketLU_BaseViewModel.java
@@ -0,0 +1,30 @@
+package it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces;
+
+
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public abstract class DialogBasketLU_BaseViewModel implements IDialogBasketLUViewModel {
+
+ private Runnable mOnPrev;
+ private RunnableArgs