diff --git a/.idea/runConfigurations/app_agricoper.xml b/.idea/runConfigurations/app_agricoper.xml
new file mode 100644
index 00000000..5736eb4f
--- /dev/null
+++ b/.idea/runConfigurations/app_agricoper.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/app_base.xml b/.idea/runConfigurations/app_base.xml
index 9645a5c5..f5966d19 100644
--- a/.idea/runConfigurations/app_base.xml
+++ b/.idea/runConfigurations/app_base.xml
@@ -7,7 +7,8 @@
-
+
+
diff --git a/.idea/runConfigurations/app_frudis.xml b/.idea/runConfigurations/app_frudis.xml
index 5cfa0c58..802d974d 100644
--- a/.idea/runConfigurations/app_frudis.xml
+++ b/.idea/runConfigurations/app_frudis.xml
@@ -7,7 +7,8 @@
-
+
+
diff --git a/.idea/runConfigurations/app_gramm.xml b/.idea/runConfigurations/app_gramm.xml
index b372fdfc..1438cfb0 100644
--- a/.idea/runConfigurations/app_gramm.xml
+++ b/.idea/runConfigurations/app_gramm.xml
@@ -7,7 +7,8 @@
-
+
+
diff --git a/.idea/runConfigurations/app_ime.xml b/.idea/runConfigurations/app_ime.xml
index e9fc63bd..4665b87a 100644
--- a/.idea/runConfigurations/app_ime.xml
+++ b/.idea/runConfigurations/app_ime.xml
@@ -7,7 +7,8 @@
-
+
+
diff --git a/.idea/runConfigurations/app_saporiveri.xml b/.idea/runConfigurations/app_saporiveri.xml
index 32c3e878..969d5409 100644
--- a/.idea/runConfigurations/app_saporiveri.xml
+++ b/.idea/runConfigurations/app_saporiveri.xml
@@ -7,7 +7,8 @@
-
+
+
diff --git a/.idea/runConfigurations/app_saporiveri_pv.xml b/.idea/runConfigurations/app_saporiveri_pv.xml
index a976db73..8c8e7471 100644
--- a/.idea/runConfigurations/app_saporiveri_pv.xml
+++ b/.idea/runConfigurations/app_saporiveri_pv.xml
@@ -7,7 +7,8 @@
-
+
+
diff --git a/.idea/runConfigurations/app_vglimenti.xml b/.idea/runConfigurations/app_vglimenti.xml
index 895b517f..5f3610fe 100644
--- a/.idea/runConfigurations/app_vglimenti.xml
+++ b/.idea/runConfigurations/app_vglimenti.xml
@@ -7,7 +7,8 @@
-
+
+
diff --git a/app/build.gradle b/app/build.gradle
index da44b33a..f6092e1b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -75,13 +75,16 @@ android {
checkReleaseBuilds false
}
- dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv", ":dynamic_saporiveri", ':dynamic_gramm']
+ dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti", ":dynamic_ime", ":dynamic_frudis", ":dynamic_saporiveri_pv", ":dynamic_saporiveri", ':dynamic_gramm', ':dynamic_agricoper']
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
+ implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
+ implementation 'androidx.fragment:fragment:1.2.5'
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations'
})
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 90a5623f..7678624d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,14 +25,16 @@
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
-
+
@@ -48,7 +50,6 @@
android:windowSoftInputMode="adjustNothing" />
observableField) {
+ Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
+ if (pair == null || pair.first != observableField) {
+ if (pair != null) {
+ view.removeTextChangedListener(pair.second);
+ }
+ TextWatcherAdapter watcher = new TextWatcherAdapter() {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ if(observableField != null) observableField.set(s.toString());
+ }
+ };
+ view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher));
+ view.addTextChangedListener(watcher);
+ }
+ String newValue = observableField.get();
+ if (!view.getText().toString().equals(newValue)) {
+ view.setText(newValue);
+ }
+ }
+
@BindingAdapter("binding")
public static void bindEditText(EditText view, final BindableString bindableString) {
Pair pair = (Pair) view.getTag(R.id.bound_observable);
@@ -106,6 +128,28 @@ public class Converters {
}
}
+ @BindingAdapter("binding")
+ public static void bindEditText(EditText view, final ObservableField observableString) {
+ Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
+ if (pair == null || pair.first != observableString) {
+ if (pair != null) {
+ view.removeTextChangedListener(pair.second);
+ }
+ TextWatcherAdapter watcher = new TextWatcherAdapter() {
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ observableString.set(s.toString());
+ }
+ };
+ view.setTag(R.id.bound_observable, new Pair<>(observableString, watcher));
+ view.addTextChangedListener(watcher);
+ }
+ String newValue = observableString.get();
+ if (!view.getText().toString().equals(newValue)) {
+ view.setText(newValue);
+ }
+ }
+
@BindingAdapter("binding")
public static void bindTextInputEditText(TextInputEditText view, final BindableString bindableString) {
Pair pair = (Pair) view.getTag(R.id.bound_observable);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/binders/AutoCompleteTextViewBinders.java b/app/src/main/java/it/integry/integrywmsnative/core/di/binders/AutoCompleteTextViewBinders.java
new file mode 100644
index 00000000..a09b4af8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/di/binders/AutoCompleteTextViewBinders.java
@@ -0,0 +1,6 @@
+package it.integry.integrywmsnative.core.di.binders;
+
+public class AutoCompleteTextViewBinders {
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java
index 5887cbe3..3f283249 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseDialogFragment.java
@@ -49,16 +49,38 @@ public class BaseDialogFragment extends DialogFragment {
this.mBarcodeListener = listen;
}
+
+
+
+ public void onLoadingStarted() {
+ BarcodeManager.disable();
+ this.openProgress();
+ }
+
+ public void onLoadingEnded() {
+ this.closeProgress();
+ BarcodeManager.enable();
+ }
+
protected void openProgress() {
- if (this.mCurrentProgress == null) {
- this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
- }
+
+// new Thread(() -> {
+ getActivity().runOnUiThread(() -> {
+ if (this.mCurrentProgress == null) {
+ this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
+ }
+ });
+// }).start();
}
protected void closeProgress() {
- if (mCurrentProgress != null) {
- mCurrentProgress.dismiss();
- mCurrentProgress = null;
- }
+// new Thread(() -> {
+ getActivity().runOnUiThread(() -> {
+ if (mCurrentProgress != null) {
+ mCurrentProgress.dismiss();
+ mCurrentProgress = null;
+ }
+ });
+// }).start();
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java
index fc2f5219..b3bb7f7e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java
@@ -4,6 +4,8 @@ import android.app.Dialog;
import androidx.fragment.app.Fragment;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
public class BaseFragment extends Fragment {
@@ -32,4 +34,23 @@ public class BaseFragment extends Fragment {
});
// }).start();
}
+
+
+ public void onLoadingStarted() {
+ BarcodeManager.disable();
+ this.openProgress();
+ }
+
+ public void onLoadingEnded() {
+ this.closeProgress();
+ BarcodeManager.enable();
+ }
+
+ public void onError(Exception ex) {
+ this.getActivity().runOnUiThread(() -> {
+ this.closeProgress();
+ UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress);
+ BarcodeManager.enable();
+ });
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java
index 187fca0f..dd4bad06 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedRecyclerView.java
@@ -7,6 +7,7 @@ import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
+import java.util.List;
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
@@ -38,6 +39,28 @@ public abstract class ExtendedRecyclerView updatedDataset) {
+ mDataset.clear();
+
+ if(updatedDataset != null && !updatedDataset.isEmpty()) {
+ mDataset.addAll(updatedDataset);
+ }
+
+ notifyDataSetChanged();
+ }
+
+ public void addDataset(List insertDataset) {
+ if(insertDataset != null && !insertDataset.isEmpty()) {
+ mDataset.addAll(insertDataset);
+ notifyDataSetChanged();
+ }
+ }
+
public ExtendedRecyclerView setEmptyView(View emptyView) {
this.mEmptyView = emptyView;
this.checkIfEmpty();
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/DtbOrdSteps.java b/app/src/main/java/it/integry/integrywmsnative/core/model/DtbOrdSteps.java
new file mode 100644
index 00000000..8b6202a8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/DtbOrdSteps.java
@@ -0,0 +1,348 @@
+package it.integry.integrywmsnative.core.model;
+
+import java.math.BigDecimal;
+
+public class DtbOrdSteps extends EntityBase {
+
+ private String dataOrd;
+ private String gestione;
+ private Integer idRiga;
+ private Integer idStep;
+ private Integer numOrd;
+ private String activityId;
+ private String codAnag;
+ private String codDtip;
+ private String codJfas;
+ private String codMdep;
+ private String codProdPri;
+ private String dataDoc;
+ private String dataFine;
+ private String dataIniz;
+ private String descrizioneAttivita;
+ private String flagTipoTempo;
+ private Integer hrNum;
+ private BigDecimal hrTime;
+ private String idRigaDoc;
+ private String note;
+ private String numDoc;
+ private Integer numFase;
+ private BigDecimal qtaAllocata;
+ private BigDecimal qtaDisp;
+ private BigDecimal qtaDispImmessa;
+ private BigDecimal qtaImmesse;
+ private BigDecimal qtaInProd;
+ private BigDecimal qtaLav;
+ private BigDecimal qtaProd;
+ private BigDecimal qtaScartate;
+ private BigDecimal qtaTrasferite;
+ private BigDecimal rapConvLav;
+ private String serDoc;
+ private String untMisLav;
+
+
+ public String getDataOrd() {
+ return dataOrd;
+ }
+
+ public DtbOrdSteps setDataOrd(String dataOrd) {
+ this.dataOrd = dataOrd;
+ return this;
+ }
+
+ public String getGestione() {
+ return gestione;
+ }
+
+ public DtbOrdSteps setGestione(String gestione) {
+ this.gestione = gestione;
+ return this;
+ }
+
+ public Integer getIdRiga() {
+ return idRiga;
+ }
+
+ public DtbOrdSteps setIdRiga(Integer idRiga) {
+ this.idRiga = idRiga;
+ return this;
+ }
+
+ public Integer getIdStep() {
+ return idStep;
+ }
+
+ public DtbOrdSteps setIdStep(Integer idStep) {
+ this.idStep = idStep;
+ return this;
+ }
+
+ public Integer getNumOrd() {
+ return numOrd;
+ }
+
+ public DtbOrdSteps setNumOrd(Integer numOrd) {
+ this.numOrd = numOrd;
+ return this;
+ }
+
+ public String getActivityId() {
+ return activityId;
+ }
+
+ public DtbOrdSteps setActivityId(String activityId) {
+ this.activityId = activityId;
+ return this;
+ }
+
+ public String getCodAnag() {
+ return codAnag;
+ }
+
+ public DtbOrdSteps setCodAnag(String codAnag) {
+ this.codAnag = codAnag;
+ return this;
+ }
+
+ public String getCodDtip() {
+ return codDtip;
+ }
+
+ public DtbOrdSteps setCodDtip(String codDtip) {
+ this.codDtip = codDtip;
+ return this;
+ }
+
+ public String getCodJfas() {
+ return codJfas;
+ }
+
+ public DtbOrdSteps setCodJfas(String codJfas) {
+ this.codJfas = codJfas;
+ return this;
+ }
+
+ public String getCodMdep() {
+ return codMdep;
+ }
+
+ public DtbOrdSteps setCodMdep(String codMdep) {
+ this.codMdep = codMdep;
+ return this;
+ }
+
+ public String getCodProdPri() {
+ return codProdPri;
+ }
+
+ public DtbOrdSteps setCodProdPri(String codProdPri) {
+ this.codProdPri = codProdPri;
+ return this;
+ }
+
+ public String getDataDoc() {
+ return dataDoc;
+ }
+
+ public DtbOrdSteps setDataDoc(String dataDoc) {
+ this.dataDoc = dataDoc;
+ return this;
+ }
+
+ public String getDataFine() {
+ return dataFine;
+ }
+
+ public DtbOrdSteps setDataFine(String dataFine) {
+ this.dataFine = dataFine;
+ return this;
+ }
+
+ public String getDataIniz() {
+ return dataIniz;
+ }
+
+ public DtbOrdSteps setDataIniz(String dataIniz) {
+ this.dataIniz = dataIniz;
+ return this;
+ }
+
+ public String getDescrizioneAttivita() {
+ return descrizioneAttivita;
+ }
+
+ public DtbOrdSteps setDescrizioneAttivita(String descrizioneAttivita) {
+ this.descrizioneAttivita = descrizioneAttivita;
+ return this;
+ }
+
+ public String getFlagTipoTempo() {
+ return flagTipoTempo;
+ }
+
+ public DtbOrdSteps setFlagTipoTempo(String flagTipoTempo) {
+ this.flagTipoTempo = flagTipoTempo;
+ return this;
+ }
+
+ public Integer getHrNum() {
+ return hrNum;
+ }
+
+ public DtbOrdSteps setHrNum(Integer hrNum) {
+ this.hrNum = hrNum;
+ return this;
+ }
+
+ public BigDecimal getHrTime() {
+ return hrTime;
+ }
+
+ public DtbOrdSteps setHrTime(BigDecimal hrTime) {
+ this.hrTime = hrTime;
+ return this;
+ }
+
+ public String getIdRigaDoc() {
+ return idRigaDoc;
+ }
+
+ public DtbOrdSteps setIdRigaDoc(String idRigaDoc) {
+ this.idRigaDoc = idRigaDoc;
+ return this;
+ }
+
+ public String getNote() {
+ return note;
+ }
+
+ public DtbOrdSteps setNote(String note) {
+ this.note = note;
+ return this;
+ }
+
+ public String getNumDoc() {
+ return numDoc;
+ }
+
+ public DtbOrdSteps setNumDoc(String numDoc) {
+ this.numDoc = numDoc;
+ return this;
+ }
+
+ public Integer getNumFase() {
+ return numFase;
+ }
+
+ public DtbOrdSteps setNumFase(Integer numFase) {
+ this.numFase = numFase;
+ return this;
+ }
+
+ public BigDecimal getQtaAllocata() {
+ return qtaAllocata;
+ }
+
+ public DtbOrdSteps setQtaAllocata(BigDecimal qtaAllocata) {
+ this.qtaAllocata = qtaAllocata;
+ return this;
+ }
+
+ public BigDecimal getQtaDisp() {
+ return qtaDisp;
+ }
+
+ public DtbOrdSteps setQtaDisp(BigDecimal qtaDisp) {
+ this.qtaDisp = qtaDisp;
+ return this;
+ }
+
+ public BigDecimal getQtaDispImmessa() {
+ return qtaDispImmessa;
+ }
+
+ public DtbOrdSteps setQtaDispImmessa(BigDecimal qtaDispImmessa) {
+ this.qtaDispImmessa = qtaDispImmessa;
+ return this;
+ }
+
+ public BigDecimal getQtaImmesse() {
+ return qtaImmesse;
+ }
+
+ public DtbOrdSteps setQtaImmesse(BigDecimal qtaImmesse) {
+ this.qtaImmesse = qtaImmesse;
+ return this;
+ }
+
+ public BigDecimal getQtaInProd() {
+ return qtaInProd;
+ }
+
+ public DtbOrdSteps setQtaInProd(BigDecimal qtaInProd) {
+ this.qtaInProd = qtaInProd;
+ return this;
+ }
+
+ public BigDecimal getQtaLav() {
+ return qtaLav;
+ }
+
+ public DtbOrdSteps setQtaLav(BigDecimal qtaLav) {
+ this.qtaLav = qtaLav;
+ return this;
+ }
+
+ public BigDecimal getQtaProd() {
+ return qtaProd;
+ }
+
+ public DtbOrdSteps setQtaProd(BigDecimal qtaProd) {
+ this.qtaProd = qtaProd;
+ return this;
+ }
+
+ public BigDecimal getQtaScartate() {
+ return qtaScartate;
+ }
+
+ public DtbOrdSteps setQtaScartate(BigDecimal qtaScartate) {
+ this.qtaScartate = qtaScartate;
+ return this;
+ }
+
+ public BigDecimal getQtaTrasferite() {
+ return qtaTrasferite;
+ }
+
+ public DtbOrdSteps setQtaTrasferite(BigDecimal qtaTrasferite) {
+ this.qtaTrasferite = qtaTrasferite;
+ return this;
+ }
+
+ public BigDecimal getRapConvLav() {
+ return rapConvLav;
+ }
+
+ public DtbOrdSteps setRapConvLav(BigDecimal rapConvLav) {
+ this.rapConvLav = rapConvLav;
+ return this;
+ }
+
+ public String getSerDoc() {
+ return serDoc;
+ }
+
+ public DtbOrdSteps setSerDoc(String serDoc) {
+ this.serDoc = serDoc;
+ return this;
+ }
+
+ public String getUntMisLav() {
+ return untMisLav;
+ }
+
+ public DtbOrdSteps setUntMisLav(String untMisLav) {
+ this.untMisLav = untMisLav;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbTCol.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbTCol.java
index 10500a29..0b078f69 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbTCol.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbTCol.java
@@ -105,4 +105,6 @@ public class MtbTCol {
this.circuito = circuito;
return this;
}
+
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java
index 71191792..d3af8845 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java
@@ -3,10 +3,8 @@ package it.integry.integrywmsnative.core.rest;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
-import java.sql.Date;
import java.util.concurrent.TimeUnit;
-import it.integry.integrywmsnative.core.rest.deserializer.DateDeserializer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
@@ -53,11 +51,12 @@ public class RESTBuilder {
String endpoint = "http://" + host + ":" + port + "/" + (addEmsApi ? "ems-api/" : "");
Gson gson = new GsonBuilder()
- .registerTypeAdapter(Date.class, new DateDeserializer())
+ .setDateFormat("dd/MM/yyyy HH:mm:ss")
.create();
+
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.baseUrl(endpoint)
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
index f398011e..c1f4e2a4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
@@ -40,11 +40,11 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
}
- public void getByCodMart(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
- getByCodMartStatic(codMartToFind, onComplete, onFailed);
+ public void getByCodMarts(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ getByCodMartsStatic(codMartToFind, onComplete, onFailed);
}
- public static void getByCodMartStatic(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public static void getByCodMartsStatic(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
String joinedCods = Stream.of(codMartToFind)
.collect(Collectors.joining(","));
@@ -67,4 +67,26 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
}
+
+ public void getByCodMart(String codMartToFind, RunnableArgs onComplete, RunnableArgs onFailed) {
+
+ ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
+ articoloRESTConsumer.getByCodMart(codMartToFind).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "getByCodMart", (m) -> {
+ if(response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) {
+ onComplete.run(response.body().getEntityList().get(0));
+ } else onComplete.run(null);
+
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
index 622657c6..3bcdc493 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
@@ -418,7 +418,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
- ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> {
+ ArticoloRESTConsumer.getByCodMartsStatic(codMarts, arts -> {
if (arts != null && arts.size() > 0) {
for (MtbColt mtbColt : mtbColts) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java
index 8ab9cba7..91df4313 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java
@@ -6,15 +6,18 @@ import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
+import javax.inject.Singleton;
+
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.utility.UtilityDB;
+@Singleton
public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
- public static void getTipoCollo(String codTcol, RunnableArgs onComplete, RunnableArgs onFailed) {
+ public void getTipoCollo(String codTcol, RunnableArgs onComplete, RunnableArgs onFailed) {
String baseSql = "SELECT * " +
"FROM mtb_tcol " +
"WHERE cod_tcol = " + UtilityDB.valueToString(codTcol);
@@ -36,7 +39,11 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
- public static void getTipiCollo(RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public void getTipiCollo(RunnableArgs> onComplete, RunnableArgs onFailed) {
+ getTipiColloStatic(onComplete, onFailed);
+ }
+
+ public static void getTipiColloStatic(RunnableArgs> onComplete, RunnableArgs onFailed) {
String baseSql = "SELECT * " +
"FROM mtb_tcol ";
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java
index d5187e59..0785c8f4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumer.java
@@ -1,31 +1,93 @@
package it.integry.integrywmsnative.core.rest.consumers;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
+import javax.inject.Singleton;
+
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.JtbFasi;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.utility.UtilityDB;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
+@Singleton
public class MesRESTConsumer extends _BaseRESTConsumer {
- public static void getOrdiniLavorazioneMateriale(String codJfas, String idMateriale, RunnableArgs> onComplete, RunnableArgs onFailed){
+ private final SystemRESTConsumer mSystemRESTConsumer;
+
+ public MesRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
+ this.mSystemRESTConsumer = systemRESTConsumer;
+ }
+
+ public static void getOrdiniLavorazioneMateriale(String codJfas, String idMateriale, RunnableArgs> onComplete, RunnableArgs onFailed) {
MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
- mesRESTConsumerService.getOrdiniLavorazioneMateriale(codJfas,idMateriale).enqueue(new Callback>>() {
- @Override
- public void onResponse(Call>> call, Response>> response) {
- analyzeAnswer(response, "getAvailablePosizioni", (m) -> onComplete.run(response.body().getDto()), onFailed);
- }
- @Override
- public void onFailure(Call>> call, Throwable t) {
- onFailed.run(new Exception(t));
- }
- });
+ mesRESTConsumerService.getOrdiniLavorazioneMateriale(codJfas, idMateriale)
+ .enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "getOrdiniLavorazioneMateriale", (m) -> onComplete.run(response.body().getDto()), onFailed);
+ }
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+ public void getOrdiniLavorazione(String flagEvaso, String codJfas, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
+
+ mesRESTConsumerService.getOrdiniLavorazione(flagEvaso, codJfas)
+ .enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "getOrdiniLavorazione", (m) -> onComplete.run(response.body().getDto()), onFailed);
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+ public void getOrdiniLavorazione(Date dateStart, String flagEvaso, String codJfas, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
+
+ mesRESTConsumerService.getOrdiniLavorazione(UtilityDate.formatDate(dateStart, UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH), flagEvaso, codJfas)
+ .enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "getOrdiniLavorazione", (m) -> onComplete.run(response.body().getDto()), onFailed);
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+ public void getLineeProduzione(String codJfasParent, RunnableArgs> onComplete, RunnableArgs onFailed) {
+
+ Type typeOfObjectsList = new TypeToken>() {}.getType();
+ this.mSystemRESTConsumer.processSql(
+ "SELECT * FROM jtb_fasi WHERE cod_jfas_parent = " + UtilityDB.valueToString(codJfasParent),
+ typeOfObjectsList,
+ onComplete,
+ onFailed);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumerService.java
index ae48d79b..2ab0a08c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumerService.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MesRESTConsumerService.java
@@ -14,4 +14,12 @@ public interface MesRESTConsumerService {
@GET("mes_v2/getOrdiniLavorazioneMateriale")
Call>> getOrdiniLavorazioneMateriale(@Query("codJfas") String codJfas, @Query("idMateriale") String idMateriale);
+
+ @GET("mes_v2/getOrdiniLavorazione")
+ Call>> getOrdiniLavorazione(@Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas);
+
+
+ @GET("mes_v2/getOrdiniLavorazione")
+ Call>> getOrdiniLavorazione(@Query("startDate") String startDate, @Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas);
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/deserializer/DateDeserializer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/deserializer/DateDeserializer.java
index 5b286de1..1cd08f45 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/deserializer/DateDeserializer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/deserializer/DateDeserializer.java
@@ -9,6 +9,7 @@ import java.lang.reflect.Type;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityString;
public class DateDeserializer implements JsonDeserializer {
@@ -16,6 +17,8 @@ public class DateDeserializer implements JsonDeserializer {
public Date deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
String date = element.getAsString();
+ if (UtilityString.isNullOrEmpty(date)) return null;
+
return UtilityDate.recognizeDateWithExceptionHandler(date);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/serializer/DateSerializer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/serializer/DateSerializer.java
new file mode 100644
index 00000000..0903cf4b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/serializer/DateSerializer.java
@@ -0,0 +1,21 @@
+package it.integry.integrywmsnative.core.rest.serializer;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+
+import java.lang.reflect.Type;
+import java.util.Date;
+
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+
+public class DateSerializer implements JsonSerializer {
+
+ @Override
+ public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
+ String dateString = UtilityDate.formatDate(src, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
+
+ return src == null ? null : new JsonPrimitive(dateString);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java
index 3c7abcf7..8958745e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java
@@ -2,10 +2,8 @@ package it.integry.integrywmsnative.core.utility;
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
-import java.util.TimeZone;
import it.integry.integrywmsnative.core.exception.DateNotRecognizedException;
import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException;
@@ -19,9 +17,15 @@ public class UtilityDate {
public static class COMMONS_DATE_FORMATS {
public static final String DMY_SLASH = "dd/MM/yyyy";
public static final String YMD_SLASH = "yyyy/MM/dd";
+ public static final String DM_SLASH = "dd/MM";
+ public static final String MD_SLASH = "MM/dd";
public static final String YMD_DASH = "yyyy-MM-dd";
public static final String DMY_TIME_SLASH = DMY_SLASH + " HH:mm:ss";
public static final String YMD_TIME_SLASH = YMD_SLASH + " HH:mm:ss";
+ public static final String DM_TIME_SLASH = DM_SLASH + " HH:mm";
+ public static final String MD_TIME_SLASH = MD_SLASH + " HH:mm";
+ public static final String TIME = "HH:mm";
+ public static final String TIME_W_SECS = "HH:mm:ss";
public static final String DM_HUMAN = "dd MMM";
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java
index dfa984d6..fda1521a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java
@@ -8,6 +8,14 @@ import androidx.fragment.app.DialogFragment;
public class UtilityDialog {
+
+
+ public static void setTo60PercentWidth(Context context, DialogFragment dialog) {
+ int width = (int)(context.getResources().getDisplayMetrics().widthPixels*0.60);
+
+ dialog.getDialog().getWindow().setLayout(width, LinearLayout.LayoutParams.MATCH_PARENT);
+ }
+
public static void setTo90PercentWidth(Context context, Dialog dialog) {
int width = (int)(context.getResources().getDisplayMetrics().widthPixels*0.90);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDimension.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDimension.java
index 95a44372..71d12bae 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDimension.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDimension.java
@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.utility;
+import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.util.DisplayMetrics;
@@ -22,4 +23,14 @@ public class UtilityDimension {
return Math.round(px);
}
+
+ public static double getDisplayInchs(Activity activity) {
+ DisplayMetrics metrics = new DisplayMetrics();
+ activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
+
+ float yInches= metrics.heightPixels/metrics.ydpi;
+ float xInches= metrics.widthPixels/metrics.xdpi;
+ return Math.sqrt(xInches*xInches + yInches*yInches);
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java
index 06320e6d..535c2bb9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java
@@ -144,7 +144,7 @@ public class AccettazionePickingViewModel {
.map(SitArtOrdDTO::getCodMart)
.toList();
- this.mArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
+ this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> {
List pickingList = Stream.of(sitArtOrdList)
.map(sitArtOrdDTO -> {
MtbAart mtbAart = null;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
index ab5304ed..4bd807d4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
@@ -7,11 +7,15 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
+import org.jetbrains.annotations.NotNull;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -34,6 +38,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityDimension;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -68,7 +73,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
+ setRetainInstance(true);
}
@Override
@@ -78,13 +83,19 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false);
+
+ return mBindings.getRoot();
+ }
+
+ @Override
+ public void onViewCreated(@NonNull @NotNull View view, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
mToolbar.setNestedScrollView(mBindings.fragmentMainScrollview);
init();
initGestMenu();
initVersion();
-
- return mBindings.getRoot();
}
@Override
@@ -128,7 +139,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
List generatedErrors = new ArrayList<>();
- Iterator sessionsIterator = ColliDataRecover.getAllSessionIDs().iterator();
+ Iterator sessionsIterator = ColliDataRecover.getAllSessionIDs().iterator();
cyclicRecover(sessionsIterator, () -> {
@@ -225,6 +236,10 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION);
List menuGroups = menuConfiguration.getGroups();
+ int menuSpanCount = 2;
+ if(UtilityDimension.getDisplayInchs(this.getActivity()) > 8) menuSpanCount = 4;
+ else if(UtilityDimension.getDisplayInchs(this.getActivity()) > 6.5) menuSpanCount = 3;
+
for (MenuConfiguration.MenuGroup menuGroup : menuGroups) {
FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false);
@@ -233,7 +248,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
MenuListAdapter menuListAdapter = new MenuListAdapter(getContext(), menuGroup.getItems());
- groupBinding.mainList.setLayoutManager(new GridLayoutManager(getContext(), 2));
+ groupBinding.mainList.setLayoutManager(new GridLayoutManager(getContext(), menuSpanCount));
groupBinding.mainList.setAdapter(menuListAdapter);
groupBinding.mainList.setNestedScrollingEnabled(false);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java
index 45e7b198..c06baf0a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java
@@ -63,7 +63,7 @@ public class PickingResiRESTConsumer {
.distinct()
.toList();
- mArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
+ mArticoloRESTConsumer.getByCodMarts(codMarts, arts -> {
if(arts != null && arts.size() > 0) {
for (DtbDocr value : values) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java
index 3be6c18c..428a96e9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java
@@ -262,7 +262,7 @@ public class ProdRecuperoMaterialeHelper {
.distinct()
.toList();
- ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> {
+ ArticoloRESTConsumer.getByCodMartsStatic(codMarts, arts -> {
if(arts != null && arts.size() > 0) {
for (HistoryVersamentoProdULDTO value : newUlList) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceComponent.java
new file mode 100644
index 00000000..2abb06ca
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceComponent.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface ProdRientroMerceComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ ProdRientroMerceComponent create();
+ }
+
+ void inject(ProdRientroMerceFragment prodRientroMerceFragment);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java
new file mode 100644
index 00000000..fd35f254
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java
@@ -0,0 +1,161 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.text.SpannableString;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+import androidx.databinding.DataBindingUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseFragment;
+import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
+import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
+import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceBinding;
+import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.ProdRientroMerceOrderDetailFragment;
+import it.integry.integrywmsnative.gest.prod_rientro_merce.order_list.ProdRientroMerceOrderListFragment;
+import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
+import it.integry.integrywmsnative.ui.ElevatedToolbar;
+import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
+import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
+import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
+
+public class ProdRientroMerceFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ProdRientroMerceViewModel.Listener, BottomSheetFragmentLUContentView.Listener, BottomSheetMtbColrEditView.Listener {
+
+
+ @Inject
+ ProdRientroMerceViewModel mViewModel;
+
+ private AppCompatTextView mAppBarTitle;
+ private final List mOnPreDestroyList = new ArrayList<>();
+
+ private FragmentProdRientroMerceBinding mBindings;
+
+ private ProdRientroMerceOrderListFragment mProdRientroMerceOrderListFragment;
+ private ProdRientroMerceOrderDetailFragment mProdRientroMerceOrderDetailFragment;
+ private ElevatedToolbar mToolbar;
+
+ public static ProdRientroMerceFragment newInstance() {
+ return new ProdRientroMerceFragment();
+ }
+
+ @Override
+ public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setRetainInstance(true);
+
+ mProdRientroMerceOrderListFragment = ProdRientroMerceOrderListFragment.newInstance(mToolbar);
+ mProdRientroMerceOrderDetailFragment = ProdRientroMerceOrderDetailFragment.newInstance();
+
+ mProdRientroMerceOrderListFragment.setOnItemSelectedRunnable(mProdRientroMerceOrderDetailFragment::setOrder);
+ mProdRientroMerceOrderDetailFragment.setOnMtbColtClicked(item -> {
+ mBindings.bottomSheetMtbColrEdit.setMtbColr(item.getMtbColr().get(0));
+ mBindings.bottomSheetMtbColrEdit.expand();
+ });
+
+ getChildFragmentManager()
+ .beginTransaction()
+ .replace(R.id.order_list_fragment, mProdRientroMerceOrderListFragment)
+ .replace(R.id.order_detail_fragment, mProdRientroMerceOrderDetailFragment)
+ .commit();
+
+ MainApplication.appComponent
+ .prodRientroMerceComponent()
+ .create()
+ .inject(this);
+ }
+
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_prod_rientro_merce, container, false);
+ mBindings.setLifecycleOwner(this);
+
+ mViewModel.setListener(this);
+
+ this.initBottomSheet();
+
+ return mBindings.getRoot();
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if(savedInstanceState == null) {
+ this.mViewModel.getOrdiniLavorazioneAperti().observe(this.getViewLifecycleOwner(), this::ordersUpdated);
+
+ mViewModel.init();
+ }
+ }
+
+ @Override
+ public void onCreateActionBar(AppCompatTextView titleText, Context context) {
+ mAppBarTitle = titleText;
+ mAppBarTitle.setText(context.getText(R.string.rientro_merce_fragment_title).toString());
+
+ }
+
+ @Override
+ public void addOnPreDestroy(Runnable onPreDestroy) {
+ this.mOnPreDestroyList.add(onPreDestroy);
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+
+ for (Runnable onPreDestroy :
+ mOnPreDestroyList) {
+ onPreDestroy.run();
+ }
+ }
+
+ @Override
+ public void onDataSaved() {
+ }
+
+ private void ordersUpdated(List ordiniLavorazioneList) {
+ this.mProdRientroMerceOrderListFragment.pushOrderList(ordiniLavorazioneList);
+ }
+
+ @Override
+ public void setScrollToolbar(ElevatedToolbar toolbar) {
+ mToolbar = toolbar;
+ }
+
+
+
+ private void initBottomSheet() {
+ mBindings.bottomSheetMtbColrEdit.setListener(this);
+ mBindings.bottomSheetMtbColrEdit.disableEditButton();
+ mBindings.bottomSheetMtbColrEdit.init(mBindings.bottomSheetMtbColrEdit, mBindings.bottomSheetMtbColrEditBackground);
+ }
+
+ @Override
+ public void onMtbColrEdit(MtbColr mtbColr) {
+
+ }
+
+ @Override
+ public void onMtbColrDelete(MtbColr mtbColr) {
+ String text = getResources().getString(R.string.alert_delete_mtb_colr);
+ DialogSimpleMessageView.makeWarningDialog(new SpannableString(text),
+ null,
+ () -> mProdRientroMerceOrderDetailFragment.deleteMtbColr(mtbColr),
+ () -> {}
+ ).show(getActivity().getSupportFragmentManager(), "tag");
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceModule.java
new file mode 100644
index 00000000..66607e5b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceModule.java
@@ -0,0 +1,15 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce;
+
+import dagger.Module;
+import dagger.Provides;
+import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
+
+@Module(subcomponents = ProdRientroMerceComponent.class)
+public class ProdRientroMerceModule {
+
+ @Provides
+ ProdRientroMerceViewModel providesProdRientroMerceViewModel(MesRESTConsumer mesRESTConsumer) {
+ return new ProdRientroMerceViewModel(mesRESTConsumer);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java
new file mode 100644
index 00000000..df1bbf7e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java
@@ -0,0 +1,68 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce;
+
+import androidx.lifecycle.MutableLiveData;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
+import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
+import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException;
+import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
+
+public class ProdRientroMerceViewModel {
+
+
+ private final MutableLiveData> mOrdiniLavorazioneAperti = new MutableLiveData<>();
+
+ private Listener mListener;
+
+ private final MesRESTConsumer mMesRESTConsumer;
+
+ @Inject
+ public ProdRientroMerceViewModel(MesRESTConsumer mesRESTConsumer) {
+ this.mMesRESTConsumer = mesRESTConsumer;
+ }
+
+ public void init() {
+ new Thread(this::sendOnLoadingStarted).start();
+
+ this.mMesRESTConsumer.getOrdiniLavorazione("I", null, ordiniLavorazioneList -> {
+ this.mOrdiniLavorazioneAperti.postValue(ordiniLavorazioneList);
+ this.sendOnLoadingEnded();
+ }, ex -> this.sendError(new DocumentsLoadException(ex)));
+ }
+
+ public MutableLiveData> getOrdiniLavorazioneAperti() {
+ return mOrdiniLavorazioneAperti;
+ }
+
+ public void setListener(Listener listener) {
+ this.mListener = listener;
+ }
+
+
+ private void sendOnLoadingStarted() {
+ if (this.mListener != null) mListener.onLoadingStarted();
+ }
+
+ private void sendOnLoadingEnded() {
+ if (this.mListener != null) mListener.onLoadingEnded();
+ }
+
+ private void sendError(Exception ex) {
+ if (this.mListener != null) mListener.onError(ex);
+ }
+
+
+ public interface Listener extends ILoadingListener {
+
+ void onDataSaved();
+
+ void onError(Exception ex);
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailComponent.java
new file mode 100644
index 00000000..55c1862b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailComponent.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface ProdRientroMerceOrderDetailComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ ProdRientroMerceOrderDetailComponent create();
+ }
+
+ void inject(ProdRientroMerceOrderDetailFragment prodRientroMerceOrderDetailFragment);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java
new file mode 100644
index 00000000..2d89aaf2
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java
@@ -0,0 +1,277 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
+
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableArrayList;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.MutableLiveData;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.google.gson.reflect.TypeToken;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseFragment;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.DtbOrdSteps;
+import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
+import it.integry.integrywmsnative.core.utility.UtilityDB;
+import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderDetailBinding;
+import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
+import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdDTO;
+import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdView;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link ProdRientroMerceOrderDetailFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements ProdRientroMerceOrderDetailViewModel.Listener {
+
+
+ public final MutableLiveData currentOrder = new MutableLiveData<>();
+
+ @Inject
+ ArticoloRESTConsumer mArticoloRESTConsumer;
+
+ @Inject
+ SystemRESTConsumer mSystemRESTConsumer;
+
+ @Inject
+ ProdRientroMerceOrderDetailViewModel mViewModel;
+
+ private FragmentProdRientroMerceOrderDetailBinding mBindings;
+ private ProdRientroMerceOrderDetailMtbColtListAdapter mAdapter;
+
+ private RunnableArgs onMtbColtClicked;
+
+ public ProdRientroMerceOrderDetailFragment() {
+ // Required empty public constructor
+ }
+
+ public static ProdRientroMerceOrderDetailFragment newInstance() {
+ return new ProdRientroMerceOrderDetailFragment();
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setRetainInstance(true);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_prod_rientro_merce_order_detail, container, false);
+ mBindings.setLifecycleOwner(this);
+
+ mBindings.setView(this);
+
+ MainApplication.appComponent
+ .prodRientroMerceOrderDetailComponent()
+ .create()
+ .inject(this);
+
+ mViewModel.setListener(this);
+
+ this.mViewModel.mtbColtsOfOrder.observe(getViewLifecycleOwner(), this::refreshList);
+
+ this.initRecyclerView();
+
+ return mBindings.getRoot();
+ }
+
+ private void initRecyclerView() {
+ mBindings.mainList.setNestedScrollingEnabled(false);
+ mBindings.mainList.setHasFixedSize(true);
+ mBindings.mainList.setLayoutManager(new LinearLayoutManager(getActivity()));
+
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL);
+ itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
+ mBindings.mainList.addItemDecoration(itemDecorator);
+
+ mAdapter = new ProdRientroMerceOrderDetailMtbColtListAdapter(new ObservableArrayList<>());
+ mAdapter.setEmptyView(mBindings.mtbColtEmptyView);
+
+ mBindings.mainList.setAdapter(mAdapter);
+ mAdapter.setOnItemClickListener(item -> {
+ if(this.onMtbColtClicked != null) this.onMtbColtClicked.run(item);
+ });
+ }
+
+ public void setOrder(OrdineLavorazioneDTO order) {
+ currentOrder.postValue(order);
+ mBindings.invalidateAll();
+ mAdapter.clearDataset();
+
+ mViewModel.setOrder(order);
+ }
+
+ private void refreshList(List mtbColts) {
+ mAdapter.updateDataset(mtbColts);
+ }
+
+ @Override
+ public void onDataSaved() {
+
+ }
+
+
+ public void addULButtonClick() {
+ this.openProgress();
+
+ String codProd = this.currentOrder.getValue().getCodProd();
+ mArticoloRESTConsumer.getByCodMart(codProd, mtbAart -> {
+
+ String sql = "SELECT TOP 1 * " +
+ "FROM ( " +
+ " SELECT MAX(id_step) OVER ( PARTITION BY gestione, num_ord, data_ord) as last_step, " +
+ " * " +
+ " FROM dtb_ord_steps " +
+ " WHERE cod_jfas IS NOT NULL " +
+ " AND gestione = " + UtilityDB.valueToString(this.currentOrder.getValue().getGestione()) +
+ " AND num_ord = " + UtilityDB.valueToString(this.currentOrder.getValue().getNumOrd()) +
+ " AND data_ord = " + UtilityDB.valueToString(this.currentOrder.getValue().getDataOrdD()) +
+ " ) tmp " +
+ "WHERE data_iniz IS NOT NULL " +
+ " AND (data_fine IS NULL OR last_step = id_step) " +
+ "ORDER BY id_step DESC";
+
+ mSystemRESTConsumer.>processSql(sql, new TypeToken>() {}.getType(), dtbOrdStep -> {
+
+ this.closeProgress();
+
+ DialogInputLUProdDTO dialogInputLUProdDTO = new DialogInputLUProdDTO()
+ .setMtbAart(mtbAart)
+ .setNumCnf(this.currentOrder.getValue().getColliPedana())
+ .setQtaCnf(mtbAart.getQtaCnf())
+ .setQtaTot(this.currentOrder.getValue().getColliPedana().multiply(mtbAart.getQtaCnf()))
+ .setPartitaMag(this.currentOrder.getValue().getPartitaMag())
+ .setDataScad(this.currentOrder.getValue().getDataScadD())
+ .setCodJfasParent(this.currentOrder.getValue().getCodJfas())
+ .setCodTcol(this.currentOrder.getValue().getCodTcolUl())
+ .setSuggestedCodJfas(dtbOrdStep != null && dtbOrdStep.size() > 0 ? dtbOrdStep.get(0).getCodJfas() : null);
+
+
+ DialogInputLUProdView
+ .newInstance(dialogInputLUProdDTO, resultDTO -> {
+ ProdRientroMerceOrderDetailPickedQuantityDTO pickedQuantityDTO = new ProdRientroMerceOrderDetailPickedQuantityDTO()
+ .setNumCnf(resultDTO.getNumCnf())
+ .setPesoCollo(resultDTO.getPesoCollo())
+ .setPesoNetto(resultDTO.getPesoNetto())
+ .setTaraPed(resultDTO.getTaraPed())
+ .setTaraCol(resultDTO.getTaraCol())
+ .setPesoLordo(resultDTO.getPesoLordo())
+ .setMtbTCol(resultDTO.getMtbTCol())
+ .setJtbFasi(resultDTO.getJtbFasi());
+
+ this.mViewModel.createLU(pickedQuantityDTO);
+ }, () -> {
+ this.closeProgress();
+ })
+ .show(getActivity().getSupportFragmentManager(), "tag");
+
+ }, this::onError);
+
+ }, this::onError);
+ }
+
+ public ProdRientroMerceOrderDetailFragment setOnMtbColtClicked(RunnableArgs onMtbColtClicked) {
+ this.onMtbColtClicked = onMtbColtClicked;
+ return this;
+ }
+
+ public void editMtbColr(MtbColr mtbColr) {
+
+ }
+
+ public void deleteMtbColr(MtbColr mtbColr) {
+ MtbColt mtbColt = new MtbColt()
+ .setGestione(mtbColr.getGestione())
+ .setDataCollo(mtbColr.getDataColloS())
+ .setSerCollo(mtbColr.getSerCollo())
+ .setNumCollo(mtbColr.getNumCollo());
+
+ this.mViewModel.deleteLU(mtbColt);
+ }
+
+ public Drawable getOrderStatusIcon() {
+ if (currentOrder.getValue() != null) {
+ switch (currentOrder.getValue().getStatoEnum()) {
+ case IN_CORSO:
+ return ContextCompat.getDrawable(getActivity(), R.drawable.ic_play_circle_filled_24dp);
+ case PAUSA:
+ return ContextCompat.getDrawable(getActivity(), R.drawable.ic_pause_circle_filled_24dp);
+ case PROGRAMMATO:
+ default:
+ return ContextCompat.getDrawable(getActivity(), R.drawable.ic_clock_circle_outline_24dp);
+ }
+ }
+ else
+ return ContextCompat.getDrawable(getActivity(), R.drawable.ic_clock_circle_outline_24dp);
+ }
+
+ public Integer getOrderStatusIconTintColor() {
+ if (currentOrder.getValue() != null) {
+ switch (currentOrder.getValue().getStatoEnum()) {
+ case IN_CORSO:
+ return ContextCompat.getColor(getActivity(), R.color.green_800);
+ case PAUSA:
+ return ContextCompat.getColor(getActivity(), R.color.yellow_800);
+ case PROGRAMMATO:
+ default:
+ return ContextCompat.getColor(getActivity(), R.color.blue_800);
+ }
+ }
+ else
+ return ContextCompat.getColor(getActivity(), R.color.blue_800);
+ }
+
+ public Drawable getOrderStatusLabelBackgroud() {
+ if (currentOrder.getValue() != null) {
+ switch (currentOrder.getValue().getStatoEnum()) {
+ case IN_CORSO:
+ return ContextCompat.getDrawable(getActivity(), R.drawable.label_success_text);
+ case PAUSA:
+ return ContextCompat.getDrawable(getActivity(), R.drawable.label_warning_text);
+ case PROGRAMMATO:
+ default:
+ return ContextCompat.getDrawable(getActivity(), R.drawable.label_primary_text);
+ }
+ }
+ else
+ return ContextCompat.getDrawable(getActivity(), R.drawable.label_primary_text);
+ }
+
+ public Integer getOrderStatusLabelTextColor() {
+ if (currentOrder.getValue() != null) {
+ switch (currentOrder.getValue().getStatoEnum()) {
+ case IN_CORSO:
+ return ContextCompat.getColor(getActivity(), R.color.green_800);
+ case PAUSA:
+ return ContextCompat.getColor(getActivity(), R.color.yellow_800);
+ case PROGRAMMATO:
+ default:
+ return ContextCompat.getColor(getActivity(), R.color.blue_800);
+ }
+ }
+ else
+ return ContextCompat.getColor(getActivity(), R.color.blue_800);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailModule.java
new file mode 100644
index 00000000..72153211
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailModule.java
@@ -0,0 +1,24 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
+
+import dagger.Module;
+import dagger.Provides;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
+import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.ProdRientroMerceOrderDetailRESTConsumer;
+
+@Module(subcomponents = ProdRientroMerceOrderDetailComponent.class)
+public class ProdRientroMerceOrderDetailModule {
+
+ @Provides
+ ProdRientroMerceOrderDetailRESTConsumer provideProdRientroMerceOrderDetailRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
+ return new ProdRientroMerceOrderDetailRESTConsumer(systemRESTConsumer);
+ }
+
+ @Provides
+ ProdRientroMerceOrderDetailViewModel provideProdRientroMerceOrderDetailViewModel(
+ ProdRientroMerceOrderDetailRESTConsumer prodRientroMerceOrderDetailRESTConsumer,
+ ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
+ return new ProdRientroMerceOrderDetailViewModel(prodRientroMerceOrderDetailRESTConsumer, colliMagazzinoRESTConsumer);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailMtbColtListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailMtbColtListAdapter.java
new file mode 100644
index 00000000..31da4018
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailMtbColtListAdapter.java
@@ -0,0 +1,89 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
+
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableArrayList;
+import androidx.recyclerview.widget.RecyclerView;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderDetailMtbColtItemModelBinding;
+
+public class ProdRientroMerceOrderDetailMtbColtListAdapter extends ExtendedRecyclerView {
+
+ private OnItemClickListener mOnItemClickListener;
+
+ public ProdRientroMerceOrderDetailMtbColtListAdapter(ObservableArrayList myDataset) {
+ super(myDataset);
+ }
+
+ public static class ViewHolder extends RecyclerView.ViewHolder {
+ protected FragmentProdRientroMerceOrderDetailMtbColtItemModelBinding mViewDataBinding;
+
+
+ public ViewHolder(FragmentProdRientroMerceOrderDetailMtbColtItemModelBinding v) {
+ super(v.getRoot());
+ mViewDataBinding = v;
+ }
+
+ public void bind(MtbColt mtbColt) {
+ mViewDataBinding.setMtbColt(mtbColt);
+ mViewDataBinding.executePendingBindings();
+ }
+ }
+
+
+ @Override
+ public ProdRientroMerceOrderDetailMtbColtListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ // create a new view
+ FragmentProdRientroMerceOrderDetailMtbColtItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.fragment_prod_rientro_merce_order_detail__mtb_colt_item_model, parent, false);
+
+ return new ProdRientroMerceOrderDetailMtbColtListAdapter.ViewHolder(viewDataBinding);
+ }
+
+
+
+ @Override
+ public void onBindViewHolder(ProdRientroMerceOrderDetailMtbColtListAdapter.ViewHolder holder, int position) {
+ MtbColt mtbColt = mDataset.get(position);
+ holder.bind(mtbColt);
+
+ //Setting qty with unt_mis
+// if(!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())){
+// String text = UtilityNumber.decimalToString(mtbColr.getQtaCol());
+//
+// if(mtbColr.getMtbAart() != null) {
+// text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? "\n" + mtbColr.getMtbAart().getUntMis() : "";
+// }
+//
+// holder.mViewDataBinding.qtaTextview.setText(text);
+// } else {
+// holder.mViewDataBinding.qtaTextview.setText(UtilityNumber.decimalToString(mtbColr.getNumCnf()) + "\n" + UtilityResources.getString(R.string.unt_mis_col));
+// }
+
+ holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
+ if(mOnItemClickListener != null) {
+ mOnItemClickListener.onItemClick(holder.mViewDataBinding.getMtbColt());
+ }
+ });
+
+ holder.mViewDataBinding.executePendingBindings();
+ }
+
+
+
+
+
+ public ProdRientroMerceOrderDetailMtbColtListAdapter setOnItemClickListener(ProdRientroMerceOrderDetailMtbColtListAdapter.OnItemClickListener onItemClickListener) {
+ this.mOnItemClickListener = onItemClickListener;
+ return this;
+ }
+
+ public interface OnItemClickListener {
+ void onItemClick(MtbColt item);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailPickedQuantityDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailPickedQuantityDTO.java
new file mode 100644
index 00000000..950d8dec
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailPickedQuantityDTO.java
@@ -0,0 +1,91 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
+
+import java.math.BigDecimal;
+
+import it.integry.integrywmsnative.core.model.JtbFasi;
+import it.integry.integrywmsnative.core.model.MtbTCol;
+
+public class ProdRientroMerceOrderDetailPickedQuantityDTO {
+
+ private BigDecimal numCnf;
+ private BigDecimal pesoCollo;
+ private BigDecimal pesoNetto;
+ private BigDecimal taraPed;
+ private BigDecimal taraCol;
+ private BigDecimal pesoLordo;
+
+ private MtbTCol mtbTCol;
+ private JtbFasi jtbFasi;
+
+ public BigDecimal getNumCnf() {
+ return numCnf;
+ }
+
+ public ProdRientroMerceOrderDetailPickedQuantityDTO setNumCnf(BigDecimal numCnf) {
+ this.numCnf = numCnf;
+ return this;
+ }
+
+ public BigDecimal getPesoCollo() {
+ return pesoCollo;
+ }
+
+ public ProdRientroMerceOrderDetailPickedQuantityDTO setPesoCollo(BigDecimal pesoCollo) {
+ this.pesoCollo = pesoCollo;
+ return this;
+ }
+
+ public BigDecimal getPesoNetto() {
+ return pesoNetto;
+ }
+
+ public ProdRientroMerceOrderDetailPickedQuantityDTO setPesoNetto(BigDecimal pesoNetto) {
+ this.pesoNetto = pesoNetto;
+ return this;
+ }
+
+ public BigDecimal getTaraPed() {
+ return taraPed;
+ }
+
+ public ProdRientroMerceOrderDetailPickedQuantityDTO setTaraPed(BigDecimal taraPed) {
+ this.taraPed = taraPed;
+ return this;
+ }
+
+ public BigDecimal getTaraCol() {
+ return taraCol;
+ }
+
+ public ProdRientroMerceOrderDetailPickedQuantityDTO setTaraCol(BigDecimal taraCol) {
+ this.taraCol = taraCol;
+ return this;
+ }
+
+ public BigDecimal getPesoLordo() {
+ return pesoLordo;
+ }
+
+ public ProdRientroMerceOrderDetailPickedQuantityDTO setPesoLordo(BigDecimal pesoLordo) {
+ this.pesoLordo = pesoLordo;
+ return this;
+ }
+
+ public MtbTCol getMtbTCol() {
+ return mtbTCol;
+ }
+
+ public ProdRientroMerceOrderDetailPickedQuantityDTO setMtbTCol(MtbTCol mtbTCol) {
+ this.mtbTCol = mtbTCol;
+ return this;
+ }
+
+ public JtbFasi getJtbFasi() {
+ return jtbFasi;
+ }
+
+ public ProdRientroMerceOrderDetailPickedQuantityDTO setJtbFasi(JtbFasi jtbFasi) {
+ this.jtbFasi = jtbFasi;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java
new file mode 100644
index 00000000..a7873262
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java
@@ -0,0 +1,144 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail;
+
+import androidx.lifecycle.MutableLiveData;
+
+import com.annimon.stream.Optional;
+import com.annimon.stream.Stream;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.ProdRientroMerceOrderDetailRESTConsumer;
+import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto.ImportColliDaProduzioneRequestDTO;
+import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
+
+public class ProdRientroMerceOrderDetailViewModel {
+
+ public MutableLiveData> mtbColtsOfOrder = new MutableLiveData<>();
+ private OrdineLavorazioneDTO currentOrder;
+
+ private final ProdRientroMerceOrderDetailRESTConsumer mProdRientroMerceOrderDetailRESTConsumer;
+ private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
+
+ private Listener mListener;
+
+ @Inject
+ public ProdRientroMerceOrderDetailViewModel(ProdRientroMerceOrderDetailRESTConsumer prodRientroMerceOrderDetailRESTConsumer,
+ ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) {
+ this.mProdRientroMerceOrderDetailRESTConsumer = prodRientroMerceOrderDetailRESTConsumer;
+ this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
+ }
+
+ public void setOrder(OrdineLavorazioneDTO order) {
+ this.currentOrder = order;
+
+ refreshMtbColts();
+ }
+
+ private void refreshMtbColts() {
+ this.sendOnLoadingStarted();
+ this.mtbColtsOfOrder.postValue(null);
+
+ this.mProdRientroMerceOrderDetailRESTConsumer.getMtbColtsOfOrder(currentOrder, mtbColts -> {
+ for (MtbColt mtbColt : mtbColts) {
+ mtbColt.getMtbColr().get(0).setDescrizione(currentOrder.getDescrizioneProd());
+ }
+
+ this.mtbColtsOfOrder.postValue(mtbColts);
+ this.sendOnLoadingEnded();
+ }, this::sendError);
+ }
+
+ public void createLU(ProdRientroMerceOrderDetailPickedQuantityDTO pickedQuantityDTO) {
+
+ new Thread(this::sendOnLoadingStarted).start();
+
+ new Thread(() -> {
+
+ ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO =
+ new ImportColliDaProduzioneRequestDTO()
+ .setColliBancale(pickedQuantityDTO.getNumCnf().intValue())
+ .setQtaCnf(pickedQuantityDTO.getPesoCollo())
+ .setQtaCol(pickedQuantityDTO.getPesoNetto())
+ .setCodJcom(currentOrder.getCodJcom())
+ .setCodJfas(pickedQuantityDTO.getJtbFasi().getCodJfas())
+ .setCodMart(currentOrder.getCodProd())
+ .setCodTcol(pickedQuantityDTO.getMtbTCol().getCodTcol())
+ .setDataCollo(new Date())
+ .setDataOrd(currentOrder.getDataOrdD())
+ .setNumOrd(currentOrder.getNumOrd())
+ .setGestione(currentOrder.getGestione())
+ .setPartitaMag(currentOrder.getPartitaMag())
+ .setFornitore(currentOrder.getRagSocAnag())
+ .setPesoLordo(pickedQuantityDTO.getPesoLordo())
+ .setPesoNetto(pickedQuantityDTO.getPesoNetto());
+
+ this.mProdRientroMerceOrderDetailRESTConsumer.importColloDaProduzione(importColliDaProduzioneRequestDTO, mtbColtSaved -> {
+
+ synchronized (this.mtbColtsOfOrder) {
+ refreshMtbColts();
+ }
+
+ this.sendOnLoadingEnded();
+ }, this::sendError);
+
+
+ }).start();
+
+ }
+
+ public void deleteLU(MtbColt mtbColt) {
+ new Thread(this::sendOnLoadingStarted).start();
+
+ new Thread(() -> {
+ this.mProdRientroMerceOrderDetailRESTConsumer.deleteColloDaProduzione(mtbColt, () -> {
+ synchronized (this.mtbColtsOfOrder) {
+ Optional mtbColtToRemove = Stream.of(this.mtbColtsOfOrder.getValue())
+ .filter(x -> x.getNumCollo().equals(mtbColt.getNumCollo()) &&
+ x.getSerCollo().equalsIgnoreCase(mtbColt.getSerCollo()) &&
+ x.getDataColloD().compareTo(mtbColt.getDataColloD()) == 0 &&
+ x.getGestione().equalsIgnoreCase(mtbColt.getGestione()))
+ .findFirst();
+
+ if (mtbColtToRemove.isPresent()) {
+ this.mtbColtsOfOrder.getValue().remove(mtbColtToRemove.get());
+ this.mtbColtsOfOrder.postValue(this.mtbColtsOfOrder.getValue());
+ }
+
+ }
+
+ this.sendOnLoadingEnded();
+ }, this::sendError);
+ }).start();
+ }
+
+ public void setListener(Listener listener) {
+ this.mListener = listener;
+ }
+
+
+ private void sendOnLoadingStarted() {
+ if (this.mListener != null) mListener.onLoadingStarted();
+ }
+
+ private void sendOnLoadingEnded() {
+ if (this.mListener != null) mListener.onLoadingEnded();
+ }
+
+ private void sendError(Exception ex) {
+ if (this.mListener != null) mListener.onError(ex);
+ }
+
+ public interface Listener extends ILoadingListener {
+
+ void onDataSaved();
+
+ void onError(Exception ex);
+
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java
new file mode 100644
index 00000000..0db56157
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java
@@ -0,0 +1,155 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest;
+
+import androidx.databinding.ObservableArrayList;
+
+import com.annimon.stream.Stream;
+import com.google.gson.reflect.TypeToken;
+import com.orhanobut.logger.Logger;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.RESTBuilder;
+import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
+import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.utility.UtilityDB;
+import it.integry.integrywmsnative.core.utility.UtilityQuery;
+import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto.ImportColliDaProduzioneRequestDTO;
+import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+@Singleton
+public class ProdRientroMerceOrderDetailRESTConsumer extends _BaseRESTConsumer {
+
+ private final SystemRESTConsumer systemRESTConsumer;
+
+ @Inject
+ public ProdRientroMerceOrderDetailRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
+ this.systemRESTConsumer = systemRESTConsumer;
+ }
+
+
+ public void getMtbColtsOfOrder(OrdineLavorazioneDTO ordineLavorazioneDTO, RunnableArgs> onComplete, RunnableArgs onFailed) {
+
+ String sql = "SELECT mtb_colr.* " +
+ " FROM mtb_colr " +
+ " INNER JOIN mtb_colt mc ON mtb_colr.gestione = mc.gestione AND mtb_colr.data_collo = mc.data_collo AND " +
+ " mtb_colr.ser_collo = mc.ser_collo AND mtb_colr.num_collo = mc.num_collo " +
+ " WHERE " +
+ " mtb_colr.num_ord = " + UtilityDB.valueToString(ordineLavorazioneDTO.getNumOrd()) + " AND" +
+ " mtb_colr.data_ord = " + UtilityDB.valueToString(ordineLavorazioneDTO.getDataOrdD()) + " AND" +
+ " mtb_colr.gestione = 'L' AND" +
+ " mc.segno = 1";
+
+ Type typeOfObjectsList = new TypeToken>() {
+ }.getType();
+ systemRESTConsumer.>processSql(sql, typeOfObjectsList, mtbColrList -> {
+
+
+ if (mtbColrList != null && !mtbColrList.isEmpty()) {
+
+ List> params = new ArrayList<>();
+
+ for (MtbColr mtbcolr :
+ mtbColrList) {
+ HashMap parm = new HashMap<>();
+
+ parm.put("data_collo", mtbcolr.getDataColloD());
+ parm.put("gestione", mtbcolr.getGestione());
+ parm.put("ser_collo", mtbcolr.getSerCollo());
+ parm.put("num_collo", mtbcolr.getNumCollo());
+
+ params.add(parm);
+ }
+
+ String mtbColtSql = "SELECT * FROM mtb_colt WHERE " + UtilityQuery.concatFieldListInWhereCond(params) + "";
+
+
+ Type mtbColtTypeOfObjectsList = new TypeToken>() {
+ }.getType();
+ systemRESTConsumer.>processSql(mtbColtSql, mtbColtTypeOfObjectsList, mtbColtList -> {
+
+ if(mtbColtList == null) mtbColtList = new ArrayList<>();
+
+ for (MtbColt mtbColt : mtbColtList) {
+
+ ObservableArrayList mtbColrsRoAdd = new ObservableArrayList<>();
+ mtbColrsRoAdd.addAll(Stream.of(mtbColrList)
+ .filter(x -> x.getNumCollo().equals(mtbColt.getNumCollo()) &&
+ x.getDataColloD().compareTo(mtbColt.getDataColloD()) == 0 &&
+ x.getGestione().equals(mtbColt.getGestione()) &&
+ x.getSerCollo().equals(mtbColt.getSerCollo()))
+ .toList());
+
+ mtbColt.setMtbColr(mtbColrsRoAdd);
+ }
+
+ onComplete.run(mtbColtList);
+
+ }, onFailed);
+
+ } else {
+ onComplete.run(new ArrayList<>());
+ }
+
+
+ }, onFailed);
+ }
+
+
+
+
+ public void importColloDaProduzione(ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) {
+
+ ProdRientroMerceOrderDetailRESTConsumerService service = RESTBuilder.getService(ProdRientroMerceOrderDetailRESTConsumerService.class);
+ service.importColloDaProduzione(importColliDaProduzioneRequestDTO).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "importColliDaProduzione", mtbColt -> {
+ onComplete.run(mtbColt);
+ }, ex -> {
+ if(onFailed != null) onFailed.run(ex);
+ });
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ Logger.e(t, "importColliDaProduzione");
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+
+ public void deleteColloDaProduzione(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) {
+ ProdRientroMerceOrderDetailRESTConsumerService service = RESTBuilder.getService(ProdRientroMerceOrderDetailRESTConsumerService.class);
+ service.deleteColloDaProduzione(mtbColtToDelete).enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ analyzeAnswer(response, "deleteColloDaProduzione", mtbColt -> {
+ onComplete.run();
+ }, ex -> {
+ if(onFailed != null) onFailed.run(ex);
+ });
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ Logger.e(t, "deleteColloDaProduzione");
+ onFailed.run(new Exception(t));
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java
new file mode 100644
index 00000000..7943bae0
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumerService.java
@@ -0,0 +1,24 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto.ImportColliDaProduzioneRequestDTO;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.POST;
+
+public interface ProdRientroMerceOrderDetailRESTConsumerService {
+
+
+ @POST("importColliDaProduzioneJson")
+ Call> importColliDaProduzione(@Body List importColliDaProduzioneRequestDTO);
+
+ @POST("importColloDaProduzioneJson")
+ Call> importColloDaProduzione(@Body ImportColliDaProduzioneRequestDTO importColloDaProduzioneRequestDTO);
+
+ @POST("cancellaColloDaProduzione")
+ Call> deleteColloDaProduzione(@Body MtbColt mtbColtToDelete);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java
new file mode 100644
index 00000000..e7e53d50
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java
@@ -0,0 +1,190 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class ImportColliDaProduzioneRequestDTO {
+
+ private String codMart;
+ private String codJcom;
+ private String partitaMag;
+ private BigDecimal pesoLordo;
+ private BigDecimal pesoNetto;
+ private String codTcol;
+ private String fornitore;
+
+ private int colliBancale;
+ private BigDecimal qtaCnf;
+ private Date dataCollo;
+
+ private Date dataOrd;
+ private int numOrd;
+ private String codJfas;
+ private String gestione;
+ private BigDecimal qtaCol;
+ private Integer rigaOrd;
+ private Integer numRisorse;
+ private String annotazioni;
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setCodMart(String codMart) {
+ this.codMart = codMart;
+ return this;
+ }
+
+ public String getCodJcom() {
+ return codJcom;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setCodJcom(String codJcom) {
+ this.codJcom = codJcom;
+ return this;
+ }
+
+ public String getPartitaMag() {
+ return partitaMag;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setPartitaMag(String partitaMag) {
+ this.partitaMag = partitaMag;
+ return this;
+ }
+
+ public BigDecimal getPesoLordo() {
+ return pesoLordo;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setPesoLordo(BigDecimal pesoLordo) {
+ this.pesoLordo = pesoLordo;
+ return this;
+ }
+
+ public BigDecimal getPesoNetto() {
+ return pesoNetto;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setPesoNetto(BigDecimal pesoNetto) {
+ this.pesoNetto = pesoNetto;
+ return this;
+ }
+
+ public String getCodTcol() {
+ return codTcol;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setCodTcol(String codTcol) {
+ this.codTcol = codTcol;
+ return this;
+ }
+
+ public String getFornitore() {
+ return fornitore;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setFornitore(String fornitore) {
+ this.fornitore = fornitore;
+ return this;
+ }
+
+ public int getColliBancale() {
+ return colliBancale;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setColliBancale(int colliBancale) {
+ this.colliBancale = colliBancale;
+ return this;
+ }
+
+ public BigDecimal getQtaCnf() {
+ return qtaCnf;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setQtaCnf(BigDecimal qtaCnf) {
+ this.qtaCnf = qtaCnf;
+ return this;
+ }
+
+ public Date getDataCollo() {
+ return dataCollo;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setDataCollo(Date dataCollo) {
+ this.dataCollo = dataCollo;
+ return this;
+ }
+
+ public Date getDataOrd() {
+ return dataOrd;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setDataOrd(Date dataOrd) {
+ this.dataOrd = dataOrd;
+ return this;
+ }
+
+ public int getNumOrd() {
+ return numOrd;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setNumOrd(int numOrd) {
+ this.numOrd = numOrd;
+ return this;
+ }
+
+ public String getCodJfas() {
+ return codJfas;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setCodJfas(String codJfas) {
+ this.codJfas = codJfas;
+ return this;
+ }
+
+ public String getGestione() {
+ return gestione;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setGestione(String gestione) {
+ this.gestione = gestione;
+ return this;
+ }
+
+ public BigDecimal getQtaCol() {
+ return qtaCol;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setQtaCol(BigDecimal qtaCol) {
+ this.qtaCol = qtaCol;
+ return this;
+ }
+
+ public Integer getRigaOrd() {
+ return rigaOrd;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setRigaOrd(Integer rigaOrd) {
+ this.rigaOrd = rigaOrd;
+ return this;
+ }
+
+ public Integer getNumRisorse() {
+ return numRisorse;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setNumRisorse(Integer numRisorse) {
+ this.numRisorse = numRisorse;
+ return this;
+ }
+
+ public String getAnnotazioni() {
+ return annotazioni;
+ }
+
+ public ImportColliDaProduzioneRequestDTO setAnnotazioni(String annotazioni) {
+ this.annotazioni = annotazioni;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListAdapter.java
new file mode 100644
index 00000000..61300ee7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListAdapter.java
@@ -0,0 +1,197 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_list;
+
+import android.content.Context;
+import android.text.Html;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableArrayList;
+import androidx.databinding.ObservableList;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
+import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderListListGroupModelBinding;
+import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderListListModelBinding;
+
+public class ProdRientroMerceOrderListAdapter extends SectionedRecyclerViewAdapter {
+
+ private final Context mContext;
+ private final List mDataset = new ArrayList<>();
+ private View mEmptyView;
+
+ private RunnableArgs mOnGroupItemClicked;
+ private RunnableArgs mOnItemChecked;
+
+ static class SubheaderHolder extends RecyclerView.ViewHolder {
+
+ FragmentProdRientroMerceOrderListListModelBinding mBinding;
+
+ SubheaderHolder(FragmentProdRientroMerceOrderListListModelBinding binding) {
+ super(binding.getRoot());
+ this.mBinding = binding;
+ }
+
+ }
+
+ static class SingleItemViewHolder extends RecyclerView.ViewHolder {
+
+ FragmentProdRientroMerceOrderListListGroupModelBinding mBinding;
+
+ SingleItemViewHolder(FragmentProdRientroMerceOrderListListGroupModelBinding binding) {
+ super(binding.getRoot());
+ this.mBinding = binding;
+ }
+ }
+
+ public ProdRientroMerceOrderListAdapter(Context context, ObservableArrayList mutableDataSet) {
+ this.mContext = context;
+
+ mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
+ @Override
+ public void onChanged(ObservableList sender) {
+ mDataset.clear();
+ mDataset.addAll(sender);
+ notifyDataSetChanged();
+ notifyDataChanged();
+ checkIfEmpty();
+ }
+ });
+ }
+
+ public ProdRientroMerceOrderListAdapter setOnGroupItemClicked(RunnableArgs onGroupItemClicked) {
+ this.mOnGroupItemClicked = onGroupItemClicked;
+ return this;
+ }
+
+ public ProdRientroMerceOrderListAdapter setOnItemChecked(RunnableArgs onItemChecked) {
+ this.mOnItemChecked = onItemChecked;
+ return this;
+ }
+
+ public ProdRientroMerceOrderListAdapter setEmptyView(View emptyView) {
+ this.mEmptyView = emptyView;
+ this.checkIfEmpty();
+ return this;
+ }
+
+ private void checkIfEmpty() {
+ if (mEmptyView != null) {
+ final boolean emptyViewVisible = getItemCount() == 0;
+ mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
+ }
+ }
+
+ @Override
+ public ProdRientroMerceOrderListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
+ FragmentProdRientroMerceOrderListListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_rientro_merce_order_list__list_model, parent, false);
+ return new ProdRientroMerceOrderListAdapter.SubheaderHolder(binding);
+ }
+
+ @Override
+ public ProdRientroMerceOrderListAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
+ FragmentProdRientroMerceOrderListListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_prod_rientro_merce_order_list__list_group_model, parent, false);
+ return new ProdRientroMerceOrderListAdapter.SingleItemViewHolder(binding);
+ }
+
+ @Override
+ public void onBindSubheaderViewHolder(ProdRientroMerceOrderListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
+ ProdRientroMerceOrderListModel pickingObjectDTO = this.mDataset.get(nextItemPosition);
+
+ subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getGroupTitle()) ? View.GONE : View.VISIBLE);
+ subheaderHolder.mBinding.groupTitle.setText(Html.fromHtml(pickingObjectDTO.getGroupTitle()));
+
+ subheaderHolder.mBinding.getRoot().setOnClickListener(new OnSingleClickListener() {
+ @Override
+ public void onSingleClick(View v) {
+ if (mOnGroupItemClicked != null)
+ mOnGroupItemClicked.run(pickingObjectDTO.getGroupTitle());
+ }
+ });
+ }
+
+ @Override
+ public void onBindItemViewHolder(final ProdRientroMerceOrderListAdapter.SingleItemViewHolder holder, final int position) {
+ ProdRientroMerceOrderListModel listModel = this.mDataset.get(position);
+
+ switch (listModel.getIcon()) {
+ case START:
+ holder.mBinding.ordineStateIcon.setImageResource(R.drawable.ic_play_circle_filled_24dp);
+ holder.mBinding.ordineStateIcon.setColorFilter(ContextCompat.getColor(mContext, R.color.green_800), android.graphics.PorterDuff.Mode.SRC_IN);
+ break;
+ case PAUSE:
+ holder.mBinding.ordineStateIcon.setImageResource(R.drawable.ic_pause_circle_filled_24dp);
+ holder.mBinding.ordineStateIcon.setColorFilter(ContextCompat.getColor(mContext, R.color.yellow_800), android.graphics.PorterDuff.Mode.SRC_IN);
+ break;
+ case SCHEDULED:
+ default:
+ holder.mBinding.ordineStateIcon.setImageResource(R.drawable.ic_clock_circle_outline_24dp);
+ holder.mBinding.ordineStateIcon.setColorFilter(ContextCompat.getColor(mContext, R.color.blue_700), android.graphics.PorterDuff.Mode.SRC_IN);
+ break;
+ }
+
+ if (!UtilityString.isNullOrEmpty(listModel.getPreDescription())) {
+ holder.mBinding.preFirstRow.setText(Html.fromHtml(listModel.getPreDescription()));
+ holder.mBinding.preFirstRow.setVisibility(View.VISIBLE);
+ } else holder.mBinding.preFirstRow.setVisibility(View.GONE);
+
+ if (!UtilityString.isNullOrEmpty(listModel.getDescription())) {
+ holder.mBinding.descrizione.setText(Html.fromHtml(listModel.getDescription()));
+ holder.mBinding.descrizione.setVisibility(View.VISIBLE);
+ } else holder.mBinding.descrizione.setVisibility(View.GONE);
+
+ if (!UtilityString.isNullOrEmpty(listModel.getSubDescription())) {
+ holder.mBinding.subDescrizione.setText(Html.fromHtml(listModel.getSubDescription()));
+ holder.mBinding.subDescrizione.setVisibility(View.VISIBLE);
+ } else holder.mBinding.subDescrizione.setVisibility(View.GONE);
+
+ if (!UtilityString.isNullOrEmpty(listModel.getRightDescription())) {
+ holder.mBinding.rightDescrizione.setText(Html.fromHtml(listModel.getRightDescription()));
+ holder.mBinding.rightDescrizione.setVisibility(View.VISIBLE);
+ } else holder.mBinding.rightDescrizione.setVisibility(View.GONE);
+
+ if (!UtilityString.isNullOrEmpty(listModel.getRightSubDescription())) {
+ holder.mBinding.rightSubDescrizione.setText(Html.fromHtml(listModel.getRightSubDescription()));
+ holder.mBinding.rightSubDescrizione.setVisibility(View.VISIBLE);
+ } else holder.mBinding.rightSubDescrizione.setVisibility(View.GONE);
+
+ holder.mBinding.executePendingBindings();
+
+ holder.mBinding.getRoot().setOnClickListener(v -> {
+ if (this.mOnItemChecked != null) this.mOnItemChecked.run(listModel);
+ });
+ }
+
+ @Override
+ public boolean onPlaceSubheaderBetweenItems(int position) {
+
+ if (getItemSize() == 1) return true;
+ else if (getItemSize() > 1) {
+ ProdRientroMerceOrderListModel compare1 = this.mDataset.get(position);
+ ProdRientroMerceOrderListModel compare2 = this.mDataset.get(position + 1);
+
+ if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public int getItemSize() {
+ return mDataset.size();
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListFragment.java
new file mode 100644
index 00000000..24ea5663
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListFragment.java
@@ -0,0 +1,167 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_list;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableArrayList;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.annimon.stream.ComparatorCompat;
+import com.annimon.stream.Stream;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.data_cache.DataCache;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderListBinding;
+import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
+import it.integry.integrywmsnative.ui.ElevatedToolbar;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link ProdRientroMerceOrderListFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class ProdRientroMerceOrderListFragment extends Fragment {
+
+ private final ObservableArrayList mOrdiniApertiMutableData = new ObservableArrayList<>();
+
+ private FragmentProdRientroMerceOrderListBinding mBindings = null;
+
+ private RunnableArgs mOnItemSelectedRunnable;
+
+ private ElevatedToolbar mToolbar;
+
+ public ProdRientroMerceOrderListFragment() {
+ // Required empty public constructor
+ }
+
+ public static ProdRientroMerceOrderListFragment newInstance(ElevatedToolbar elevatedToolbar) {
+ Bundle args = new Bundle();
+
+ args.putString("toolbarInstance", DataCache.addItem(elevatedToolbar));
+ final ProdRientroMerceOrderListFragment prodRientroMerceOrderListFragment = new ProdRientroMerceOrderListFragment();
+ prodRientroMerceOrderListFragment.setArguments(args);
+ return prodRientroMerceOrderListFragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setRetainInstance(true);
+
+ mToolbar = DataCache.retrieveItem(getArguments().getString("toolbarInstance"));
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_rientro_merce_order_list, container, false);
+
+ mBindings.setLifecycleOwner(this);
+
+ if(savedInstanceState == null) this.initRecyclerView();
+
+ return mBindings.getRoot();
+ }
+
+ private void initRecyclerView() {
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL);
+ itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
+ this.mBindings.mainList.addItemDecoration(itemDecorator);
+
+
+ ProdRientroMerceOrderListAdapter prodRientroMerceOrderListAdapter = new ProdRientroMerceOrderListAdapter(getActivity(), mOrdiniApertiMutableData)
+ .setEmptyView(this.mBindings.emptyView)
+ .setOnItemChecked(x -> {
+ if(mOnItemSelectedRunnable != null) mOnItemSelectedRunnable.run(x.getOriginalModel());
+ });
+
+ this.mBindings.mainList.setAdapter(prodRientroMerceOrderListAdapter);
+ this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(getActivity()));
+
+ this.mToolbar.setRecyclerView(mBindings.mainList);
+ }
+
+ public void pushOrderList(List orderList) {
+ this.mOrdiniApertiMutableData.clear();
+ this.mOrdiniApertiMutableData.addAll(convertDataModelToListModel(orderList));
+
+ }
+
+
+ private List convertDataModelToListModel(List dataList) {
+
+ ComparatorCompat comparator = ComparatorCompat
+ .comparing(OrdineLavorazioneDTO::getCodJfas)
+ .thenComparing(ComparatorCompat.comparing(ordineLavorazioneDTO -> ordineLavorazioneDTO.getDataInizProd() != null ? ordineLavorazioneDTO.getDataInizProd() : "zzzzzzzz"))
+ .thenComparing(ComparatorCompat.comparing(OrdineLavorazioneDTO::getNumOrd));
+
+ if(dataList == null) return new ArrayList<>();
+
+ List notHiddenElements = Stream.of(dataList)
+ .sorted(comparator)
+ .map(x -> {
+ ProdRientroMerceOrderListModel listModel = new ProdRientroMerceOrderListModel();
+
+ switch (x.getStatoEnum()) {
+ case IN_CORSO:
+ listModel.setIcon(ProdRientroMerceOrderListModel.StatoIconEnum.START);
+ break;
+ case PAUSA:
+ listModel.setIcon(ProdRientroMerceOrderListModel.StatoIconEnum.PAUSE);
+ break;
+ case PROGRAMMATO:
+ default:
+ listModel.setIcon(ProdRientroMerceOrderListModel.StatoIconEnum.SCHEDULED);
+ break;
+ }
+
+ listModel.setGroupTitle(x.getCodJfas());
+
+ if(!UtilityString.isNullOrEmpty(x.getRagSocAnag()))
+ listModel.setPreDescription("Provenienza: " + x.getRagSocAnag());
+
+ String testataOrdString = "N° " + x.getNumOrd();
+ listModel.setDescription(testataOrdString);
+
+ listModel.setSubDescription(x.getDescrizioneProd());
+
+ listModel.setRightDescription(x.getCodJcom() != null ? (x.getDescCommessa() + " (" + x.getCodJcom() + ")") : "");
+
+ try {
+ listModel.setRightSubDescription(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+ } catch (Exception ex) {
+
+ }
+
+ listModel.setOriginalModel(x);
+
+ return listModel;
+ })
+ .toList();
+
+ return notHiddenElements;
+ }
+
+ public ProdRientroMerceOrderListFragment setOnItemSelectedRunnable(RunnableArgs onItemSelectedRunnable) {
+ this.mOnItemSelectedRunnable = onItemSelectedRunnable;
+ return this;
+ }
+
+ public RecyclerView getList() {
+ return mBindings.mainList;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListModel.java
new file mode 100644
index 00000000..6968b527
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_list/ProdRientroMerceOrderListModel.java
@@ -0,0 +1,108 @@
+package it.integry.integrywmsnative.gest.prod_rientro_merce.order_list;
+
+import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
+
+public class ProdRientroMerceOrderListModel implements Cloneable {
+ private String groupTitle;
+
+ private StatoIconEnum icon;
+ private String preDescription;
+ private String description;
+ private String subDescription;
+ private String rightDescription;
+ private String rightSubDescription;
+
+ private boolean hidden;
+
+
+ private OrdineLavorazioneDTO originalModel;
+
+
+ public String getGroupTitle() {
+ return groupTitle;
+ }
+
+ public ProdRientroMerceOrderListModel setGroupTitle(String groupTitle) {
+ this.groupTitle = groupTitle;
+ return this;
+ }
+
+ public StatoIconEnum getIcon() {
+ return icon;
+ }
+
+ public ProdRientroMerceOrderListModel setIcon(StatoIconEnum icon) {
+ this.icon = icon;
+ return this;
+ }
+
+ public String getPreDescription() {
+ return preDescription;
+ }
+
+ public ProdRientroMerceOrderListModel setPreDescription(String preDescription) {
+ this.preDescription = preDescription;
+ return this;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public ProdRientroMerceOrderListModel setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ public String getSubDescription() {
+ return subDescription;
+ }
+
+ public ProdRientroMerceOrderListModel setSubDescription(String subDescription) {
+ this.subDescription = subDescription;
+ return this;
+ }
+
+ public String getRightDescription() {
+ return rightDescription;
+ }
+
+ public ProdRientroMerceOrderListModel setRightDescription(String rightDescription) {
+ this.rightDescription = rightDescription;
+ return this;
+ }
+
+ public String getRightSubDescription() {
+ return rightSubDescription;
+ }
+
+ public ProdRientroMerceOrderListModel setRightSubDescription(String rightSubDescription) {
+ this.rightSubDescription = rightSubDescription;
+ return this;
+ }
+
+ public boolean isHidden() {
+ return hidden;
+ }
+
+ public ProdRientroMerceOrderListModel setHidden(boolean hidden) {
+ this.hidden = hidden;
+ return this;
+ }
+
+ public OrdineLavorazioneDTO getOriginalModel() {
+ return originalModel;
+ }
+
+ public ProdRientroMerceOrderListModel setOriginalModel(OrdineLavorazioneDTO originalModel) {
+ this.originalModel = originalModel;
+ return this;
+ }
+
+
+ public static enum StatoIconEnum {
+ PAUSE,
+ START,
+ SCHEDULED
+ }
+}
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 9e729256..6b277af5 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
@@ -152,7 +152,7 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter {
+ this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> {
List pickingList = Stream.of(sitArtOrdList)
.map(sitArtOrdDTO -> {
MtbAart mtbAart = null;
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 2a59a397..f75733e3 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
@@ -188,7 +188,7 @@ public class UltimeConsegneClienteRESTConsumer {
.distinct()
.toList();
- ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> {
+ ArticoloRESTConsumer.getByCodMartsStatic(codMarts, arts -> {
if (arts != null && arts.size() > 0) {
for (DtbDocr value : values) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java
index ad5d8821..759cd1bc 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java
@@ -147,17 +147,6 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
this.mOnPreDestroyList.add(onPreDestroy);
}
- @Override
- public void onLoadingStarted() {
- BarcodeManager.disable();
- this.openProgress();
- }
-
- @Override
- public void onLoadingEnded() {
- this.closeProgress();
- BarcodeManager.enable();
- }
@Override
public void onLivelloPosizioneRequired(MtbDepoPosizione posizione, RunnableArgs onComplete) {
@@ -237,13 +226,4 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
});
});
}
-
- @Override
- public void onError(Exception ex) {
- this.getActivity().runOnUiThread(() -> {
- this.closeProgress();
- UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress);
- BarcodeManager.enable();
- });
- }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/ElevatedToolbar.java b/app/src/main/java/it/integry/integrywmsnative/ui/ElevatedToolbar.java
index 581c1f20..8c9258b2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/ui/ElevatedToolbar.java
+++ b/app/src/main/java/it/integry/integrywmsnative/ui/ElevatedToolbar.java
@@ -1,19 +1,15 @@
package it.integry.integrywmsnative.ui;
-import android.animation.ObjectAnimator;
-import android.animation.StateListAnimator;
-import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
+import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.ScrollView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.widget.Toolbar;
import androidx.cardview.widget.CardView;
-import androidx.core.view.ViewCompat;
import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.RecyclerView;
@@ -73,12 +69,26 @@ public class ElevatedToolbar extends CardView {
}
};
+
+ View.OnScrollChangeListener recyclerViewScrollChangeListener = (view, i, i1, i2, i3) -> {
+
+ if(!view.canScrollVertically(-1)) {
+ resetElevation();
+ } else {
+ setCardElevation(CARD_ELEVATION);
+ }
+ };
+
public void setRecyclerView(RecyclerView recyclerView) {
this.mRecyclerView = recyclerView;
resetElevation();
if(mRecyclerView != null) {
- mRecyclerView.setOnScrollListener(recyclerViewScrollListener);
+// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+// mRecyclerView.addOnScrollListener(recyclerViewScrollChangeListener);
+// } else {
+ mRecyclerView.addOnScrollListener(recyclerViewScrollListener);
+// }
} else {
Log.e("ElevatedToolbar", "RecyclerView is NULL");
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java
index d1068e4b..db114b7b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java
@@ -101,10 +101,6 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size()));
}
- public void collapseMtbColrActionSheet(){
- this.mBinding.bottomSheetMtbColrEdit.collapse();
- }
-
public BottomSheetFragmentLUContentView setListener(Listener listener) {
this.mListener = listener;
return this;
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditView.java
index 7bff48eb..28aa387c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditView.java
@@ -5,6 +5,7 @@ import android.util.AttributeSet;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableField;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.MtbColr;
@@ -18,6 +19,8 @@ public class BottomSheetMtbColrEditView extends BottomSheetFragmentBaseView {
private BottomSheetMtbColrEditBinding mBinding;
private BottomSheetMtbColrEditViewModel mViewModel;
+ public ObservableField enabledEditButton = new ObservableField<>(true);
+ public ObservableField enabledDeleteButton = new ObservableField<>(true);
private Listener mListener;
@@ -75,6 +78,22 @@ public class BottomSheetMtbColrEditView extends BottomSheetFragmentBaseView {
}
+ public void enableEditButton() {
+ this.enabledEditButton.set(true);
+ }
+
+ public void disableEditButton() {
+ this.enabledEditButton.set(false);
+ }
+
+ public void enableDeleteButton() {
+ this.enabledDeleteButton.set(true);
+ }
+
+ public void disableDeleteButton() {
+ this.enabledDeleteButton.set(false);
+ }
+
public BottomSheetMtbColrEditViewModel getViewModelInstance() {
return this.mViewModel;
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidBatchLotException.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidBatchLotException.java
similarity index 78%
rename from app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidBatchLotException.java
rename to app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidBatchLotException.java
index 3567514e..7d1a7d63 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidBatchLotException.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidBatchLotException.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception;
+package it.integry.integrywmsnative.view.dialogs.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidExpireDateException.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidExpireDateException.java
similarity index 79%
rename from app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidExpireDateException.java
rename to app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidExpireDateException.java
index 1a2fa38f..7c630ca1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidExpireDateException.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidExpireDateException.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception;
+package it.integry.integrywmsnative.view.dialogs.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidGrossWeightQuantityException.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidGrossWeightQuantityException.java
new file mode 100644
index 00000000..5b60a324
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidGrossWeightQuantityException.java
@@ -0,0 +1,12 @@
+package it.integry.integrywmsnative.view.dialogs.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public class InvalidGrossWeightQuantityException extends Exception {
+
+ public InvalidGrossWeightQuantityException() {
+ super(UtilityResources.getString(R.string.invalid_gross_weight_error_message));
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidNumCnfQuantityException.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidNumCnfQuantityException.java
new file mode 100644
index 00000000..1459dc6e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidNumCnfQuantityException.java
@@ -0,0 +1,12 @@
+package it.integry.integrywmsnative.view.dialogs.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public class InvalidNumCnfQuantityException extends Exception {
+
+ public InvalidNumCnfQuantityException() {
+ super(UtilityResources.getString(R.string.invalid_num_cnf_error_message));
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidProductionLineException.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidProductionLineException.java
new file mode 100644
index 00000000..116412bd
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidProductionLineException.java
@@ -0,0 +1,12 @@
+package it.integry.integrywmsnative.view.dialogs.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public class InvalidProductionLineException extends Exception {
+
+ public InvalidProductionLineException() {
+ super(UtilityResources.getString(R.string.invalid_production_line_error_message));
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidQtaCnfQuantityException.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidQtaCnfQuantityException.java
similarity index 80%
rename from app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidQtaCnfQuantityException.java
rename to app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidQtaCnfQuantityException.java
index bed7165e..0e3721d1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidQtaCnfQuantityException.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidQtaCnfQuantityException.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception;
+package it.integry.integrywmsnative.view.dialogs.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidQuantityException.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidQuantityException.java
similarity index 79%
rename from app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidQuantityException.java
rename to app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidQuantityException.java
index 9037570c..075ce0a0 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/exception/InvalidQuantityException.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidQuantityException.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception;
+package it.integry.integrywmsnative.view.dialogs.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdComponent.java
new file mode 100644
index 00000000..d0dbdf86
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdComponent.java
@@ -0,0 +1,15 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface DialogInputLUProdComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ DialogInputLUProdComponent create();
+ }
+
+ void inject(DialogInputLUProdView dialogInputLUProdView);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdDTO.java
new file mode 100644
index 00000000..6c38c15e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdDTO.java
@@ -0,0 +1,103 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import it.integry.integrywmsnative.core.model.MtbAart;
+
+public class DialogInputLUProdDTO {
+
+ private MtbAart mtbAart;
+
+ private BigDecimal numCnf;
+ private BigDecimal qtaCnf;
+ private BigDecimal qtaTot;
+
+ private String partitaMag;
+ private Date dataScad;
+
+ private String codJfasParent;
+ private String codTcol;
+ private String suggestedCodJfas;
+
+ public MtbAart getMtbAart() {
+ return mtbAart;
+ }
+
+ public DialogInputLUProdDTO setMtbAart(MtbAart mtbAart) {
+ this.mtbAart = mtbAart;
+ return this;
+ }
+
+ public BigDecimal getNumCnf() {
+ return numCnf;
+ }
+
+ public DialogInputLUProdDTO setNumCnf(BigDecimal numCnf) {
+ this.numCnf = numCnf;
+ return this;
+ }
+
+ public BigDecimal getQtaCnf() {
+ return qtaCnf;
+ }
+
+ public DialogInputLUProdDTO setQtaCnf(BigDecimal qtaCnf) {
+ this.qtaCnf = qtaCnf;
+ return this;
+ }
+
+ public BigDecimal getQtaTot() {
+ return qtaTot;
+ }
+
+ public DialogInputLUProdDTO setQtaTot(BigDecimal qtaTot) {
+ this.qtaTot = qtaTot;
+ return this;
+ }
+
+ public String getPartitaMag() {
+ return partitaMag;
+ }
+
+ public DialogInputLUProdDTO setPartitaMag(String partitaMag) {
+ this.partitaMag = partitaMag;
+ return this;
+ }
+
+ public Date getDataScad() {
+ return dataScad;
+ }
+
+ public DialogInputLUProdDTO setDataScad(Date dataScad) {
+ this.dataScad = dataScad;
+ return this;
+ }
+
+ public String getCodJfasParent() {
+ return codJfasParent;
+ }
+
+ public DialogInputLUProdDTO setCodJfasParent(String codJfasParent) {
+ this.codJfasParent = codJfasParent;
+ return this;
+ }
+
+ public String getCodTcol() {
+ return codTcol;
+ }
+
+ public DialogInputLUProdDTO setCodTcol(String codTcol) {
+ this.codTcol = codTcol;
+ return this;
+ }
+
+ public String getSuggestedCodJfas() {
+ return suggestedCodJfas;
+ }
+
+ public DialogInputLUProdDTO setSuggestedCodJfas(String suggestedCodJfas) {
+ this.suggestedCodJfas = suggestedCodJfas;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdModule.java
new file mode 100644
index 00000000..53bac67c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdModule.java
@@ -0,0 +1,16 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod;
+
+import dagger.Module;
+import dagger.Provides;
+import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
+
+@Module(subcomponents = DialogInputLUProdComponent.class)
+public class DialogInputLUProdModule {
+
+ @Provides
+ DialogInputLUProdViewModel providesDialogInputLUProdViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer, MesRESTConsumer mesRESTConsumer) {
+ return new DialogInputLUProdViewModel(magazzinoRESTConsumer, mesRESTConsumer);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdResultDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdResultDTO.java
new file mode 100644
index 00000000..4f60b0d9
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdResultDTO.java
@@ -0,0 +1,92 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod;
+
+import java.math.BigDecimal;
+
+import it.integry.integrywmsnative.core.model.JtbFasi;
+import it.integry.integrywmsnative.core.model.MtbTCol;
+
+public class DialogInputLUProdResultDTO {
+
+ private BigDecimal numCnf;
+ private BigDecimal pesoCollo;
+ private BigDecimal pesoNetto;
+ private BigDecimal taraPed;
+ private BigDecimal taraCol;
+ private BigDecimal pesoLordo;
+
+ private MtbTCol mtbTCol;
+ private JtbFasi jtbFasi;
+
+
+ public BigDecimal getNumCnf() {
+ return numCnf;
+ }
+
+ public DialogInputLUProdResultDTO setNumCnf(BigDecimal numCnf) {
+ this.numCnf = numCnf;
+ return this;
+ }
+
+ public BigDecimal getPesoCollo() {
+ return pesoCollo;
+ }
+
+ public DialogInputLUProdResultDTO setPesoCollo(BigDecimal pesoCollo) {
+ this.pesoCollo = pesoCollo;
+ return this;
+ }
+
+ public BigDecimal getPesoNetto() {
+ return pesoNetto;
+ }
+
+ public DialogInputLUProdResultDTO setPesoNetto(BigDecimal pesoNetto) {
+ this.pesoNetto = pesoNetto;
+ return this;
+ }
+
+ public BigDecimal getTaraPed() {
+ return taraPed;
+ }
+
+ public DialogInputLUProdResultDTO setTaraPed(BigDecimal taraPed) {
+ this.taraPed = taraPed;
+ return this;
+ }
+
+ public BigDecimal getTaraCol() {
+ return taraCol;
+ }
+
+ public DialogInputLUProdResultDTO setTaraCol(BigDecimal taraCol) {
+ this.taraCol = taraCol;
+ return this;
+ }
+
+ public BigDecimal getPesoLordo() {
+ return pesoLordo;
+ }
+
+ public DialogInputLUProdResultDTO setPesoLordo(BigDecimal pesoLordo) {
+ this.pesoLordo = pesoLordo;
+ return this;
+ }
+
+ public MtbTCol getMtbTCol() {
+ return mtbTCol;
+ }
+
+ public DialogInputLUProdResultDTO setMtbTCol(MtbTCol mtbTCol) {
+ this.mtbTCol = mtbTCol;
+ return this;
+ }
+
+ public JtbFasi getJtbFasi() {
+ return jtbFasi;
+ }
+
+ public DialogInputLUProdResultDTO setJtbFasi(JtbFasi jtbFasi) {
+ this.jtbFasi = jtbFasi;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java
new file mode 100644
index 00000000..abf05859
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java
@@ -0,0 +1,410 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod;
+
+import android.content.res.ColorStateList;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+import android.text.Html;
+import android.text.SpannableString;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableField;
+import androidx.fragment.app.DialogFragment;
+
+import com.annimon.stream.Optional;
+import com.annimon.stream.Stream;
+import com.google.android.material.textfield.TextInputLayout;
+import com.pedromassango.doubleclick.DoubleClick;
+import com.pedromassango.doubleclick.DoubleClickListener;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.JtbFasi;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import it.integry.integrywmsnative.core.model.MtbTCol;
+import it.integry.integrywmsnative.core.utility.UtilityObservable;
+import it.integry.integrywmsnative.databinding.DialogInputLuProdBinding;
+import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
+import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLULineeProdAdapter;
+import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLULineeProdListModel;
+import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloAdapter;
+import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloListModel;
+
+public class DialogInputLUProdView extends BaseDialogFragment implements DialogInputLUProdViewModel.Listener {
+
+ @Inject
+ DialogInputLUProdViewModel mViewModel;
+
+ private final DialogInputLUProdDTO mDialogInputLUProdDTO;
+ private final RunnableArgs mOnComplete;
+ private final Runnable mOnAbort;
+
+ public ObservableField selectedMtbTcol = new ObservableField<>();
+ public ObservableField currentMtbTCol = new ObservableField<>();
+
+ public ObservableField selectedLineaProd = new ObservableField<>();
+ public ObservableField currentLineaProd = new ObservableField<>();
+
+ public ObservableField currentMtbAart = new ObservableField<>();
+
+ public ObservableField currentNumCnf = new ObservableField<>();
+ public ObservableField currentPesoCollo = new ObservableField<>();
+ public ObservableField currentPesoNetto = new ObservableField<>();
+ public ObservableField currentTaraPed = new ObservableField<>();
+ public ObservableField currentTaraCol = new ObservableField<>();
+ public ObservableField currentPesoLordo = new ObservableField<>();
+
+ public ObservableField enabledLineeProd = new ObservableField<>(false);
+
+ public ObservableField enabledNumCnf = new ObservableField<>(true);
+ public ObservableField enabledQtaCnf = new ObservableField<>(false);
+ public ObservableField enabledQtaTot = new ObservableField<>(false);
+ public ObservableField enabledTaraPed = new ObservableField<>(false);
+ public ObservableField enabledTaraCol = new ObservableField<>(false);
+ public ObservableField enabledPesoLordo = new ObservableField<>(true);
+
+
+ private DialogInputLuProdBinding mBindings;
+ private boolean mEnableDataCallback = true;
+
+ private DialogInputLUProdTipoColloAdapter codTcolArrayAdapter = null;
+ private DialogInputLULineeProdAdapter lineeProdArrayAdapter = null;
+
+ public static DialogInputLUProdView newInstance(@NotNull DialogInputLUProdDTO dialogInputLUProdDTO, @NotNull RunnableArgs onComplete, @NotNull Runnable onAbort) {
+ return new DialogInputLUProdView(dialogInputLUProdDTO, onComplete, onAbort);
+ }
+
+ private DialogInputLUProdView(@NotNull DialogInputLUProdDTO dialogInputLUProdDTO, @NotNull RunnableArgs onComplete, @NotNull Runnable onAbort) {
+ super();
+
+ this.mDialogInputLUProdDTO = dialogInputLUProdDTO;
+ this.mOnComplete = onComplete;
+ this.mOnAbort = onAbort;
+ }
+
+
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
+ }
+
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_lu_prod, container, false);
+ mBindings.setLifecycleOwner(this);
+
+ mBindings.toolbar.setTitle("Creazione pedana");
+
+ MainApplication.appComponent
+ .dialogInputLUProdComponent()
+ .create()
+ .inject(this);
+
+ this.mViewModel
+ .setMtbAart(mDialogInputLUProdDTO.getMtbAart())
+ .setInitialNumCnf(mDialogInputLUProdDTO.getNumCnf())
+ .setInitialPesoCollo(mDialogInputLUProdDTO.getQtaCnf())
+ .setInitialPesoNetto(mDialogInputLUProdDTO.getQtaTot());
+
+ mBindings.setView(this);
+ mBindings.setViewmodel(this.mViewModel);
+
+ getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ return mBindings.getRoot();
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ this.init();
+
+ this.mViewModel.setListener(this);
+ this.mViewModel.init(mDialogInputLUProdDTO.getCodJfasParent());
+ }
+
+
+ private void init() {
+ UtilityObservable.addPropertyChanged(this.currentMtbAart, (value) -> {
+ this.currentTaraCol.set(value.getTaraKg());
+ });
+
+ UtilityObservable.addPropertyChanged(this.selectedMtbTcol, (value) -> {
+ if(this.codTcolArrayAdapter != null && this.codTcolArrayAdapter.getDataset() != null) {
+ Optional selectedItem = Stream.of(this.codTcolArrayAdapter.getDataset())
+ .filter(x -> x.toString().equals(value))
+ .findFirst();
+
+ if(selectedItem.isPresent()) {
+ currentMtbTCol.set(selectedItem.get());
+ this.mViewModel.setInternalTipoPed(selectedItem.get().getOriginalModel());
+ }
+ }
+ });
+
+ UtilityObservable.addPropertyChanged(this.currentMtbTCol, (value) -> {
+ this.currentTaraPed.set(value.getOriginalModel().getTaraKg());
+ });
+
+ UtilityObservable.addPropertyChanged(this.selectedLineaProd, (value) -> {
+ if(this.lineeProdArrayAdapter != null && this.lineeProdArrayAdapter.getDataset() != null) {
+ Optional selectedItem = Stream.of(this.lineeProdArrayAdapter.getDataset())
+ .filter(x -> x.toString().equals(value))
+ .findFirst();
+
+ if(selectedItem.isPresent()) {
+ currentLineaProd.set(selectedItem.get());
+ this.mViewModel.setInternalLineaProd(selectedItem.get().getOriginalModel());
+ }
+ }
+ });
+
+ UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> {
+ if (this.mEnableDataCallback) {
+ this.mViewModel.setNumCnf(value);
+ }
+ });
+
+ UtilityObservable.addPropertyChanged(this.currentPesoCollo, (value) -> {
+ if (this.mEnableDataCallback) {
+ this.mViewModel.setPesoCollo(value);
+ }
+ });
+
+ UtilityObservable.addPropertyChanged(this.currentPesoNetto, (value) -> {
+ if(value != null) {
+ this.currentPesoNetto.set(value.setScale(0, RoundingMode.HALF_UP));
+ }
+ if (this.mEnableDataCallback) {
+ this.mViewModel.setPesoNetto(value);
+ }
+ });
+
+ UtilityObservable.addPropertyChanged(this.currentTaraPed, (value) -> {
+ if (this.mEnableDataCallback) {
+ this.mViewModel.setTaraPed(value);
+ }
+ });
+
+ UtilityObservable.addPropertyChanged(this.currentTaraCol, (value) -> {
+ if (this.mEnableDataCallback) {
+ this.mViewModel.setTaraCol(value);
+ }
+ });
+
+ UtilityObservable.addPropertyChanged(this.currentPesoLordo, (value) -> {
+ if(value != null) {
+ this.currentPesoLordo.set(value.setScale(0, RoundingMode.HALF_UP));
+ }
+ if (this.mEnableDataCallback) {
+ this.mViewModel.setPesoLordo(value);
+ }
+ });
+
+ final ColorStateList textColorsNumCnf = this.mBindings.inputNumCnfLayout.getEditText().getTextColors();
+ final ColorStateList textColorsQtaCnf = this.mBindings.inputQtaCnfLayout.getEditText().getTextColors();
+ final ColorStateList textColorsQtaTot = this.mBindings.inputQtaTotLayout.getEditText().getTextColors();
+ final ColorStateList textColorsTaraPed = this.mBindings.inputTaraPedLayout.getEditText().getTextColors();
+ final ColorStateList textColorsTaraCol = this.mBindings.inputTaraColLayout.getEditText().getTextColors();
+ final ColorStateList textColorsPesoLor = this.mBindings.inputPesoLordoLayout.getEditText().getTextColors();
+
+ UtilityObservable.addPropertyChanged(this.mViewModel.blockedNumCnf, (value) -> {
+ toggleTextInputLayoutError(textColorsNumCnf, this.mBindings.inputNumCnfLayout, value);
+ });
+
+ UtilityObservable.addPropertyChanged(this.mViewModel.blockedPesoCollo, (value) -> {
+ toggleTextInputLayoutError(textColorsQtaCnf, this.mBindings.inputQtaCnfLayout, value);
+ });
+
+ UtilityObservable.addPropertyChanged(this.mViewModel.blockedPesoNetto, (value) -> {
+ toggleTextInputLayoutError(textColorsQtaTot, this.mBindings.inputQtaTotLayout, value);
+ });
+
+ UtilityObservable.addPropertyChanged(this.mViewModel.blockedTaraPed, (value) -> {
+ toggleTextInputLayoutError(textColorsTaraPed, this.mBindings.inputTaraPedLayout, value);
+ });
+
+ UtilityObservable.addPropertyChanged(this.mViewModel.blockedTaraCol, (value) -> {
+ toggleTextInputLayoutError(textColorsTaraCol, this.mBindings.inputTaraColLayout, value);
+ });
+
+ UtilityObservable.addPropertyChanged(this.mViewModel.blockedPesoLordo, (value) -> {
+ toggleTextInputLayoutError(textColorsPesoLor, this.mBindings.inputPesoLordoLayout, value);
+ });
+
+ //Init double taps
+ this.mBindings.inputNumCnfText.setOnClickListener(new DoubleClick(new DoubleClickListener() {
+ @Override
+ public void onSingleClick(View view) {
+ String a = "";
+ }
+
+ @Override
+ public void onDoubleClick(View view) {
+ mViewModel.blockedNumCnf.set(!mViewModel.blockedNumCnf.get());
+ }
+ }));
+
+ this.mBindings.inputQtaCnfText.setOnClickListener(new DoubleClick(new DoubleClickListener() {
+ @Override
+ public void onSingleClick(View view) {
+ String a = "";
+ }
+
+ @Override
+ public void onDoubleClick(View view) {
+ mViewModel.blockedPesoCollo.set(!mViewModel.blockedPesoCollo.get());
+ }
+ }));
+
+ this.mBindings.inputQtaTotText.setOnClickListener(new DoubleClick(new DoubleClickListener() {
+ @Override
+ public void onSingleClick(View view) {
+ String a = "";
+ }
+
+ @Override
+ public void onDoubleClick(View view) {
+ mViewModel.blockedPesoNetto.set(!mViewModel.blockedPesoNetto.get());
+ }
+ }));
+
+ this.mBindings.filledExposedDropdownCodTcol.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ currentMtbTCol.set(codTcolArrayAdapter.getItem(i));
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+ currentMtbTCol.set(null);
+ }
+ });
+
+ this.mBindings.filledExposedDropdownCodTcol.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+ currentLineaProd.set(lineeProdArrayAdapter.getItem(i));
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> adapterView) {
+ currentLineaProd.set(null);
+ }
+ });
+
+ this.mViewModel.getTipiCollo().observe(getViewLifecycleOwner(), tipiCollo -> {
+
+ codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo);
+ mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
+
+ if(mDialogInputLUProdDTO.getCodTcol() != null) {
+ Optional optTCol = Stream.of(tipiCollo)
+ .filter(x -> x.getCodTcol().equalsIgnoreCase(mDialogInputLUProdDTO.getCodTcol()))
+ .findFirst();
+
+ if(optTCol.isPresent())
+ selectedMtbTcol.set(new DialogInputLUProdTipoColloListModel().setOriginalModel(optTCol.get()).toString());
+ }
+
+ });
+
+
+ this.mViewModel.getLineeProd().observe(getViewLifecycleOwner(), lineeProd -> {
+ this.enabledLineeProd.set(lineeProd != null && lineeProd.size() > 0);
+
+ lineeProdArrayAdapter = new DialogInputLULineeProdAdapter(getActivity(), R.layout.array_adapter_single_item, lineeProd);
+ mBindings.filledExposedDropdownCodJfas.setAdapter(lineeProdArrayAdapter);
+
+ if(mDialogInputLUProdDTO.getSuggestedCodJfas() != null) {
+ Optional optFas = Stream.of(lineeProd)
+ .filter(x -> x.getCodJfas().equalsIgnoreCase(mDialogInputLUProdDTO.getSuggestedCodJfas()))
+ .findFirst();
+
+ if(optFas.isPresent())
+ selectedLineaProd.set(new DialogInputLULineeProdListModel().setOriginalModel(optFas.get()).toString());
+ }
+ });
+
+ this.currentMtbAart.set(mDialogInputLUProdDTO.getMtbAart());
+
+ }
+
+
+ private void toggleTextInputLayoutError(ColorStateList originalColorStateList, TextInputLayout textInputLayout, boolean isError) {
+ if (isError) {
+ textInputLayout.setErrorEnabled(true);
+ textInputLayout.setError(" ");
+ textInputLayout.setErrorIconDrawable(null);
+ textInputLayout.getEditText().setTextColor(ContextCompat.getColor(getActivity(), R.color.red_600));
+ textInputLayout.setHintTextAppearance(R.style.ErrorFloatingLabel);
+ } else {
+ textInputLayout.setErrorEnabled(false);
+ textInputLayout.setError(null);
+ textInputLayout.getEditText().setTextColor(originalColorStateList);
+ textInputLayout.setHintTextAppearance(R.style.NormalFloatingLabel);
+ }
+ }
+
+
+
+
+
+ public void resetValues() {
+ this.mViewModel.blockedNumCnf.set(false);
+ this.mViewModel.blockedPesoLordo.set(false);
+
+ this.currentNumCnf.set(mDialogInputLUProdDTO.getNumCnf());
+ }
+
+
+ public void save() {
+ if (this.mViewModel.validate()) {
+ this.mOnComplete.run(this.mViewModel.getResult());
+ dismiss();
+ }
+ }
+
+ @Override
+ public void onDataChanged() {
+ this.mEnableDataCallback = false;
+
+ this.currentNumCnf.set(this.mViewModel.getNumCnf());
+ this.currentPesoCollo.set(this.mViewModel.getPesoCollo());
+ this.currentPesoNetto.set(this.mViewModel.getPesoNetto());
+ this.currentTaraPed.set(this.mViewModel.getTaraPed());
+ this.currentTaraCol.set(this.mViewModel.getTaraCol());
+ this.currentPesoLordo.set(this.mViewModel.getPesoLordo());
+
+ this.mBindings.executePendingBindings();
+
+ this.mEnableDataCallback = true;
+ }
+
+ @Override
+ public void onError(Exception ex) {
+ this.onLoadingEnded();
+ DialogSimpleMessageView
+ .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null)
+ .show(getActivity().getSupportFragmentManager(), "tag");
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java
new file mode 100644
index 00000000..2b7ef57a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java
@@ -0,0 +1,268 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod;
+
+import androidx.databinding.ObservableField;
+import androidx.lifecycle.MutableLiveData;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
+import it.integry.integrywmsnative.core.model.JtbFasi;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import it.integry.integrywmsnative.core.model.MtbTCol;
+import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
+import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
+import it.integry.integrywmsnative.view.dialogs.exception.InvalidGrossWeightQuantityException;
+import it.integry.integrywmsnative.view.dialogs.exception.InvalidProductionLineException;
+import it.integry.integrywmsnative.view.dialogs.exception.InvalidNumCnfQuantityException;
+
+public class DialogInputLUProdViewModel {
+
+ public ObservableField mtbAart = new ObservableField<>();
+
+ public ObservableField blockedNumCnf = new ObservableField<>(false);
+ public ObservableField blockedPesoCollo = new ObservableField<>(false);
+ public ObservableField blockedPesoNetto = new ObservableField<>(false);
+ public ObservableField blockedTaraPed = new ObservableField<>(false);
+ public ObservableField blockedTaraCol = new ObservableField<>(false);
+ public ObservableField blockedPesoLordo = new ObservableField<>(false);
+
+ private final MutableLiveData> mTipiColloLiveData = new MutableLiveData<>();
+ private final MutableLiveData> mLineeProdLiveData = new MutableLiveData<>();
+
+ private BigDecimal initialNumCnf;
+ private BigDecimal initialPesoCollo;
+
+ private BigDecimal internalNumCnf;
+ private BigDecimal internalPesoCollo;
+ private BigDecimal internalPesoNetto;
+ private BigDecimal internalTaraPed;
+ private BigDecimal internalTaraCol;
+ private BigDecimal internalPesoLordo;
+
+ private MtbTCol internalTipoPed;
+ private JtbFasi internalLineaProd;
+
+
+ private Listener mListener;
+
+ private final MagazzinoRESTConsumer mMagazzinoRESTConsumer;
+ private final MesRESTConsumer mMesRESTConsumer;
+
+ @Inject
+ public DialogInputLUProdViewModel(MagazzinoRESTConsumer magazzinoRESTConsumer, MesRESTConsumer mesRESTConsumer) {
+ this.mMagazzinoRESTConsumer = magazzinoRESTConsumer;
+ this.mMesRESTConsumer = mesRESTConsumer;
+ }
+
+ public void init(String codJfasParent) {
+ new Thread(this::sendOnLoadingStarted).start();
+
+ mMagazzinoRESTConsumer.getTipiCollo(tipiCollo -> {
+ this.mTipiColloLiveData.postValue(tipiCollo);
+
+ mMesRESTConsumer.getLineeProduzione(codJfasParent, jtbFasi -> {
+ this.mLineeProdLiveData.postValue(jtbFasi);
+
+ this.internalPesoLordo = calcPesoLordo();
+ this.mListener.onDataChanged();
+
+ this.sendOnLoadingEnded();
+ }, this::sendError);
+ }, this::sendError);
+ }
+
+ public MutableLiveData> getTipiCollo() {
+ return this.mTipiColloLiveData;
+ }
+
+ public MutableLiveData> getLineeProd() {
+ return this.mLineeProdLiveData;
+ }
+
+ public BigDecimal getNumCnf() {
+ return this.internalNumCnf;
+ }
+
+ public BigDecimal getPesoCollo() {
+ return this.internalPesoCollo;
+ }
+
+ public BigDecimal getPesoNetto() {
+ return this.internalPesoNetto;
+ }
+
+ public BigDecimal getTaraPed() {
+ return this.internalTaraPed;
+ }
+
+ public BigDecimal getTaraCol() {
+ return this.internalTaraCol;
+ }
+
+ public BigDecimal getPesoLordo() {
+ return this.internalPesoLordo;
+ }
+
+ public DialogInputLUProdViewModel setMtbAart(MtbAart mtbAart) {
+ this.mtbAart.set(mtbAart);
+ return this;
+ }
+
+ public DialogInputLUProdViewModel setInitialNumCnf(BigDecimal numCnf) {
+ this.initialNumCnf = numCnf;
+ this.internalNumCnf = numCnf;
+ return this;
+ }
+
+ public DialogInputLUProdViewModel setInitialPesoCollo(BigDecimal pesoCollo) {
+ this.initialPesoCollo = pesoCollo;
+ this.internalPesoCollo = pesoCollo;
+ return this;
+ }
+
+ public DialogInputLUProdViewModel setInitialPesoNetto(BigDecimal pesoNetto) {
+ this.internalPesoNetto = pesoNetto;
+ return this;
+ }
+
+
+ public void setNumCnf(BigDecimal numCnf) {
+ this.internalNumCnf = numCnf;
+ this.blockedNumCnf.set(!(UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) || numCnf == null));
+
+ if (this.internalNumCnf != null) {
+ if (!this.blockedPesoLordo.get()) {
+ this.internalPesoNetto = UtilityBigDecimal.multiply(numCnf, this.internalPesoCollo);
+ this.internalPesoLordo = calcPesoLordo();
+ } else {
+ BigDecimal taraPed = internalTaraPed != null ? internalTaraPed : BigDecimal.ZERO;
+
+ this.internalPesoCollo = UtilityBigDecimal.divide(this.internalPesoLordo.subtract(taraPed), internalNumCnf).subtract(internalTaraCol);
+ this.internalPesoNetto = UtilityBigDecimal.multiply(this.internalNumCnf, internalPesoCollo);
+ }
+
+ }
+
+ this.mListener.onDataChanged();
+ }
+
+ public void setPesoCollo(BigDecimal pesoCollo) {
+ this.internalPesoCollo = pesoCollo;
+ this.internalPesoLordo = calcPesoLordo();
+
+ this.mListener.onDataChanged();
+ }
+
+ public void setPesoNetto(BigDecimal qtaTot) {
+ this.internalPesoNetto = qtaTot;
+ }
+
+ public void setTaraPed(BigDecimal taraPed) {
+ this.internalTaraPed = taraPed;
+
+ if (!this.blockedPesoLordo.get()) {
+ if(internalNumCnf == null) internalNumCnf = initialNumCnf;
+
+ this.internalPesoNetto = UtilityBigDecimal.multiply(internalNumCnf, this.internalPesoCollo);
+ this.internalPesoLordo = calcPesoLordo();
+ } else {
+ this.internalPesoCollo = UtilityBigDecimal.divide(this.internalPesoLordo.subtract(taraPed), internalNumCnf).subtract(internalTaraCol);
+ this.internalPesoNetto = UtilityBigDecimal.multiply(this.internalNumCnf, internalPesoCollo);
+ }
+
+ this.mListener.onDataChanged();
+ }
+
+ public void setTaraCol(BigDecimal taraCol) {
+ this.internalTaraCol = taraCol;
+ }
+
+ public void setPesoLordo(BigDecimal pesoLordo) {
+ this.internalPesoLordo = pesoLordo;
+ this.blockedPesoLordo.set(!(UtilityBigDecimal.equalsTo(pesoLordo, BigDecimal.ZERO) || pesoLordo == null));
+
+ if (internalPesoLordo != null) {
+ if(internalNumCnf == null) internalNumCnf = initialNumCnf;
+
+ BigDecimal taraPed = internalTaraPed != null ? internalTaraPed : BigDecimal.ZERO;
+ this.internalPesoCollo = UtilityBigDecimal.divide(this.internalPesoLordo.subtract(taraPed), internalNumCnf).subtract(internalTaraCol);
+ this.internalPesoNetto = UtilityBigDecimal.multiply(this.internalNumCnf, internalPesoCollo);
+ } else {
+ this.internalPesoCollo = this.initialPesoCollo;
+ this.internalPesoNetto = UtilityBigDecimal.multiply(this.internalNumCnf, internalPesoCollo);
+ }
+
+ this.mListener.onDataChanged();
+ }
+
+ public DialogInputLUProdViewModel setInternalTipoPed(MtbTCol internalTipoPed) {
+ this.internalTipoPed = internalTipoPed;
+ return this;
+ }
+
+ public DialogInputLUProdViewModel setInternalLineaProd(JtbFasi internalLineaProd) {
+ this.internalLineaProd = internalLineaProd;
+ return this;
+ }
+
+ private BigDecimal calcPesoLordo() {
+ BigDecimal taraPed = internalTaraPed != null ? internalTaraPed : BigDecimal.ZERO;
+ return UtilityBigDecimal.multiply(this.internalNumCnf, this.internalPesoCollo.add(internalTaraCol)).add(taraPed);
+ }
+
+ public boolean validate() {
+ if (this.internalNumCnf == null || UtilityBigDecimal.equalsOrLowerThan(this.internalNumCnf, BigDecimal.ZERO)) {
+ this.mListener.onError(new InvalidNumCnfQuantityException());
+ return false;
+ } else if (this.internalPesoLordo == null || UtilityBigDecimal.equalsOrLowerThan(this.internalPesoLordo, BigDecimal.ZERO)) {
+ this.mListener.onError(new InvalidGrossWeightQuantityException());
+ return false;
+ } else if(this.internalLineaProd == null) {
+ this.mListener.onError(new InvalidProductionLineException());
+ return false;
+ }
+
+ return true;
+ }
+
+
+ public DialogInputLUProdResultDTO getResult() {
+ return new DialogInputLUProdResultDTO()
+ .setNumCnf(this.internalNumCnf)
+ .setPesoCollo(this.internalPesoCollo)
+ .setPesoNetto(this.internalPesoNetto)
+ .setTaraPed(this.internalTaraPed)
+ .setTaraCol(this.internalTaraCol)
+ .setPesoLordo(this.internalPesoLordo)
+ .setMtbTCol(this.internalTipoPed)
+ .setJtbFasi(this.internalLineaProd);
+ }
+
+
+ private void sendOnLoadingStarted() {
+ if (this.mListener != null) mListener.onLoadingStarted();
+ }
+
+ private void sendOnLoadingEnded() {
+ if (this.mListener != null) mListener.onLoadingEnded();
+ }
+
+ private void sendError(Exception ex) {
+ if (this.mListener != null) mListener.onError(ex);
+ }
+
+ public void setListener(Listener listener) {
+ this.mListener = listener;
+ }
+
+ public interface Listener extends ILoadingListener {
+ void onDataChanged();
+
+ void onError(Exception ex);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLULineeProdAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLULineeProdAdapter.java
new file mode 100644
index 00000000..216bc251
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLULineeProdAdapter.java
@@ -0,0 +1,34 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter;
+
+import android.content.Context;
+import android.widget.ArrayAdapter;
+
+import androidx.annotation.NonNull;
+
+import com.annimon.stream.Stream;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.model.JtbFasi;
+
+public class DialogInputLULineeProdAdapter extends ArrayAdapter {
+
+ private final List mDataset;
+
+ public DialogInputLULineeProdAdapter(@NonNull Context context, int resource, @NonNull List objects) {
+ super(context, resource);
+ this.mDataset = Stream.of(objects).map(x -> new DialogInputLULineeProdListModel()
+ .setOriginalModel(x))
+ .toList();
+
+ addAll(mDataset);
+ }
+
+ public List getDataset() {
+ return this.mDataset;
+ }
+
+ public JtbFasi getOriginalModelItem(int position) {
+ return mDataset.get(position).getOriginalModel();
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLULineeProdListModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLULineeProdListModel.java
new file mode 100644
index 00000000..0dff9bc5
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLULineeProdListModel.java
@@ -0,0 +1,22 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter;
+
+import it.integry.integrywmsnative.core.model.JtbFasi;
+
+public class DialogInputLULineeProdListModel {
+
+ private JtbFasi originalModel;
+
+ public JtbFasi getOriginalModel() {
+ return originalModel;
+ }
+
+ public DialogInputLULineeProdListModel setOriginalModel(JtbFasi originalModel) {
+ this.originalModel = originalModel;
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return originalModel.getCodJfas();
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java
new file mode 100644
index 00000000..c1034507
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java
@@ -0,0 +1,35 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter;
+
+import android.content.Context;
+import android.widget.ArrayAdapter;
+
+import androidx.annotation.NonNull;
+
+import com.annimon.stream.Stream;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.model.MtbTCol;
+
+public class DialogInputLUProdTipoColloAdapter extends ArrayAdapter {
+
+ private final List mDataset;
+
+ public DialogInputLUProdTipoColloAdapter(@NonNull Context context, int resource, @NonNull List objects) {
+ super(context, resource);
+ this.mDataset = Stream.of(objects).map(x -> new DialogInputLUProdTipoColloListModel()
+ .setOriginalModel(x))
+ .toList();
+
+ addAll(mDataset);
+ }
+
+ public List getDataset() {
+ return this.mDataset;
+ }
+
+ public MtbTCol getOriginalModelItem(int position) {
+ return mDataset.get(position).getOriginalModel();
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloListModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloListModel.java
new file mode 100644
index 00000000..c6bb6ce9
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloListModel.java
@@ -0,0 +1,25 @@
+package it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter;
+
+import org.jetbrains.annotations.NotNull;
+
+import it.integry.integrywmsnative.core.model.MtbTCol;
+
+public class DialogInputLUProdTipoColloListModel {
+
+ private MtbTCol originalModel;
+
+ public MtbTCol getOriginalModel() {
+ return originalModel;
+ }
+
+ public DialogInputLUProdTipoColloListModel setOriginalModel(MtbTCol originalModel) {
+ this.originalModel = originalModel;
+ return this;
+ }
+
+ @NotNull
+ @Override
+ public String toString() {
+ return originalModel.getCodTcol() + " - " + originalModel.getDescrizione();
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java
index 0857cc1c..82d6604e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java
@@ -5,7 +5,6 @@ import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
-import android.view.View;
import android.widget.ArrayAdapter;
import androidx.databinding.DataBindingUtil;
@@ -14,12 +13,10 @@ import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
-import java.util.ArrayList;
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.RunnableArgsss;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
@@ -96,7 +93,7 @@ public class DialogInputPeso {
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
- MagazzinoRESTConsumer.getTipiCollo(codTcols -> {
+ MagazzinoRESTConsumer.getTipiColloStatic(codTcols -> {
this.codTcolList = codTcols;
List codTcolDescriptions = Stream.of(codTcols)
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java
index 5d005722..82353801 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java
@@ -3,6 +3,8 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.ColorStateList;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.text.Html;
import android.text.InputType;
@@ -135,6 +137,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
mBindings.inputQtaTotText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
}
+ getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
return mBindings.getRoot();
}
@@ -362,6 +365,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
public void onError(Exception ex) {
DialogSimpleMessageView
.makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null)
- .show(getActivity().getSupportFragmentManager(), "tag");;
+ .show(getActivity().getSupportFragmentManager(), "tag");
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java
index d65f4722..7ee06dc3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java
@@ -15,10 +15,10 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
-import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidBatchLotException;
-import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidExpireDateException;
-import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidQtaCnfQuantityException;
-import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidQuantityException;
+import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException;
+import it.integry.integrywmsnative.view.dialogs.exception.InvalidExpireDateException;
+import it.integry.integrywmsnative.view.dialogs.exception.InvalidQtaCnfQuantityException;
+import it.integry.integrywmsnative.view.dialogs.exception.InvalidQuantityException;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowNumCnfAvailableQuantityException;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowNumCnfOrderedQuantityException;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowQtaTotAvailableQuantityException;
diff --git a/app/src/main/res/drawable/ic_clock_circle_outline_24dp.xml b/app/src/main/res/drawable/ic_clock_circle_outline_24dp.xml
new file mode 100644
index 00000000..04584e89
--- /dev/null
+++ b/app/src/main/res/drawable/ic_clock_circle_outline_24dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_erase_96.png b/app/src/main/res/drawable/ic_erase_96.png
new file mode 100644
index 00000000..de7c5565
Binary files /dev/null and b/app/src/main/res/drawable/ic_erase_96.png differ
diff --git a/app/src/main/res/drawable/ic_pause_circle_filled_24dp.xml b/app/src/main/res/drawable/ic_pause_circle_filled_24dp.xml
new file mode 100644
index 00000000..2b123c37
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause_circle_filled_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_pause_circle_outline_24dp.xml b/app/src/main/res/drawable/ic_pause_circle_outline_24dp.xml
new file mode 100644
index 00000000..dbf5f428
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause_circle_outline_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_person_filled_24dp.xml b/app/src/main/res/drawable/ic_person_filled_24dp.xml
new file mode 100644
index 00000000..bd8dc808
--- /dev/null
+++ b/app/src/main/res/drawable/ic_person_filled_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_play_circle_filled_24dp.xml b/app/src/main/res/drawable/ic_play_circle_filled_24dp.xml
new file mode 100644
index 00000000..ef788a96
--- /dev/null
+++ b/app/src/main/res/drawable/ic_play_circle_filled_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_play_circle_outline_24dp.xml b/app/src/main/res/drawable/ic_play_circle_outline_24dp.xml
new file mode 100644
index 00000000..c4f8875e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_play_circle_outline_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_workers_96px.png b/app/src/main/res/drawable/ic_workers_96px.png
new file mode 100644
index 00000000..1153ad5e
Binary files /dev/null and b/app/src/main/res/drawable/ic_workers_96px.png differ
diff --git a/app/src/main/res/drawable/label_primary_text.xml b/app/src/main/res/drawable/label_primary_text.xml
new file mode 100644
index 00000000..86d4e4bb
--- /dev/null
+++ b/app/src/main/res/drawable/label_primary_text.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/label_success_text.xml b/app/src/main/res/drawable/label_success_text.xml
new file mode 100644
index 00000000..c22e3dff
--- /dev/null
+++ b/app/src/main/res/drawable/label_success_text.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/label_warning_text.xml b/app/src/main/res/drawable/label_warning_text.xml
new file mode 100644
index 00000000..c323c3bc
--- /dev/null
+++ b/app/src/main/res/drawable/label_warning_text.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml b/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml
new file mode 100644
index 00000000..34954166
--- /dev/null
+++ b/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml
@@ -0,0 +1,366 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml
new file mode 100644
index 00000000..cc2ecead
--- /dev/null
+++ b/app/src/main/res/layout-land-hdpi/dialog_input_quantity_v2.xml
@@ -0,0 +1,587 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land-xhdpi/dialog_input_quantity_v2.xml b/app/src/main/res/layout-land-xhdpi/dialog_input_quantity_v2.xml
new file mode 100644
index 00000000..cdc89f25
--- /dev/null
+++ b/app/src/main/res/layout-land-xhdpi/dialog_input_quantity_v2.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/bottom_sheet__mtb_colr_edit.xml b/app/src/main/res/layout/bottom_sheet__mtb_colr_edit.xml
index 96db7da1..4b28e597 100644
--- a/app/src/main/res/layout/bottom_sheet__mtb_colr_edit.xml
+++ b/app/src/main/res/layout/bottom_sheet__mtb_colr_edit.xml
@@ -7,6 +7,7 @@
+
+ app:layout_constraintGuide_percent="@{!view.enabledEditButton ? 0f : (!view.enabledDeleteButton ? 1f : 0.50f)}"
+ tools:layout_constraintGuide_percent="0.5f"/>
+ android:tint="@color/green_600"
+ android:duplicateParentState="true"/>
+ android:text="@string/edit"
+ android:duplicateParentState="true" />
@@ -198,6 +204,7 @@
android:orientation="vertical"
android:clickable="true"
android:focusable="true"
+ app:visibility="@{view.enabledDeleteButton ? View.VISIBLE : View.GONE}"
app:singleClick="@{() -> view.deleteMtbColr()}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/guideline_action"
diff --git a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml
index 1ffdffb4..4569f54f 100644
--- a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml
+++ b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml
@@ -391,7 +391,8 @@
android:layout_height="match_parent"
android:background="#99000000"
android:visibility="gone"
- singleClick="@{() -> view.collapseMtbColrActionSheet()}"/>
+ android:clickable="true"
+ android:focusable="true"/>
+ tools:text="Preparato da: Utente" />
diff --git a/app/src/main/res/layout/dialog_input_lu_prod.xml b/app/src/main/res/layout/dialog_input_lu_prod.xml
new file mode 100644
index 00000000..1b466f1c
--- /dev/null
+++ b/app/src/main/res/layout/dialog_input_lu_prod.xml
@@ -0,0 +1,353 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml
index 3a55b90b..75a3655c 100644
--- a/app/src/main/res/layout/dialog_input_quantity_v2.xml
+++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml
@@ -6,9 +6,7 @@
-
-
diff --git a/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml b/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml
index 3ab50b4e..99bf8da1 100644
--- a/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml
+++ b/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml
@@ -331,7 +331,9 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#99000000"
- android:visibility="gone" />
+ android:visibility="gone"
+ android:clickable="true"
+ android:focusable="true" />
+ android:visibility="gone"
+ android:clickable="true"
+ android:focusable="true" />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml
new file mode 100644
index 00000000..a943162b
--- /dev/null
+++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml
@@ -0,0 +1,510 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml
new file mode 100644
index 00000000..3f49ca22
--- /dev/null
+++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_list.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list.xml
new file mode 100644
index 00000000..e738d5b7
--- /dev/null
+++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_group_model.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_group_model.xml
new file mode 100644
index 00000000..3d5544e3
--- /dev/null
+++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_group_model.xml
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_model.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_model.xml
new file mode 100644
index 00000000..f219f78b
--- /dev/null
+++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_list__list_model.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/lista_bancali_list_model.xml b/app/src/main/res/layout/lista_bancali_list_model.xml
index 17babf85..61be3a47 100644
--- a/app/src/main/res/layout/lista_bancali_list_model.xml
+++ b/app/src/main/res/layout/lista_bancali_list_model.xml
@@ -2,14 +2,18 @@
-
-
-
-
+
+
+
+
+
+
+
+
+ type="MtbColt" />
@@ -96,7 +100,7 @@
android:textSize="14sp"
android:text="@{`Preparato da: ` + mtbColt.preparatoDa}"
android:visibility="@{UtilityString.isNullOrEmpty(mtbColt.preparatoDa) ? View.INVISIBLE : View.VISIBLE}"
- tools:text="Preparato da: Lisa Sportelli" />
+ tools:text="Preparato da: Utente" />
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index c3f6e08f..acb6de02 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -146,17 +146,25 @@
Num cnf
+ Colli per pedana
+ KG per collo
+ Peso totale
+ Tara pedana
+ Tara collo
Salvataggio
Salvataggio completato
Stampa completata
+ quantità di colli inserita non è valida]]>
+ peso lordo inserito non è valido]]>
quantità inserita supera la quantità massima disponibile]]>
quantità per confezioni inserita non è valida]]>
numero di confezioni inserito supera la quantità massima disponibile]]>
quantità inserita supera la quantità ordinata]]>
numero di confezioni inserito supera la quantità ordinata]]>
+ Linea di produzione non valida]]>
data di scadenza inserita non è valida]]>
lotto inserito non è valido]]>
Impostazioni
@@ -314,6 +322,7 @@
Griglia:
Seleziona / Crea ordine
Aggiungi
+ Aggiungi pedana
Chiudi
Chiudi ed esporta ordine
Chiudi ordine
@@ -330,4 +339,5 @@
Basket
Usa
Indietro
+ Rientro merce
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 72592d08..bbd38fa4 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -31,12 +31,28 @@
+ #1A1A73E8
+ #331A73E8
+ #4D1A73E8
+ #661A73E8
+ #801A73E8
+ #991A73E8
+ #B31A73E8
+ #CC1A73E8
+ #E61A73E8
+
+
#2d42a5f5
+ #BBDEFB
+ #64B5F6
#1976D2
+ #1565C0
#795548
+ #C8E6C9
+ #A5D6A7
#81c784
#66bb6a
#884CAF50
@@ -84,6 +100,8 @@
#009688
+ #FFF9C4
#FDD835
+ #F9A825
diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml
index 012c51fd..4181bf2c 100644
--- a/app/src/main/res/values/config.xml
+++ b/app/src/main/res/values/config.xml
@@ -27,6 +27,7 @@
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fe0256d6..7da2baee 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -144,17 +144,25 @@
Pcks num
Qty x pck
Tot qty
+ Pcks num
+ Qty x pck
+ Tot qty
+ Tare LU
+ Tare pckg
Saving
Data saved
Printing job completed
amount is not valid, please check it]]>
+ package\'s amount is not valid, please check it]]>
+ gross weight is not valid, please check it]]>
package\'s quantity is not valid, please check it]]>
amount exceeds the maximum amount available, please check it]]>
package\'s amount exceeds the maximum amount available, please check it]]>
amount exceeds the total ordered amount, please check it]]>
package\'s amount exceeds the total ordered amount, please check it]]>
+ production line]]>
expire date is not valid, please check it.]]>
batch lot is not valid, please check it.]]>
Settings
@@ -320,6 +328,7 @@
Grid:
Select/Create order
Add
+ Add LU
Close
Close and export
Close order
@@ -338,5 +347,6 @@
Back
Gramm Customization
- Hello blank fragment
+ Ret of processing goods
+ Agricoper customizations
diff --git a/build.gradle b/build.gradle
index 240d4432..b933f532 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,7 +10,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.2.1'
+ classpath 'com.android.tools.build:gradle:4.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.5'
classpath 'com.google.firebase:perf-plugin:1.3.5'
diff --git a/build_all.bat b/build_all.bat
index a53c4b76..6c731ebe 100644
--- a/build_all.bat
+++ b/build_all.bat
@@ -1,4 +1,5 @@
call build_azienda.bat _base
+call build_azienda.bat agricoper
call build_azienda.bat frudis
call build_azienda.bat gramm
call build_azienda.bat ime
diff --git a/dynamic_agricoper/.gitignore b/dynamic_agricoper/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/dynamic_agricoper/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/dynamic_agricoper/build.gradle b/dynamic_agricoper/build.gradle
new file mode 100644
index 00000000..f83d25cc
--- /dev/null
+++ b/dynamic_agricoper/build.gradle
@@ -0,0 +1,31 @@
+plugins {
+ id 'com.android.dynamic-feature'
+}
+android {
+ compileSdkVersion 30
+
+ defaultConfig {
+ applicationId "it.integry.wms.dynamic_customization"
+ minSdkVersion 21
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ implementation project(":app")
+ testImplementation 'junit:junit:4.+'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.2'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+ androidTestImplementation 'androidx.annotation:annotation:1.2.0'
+}
\ No newline at end of file
diff --git a/dynamic_agricoper/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java b/dynamic_agricoper/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..32e9a1db
--- /dev/null
+++ b/dynamic_agricoper/src/androidTest/java/it/integry/wms/dynamic_customization/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package it.integry.wms.dynamic_customization;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ assertEquals("it.integry.wms.dynamic_customization", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/dynamic_agricoper/src/main/AndroidManifest.xml b/dynamic_agricoper/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..b2892323
--- /dev/null
+++ b/dynamic_agricoper/src/main/AndroidManifest.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
new file mode 100644
index 00000000..ebaa46ce
--- /dev/null
+++ b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
@@ -0,0 +1,29 @@
+package it.integry.wms.dynamic_customization;
+
+import android.content.Context;
+import android.util.Log;
+
+import it.integry.integrywmsnative.core.class_router.ClassRouter;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.wms.dynamic_customization.extensions.CustomConfiguration;
+import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita;
+import it.integry.wms.dynamic_customization.extensions.OrdiniVendita;
+
+public class DynamicContext {
+
+ public void init(Context context) {
+ Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda Agricoper");
+
+ try {
+ ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class);
+ ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class);
+ ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class);
+ } catch (Exception ex) {
+ UtilityExceptions.defaultException(context, ex);
+ }
+
+ Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda Agricoper COMPLETATO");
+
+ }
+
+}
diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
new file mode 100644
index 00000000..e5d3efbf
--- /dev/null
+++ b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/CustomConfiguration.java
@@ -0,0 +1,12 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
+import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
+
+public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration {
+
+ public CustomConfiguration() {
+ configurations.put(Keys.MENU_CONFIGURATION, new MenuConfigurationAGRICOPER());
+ }
+
+}
diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java
new file mode 100644
index 00000000..77adb537
--- /dev/null
+++ b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/FiltroOrdiniVendita.java
@@ -0,0 +1,21 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita;
+
+public class FiltroOrdiniVendita implements IFiltroOrdiniVendita {
+
+ @Override
+ public boolean shoudShowCodMdepFilter() {
+ return false;
+ }
+
+ @Override
+ public boolean shoudShowIdViaggioFilter() {
+ return false;
+ }
+
+ @Override
+ public boolean shoudShowAgenteFilter() {
+ return false;
+ }
+}
diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationAGRICOPER.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationAGRICOPER.java
new file mode 100644
index 00000000..ab851f87
--- /dev/null
+++ b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/MenuConfigurationAGRICOPER.java
@@ -0,0 +1,53 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
+import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragment;
+import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
+import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
+
+public class MenuConfigurationAGRICOPER extends BaseMenuConfiguration {
+
+ public MenuConfigurationAGRICOPER() {
+
+
+
+ this
+ .addGroup(
+ new MenuGroup()
+ .setGroupText(it.integry.integrywmsnative.R.string.manufacture)
+ .setGroupId(it.integry.integrywmsnative.R.id.nav_group_produzione)
+
+ .addItem(new MenuItem()
+ .setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce)
+ .setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title)
+ .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione)
+ .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external)
+ .setFragmentFactory(ProdRientroMerceFragment::newInstance))
+
+ ).addGroup(
+ new MenuGroup()
+ .setGroupText(it.integry.integrywmsnative.R.string.internal_handling)
+ .setGroupId(it.integry.integrywmsnative.R.id.nav_group_movimentazione_interna)
+
+ .addItem(new MenuItem()
+ .setID(it.integry.integrywmsnative.R.id.nav_versamento_merce)
+ .setTitleText(it.integry.integrywmsnative.R.string.versamento_merce_fragment_title)
+ .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_versamento_merce)
+ .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf)
+ .setFragmentFactory(VersamentoMerceFragment::newInstance))
+
+ .addItem(new MenuItem()
+ .setID(it.integry.integrywmsnative.R.id.nav_rettifica_giacenze)
+ .setTitleText(it.integry.integrywmsnative.R.string.rettifica_giacenze_fragment_title)
+ .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_rettifica_giacenze)
+ .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_empty_box)
+ .setFragmentFactory(RettificaGiacenzeFragment::newInstance))
+
+
+ );
+
+
+
+ }
+
+}
diff --git a/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
new file mode 100644
index 00000000..e5c916e6
--- /dev/null
+++ b/dynamic_agricoper/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
@@ -0,0 +1,23 @@
+package it.integry.wms.dynamic_customization.extensions;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita;
+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.rest.model.OrdineUscitaInevasoDTO;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+
+public class OrdiniVendita implements IOrdiniVendita {
+
+
+ @Override
+ public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
+// UtilityToast.showToast("Avviato metodo in BaseFeature");
+
+ ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
+ onComplete,
+ onFailed);
+ }
+}
diff --git a/dynamic_agricoper/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java b/dynamic_agricoper/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java
new file mode 100644
index 00000000..1e97227b
--- /dev/null
+++ b/dynamic_agricoper/src/test/java/it/integry/wms/dynamic_customization/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package it.integry.wms.dynamic_customization;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
index de37a9a3..f78de76e 100644
--- a/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
+++ b/dynamic_gramm/src/main/java/it/integry/wms/dynamic_customization/DynamicContext.java
@@ -12,7 +12,7 @@ import it.integry.wms.dynamic_customization.extensions.OrdiniVendita;
public class DynamicContext {
public void init(Context context) {
- Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda IME");
+ Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda GRAMM");
try {
ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class);
@@ -22,7 +22,7 @@ public class DynamicContext {
UtilityExceptions.defaultException(context, ex);
}
- Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda IME COMPLETATO");
+ Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda GRAMM COMPLETATO");
}
diff --git a/settings.gradle b/settings.gradle
index 3eeba691..10f357dd 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1,2 @@
include ':app', ':dynamic_gramm', ':pointmobilescannerlibrary', ':dynamic_vgalimenti', ':dynamic__base', ':zebrascannerlibrary', ':honeywellscannerlibrary', ':dynamic_ime', ':dynamic_frudis', ':dynamic_saporiveri_pv', ':keyobardemulatorscannerlibrary', ':barcode_base_android_library', ':dynamic_saporiveri'
+include ':dynamic_agricoper'