diff --git a/app/build.gradle b/app/build.gradle
index 57aa1234..618cf942 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -91,27 +91,27 @@ dependencies {
//Firebase
// Import the Firebase BoM
- implementation platform('com.google.firebase:firebase-bom:25.12.0')
+ implementation platform('com.google.firebase:firebase-bom:26.0.0')
+ implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-core'
implementation 'com.google.firebase:firebase-crash'
- implementation 'com.google.firebase:firebase-perf'
implementation 'com.google.firebase:firebase-crashlytics'
- implementation 'com.google.firebase:firebase-analytics'
- implementation 'com.google.android.gms:play-services-basement:17.4.0'
+ implementation 'com.google.firebase:firebase-perf'
+ implementation 'com.google.android.gms:play-services-basement:17.5.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.3.0-alpha03'
- implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.3'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
- implementation 'androidx.preference:preference:1.1.1'
+ implementation 'androidx.preference:preference-ktx:1.1.1'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.annimon:stream:1.2.1'
- implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0'
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'
implementation 'org.apache.commons:commons-text:1.9'
diff --git a/app/google-services.json b/app/google-services.json
index bab7083e..4b6560c5 100644
--- a/app/google-services.json
+++ b/app/google-services.json
@@ -14,14 +14,6 @@
}
},
"oauth_client": [
- {
- "client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
- "client_type": 1,
- "android_info": {
- "package_name": "it.integry.integrywmsnative",
- "certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
- }
- },
{
"client_id": "963231271247-59qdc1vobbnjfp135ce4hv12c53s9hse.apps.googleusercontent.com",
"client_type": 1,
@@ -30,6 +22,14 @@
"certificate_hash": "3b6d97a981f446f5011049d781aeb9960f9352af"
}
},
+ {
+ "client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
+ "client_type": 1,
+ "android_info": {
+ "package_name": "it.integry.integrywmsnative",
+ "certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
+ }
+ },
{
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
"client_type": 3
@@ -41,20 +41,13 @@
}
],
"services": {
- "analytics_service": {
- "status": 1
- },
"appinvite_service": {
- "status": 2,
"other_platform_oauth_client": [
{
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
"client_type": 3
}
]
- },
- "ads_service": {
- "status": 2
}
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 62d398b2..2ebbabd5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,10 +25,14 @@
android:windowSoftInputMode="adjustNothing" />
+
onComplete);
+
void onLUOpened(MtbColt mtbColt);
void onLUClosed();
+
+ void onRowSaved();
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILoadingListener.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILoadingListener.java
index f77f00f0..a02d3378 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILoadingListener.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILoadingListener.java
@@ -1,7 +1,9 @@
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
public interface ILoadingListener {
+
void onLoadingStarted();
void onLoadingEnded();
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java
index 1f2d8cef..88a823ea 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java
@@ -141,6 +141,8 @@ public class DtbDocr {
private MtbAart mtbAart;
+ private String dataScadPartitaMag;
+
public String getCodAnag() {
return codAnag;
}
@@ -739,6 +741,19 @@ public class DtbDocr {
return this;
}
+ public String getDataScadPartitaMag() {
+ return dataScadPartitaMag;
+ }
+
+ public Date getDataScadPartitaMagD() {
+ return UtilityDate.recognizeDateWithExceptionHandler(getDataScadPartitaMag());
+ }
+
+ public DtbDocr setDataScadPartitaMag(String dataScadPartitaMag) {
+ this.dataScadPartitaMag = dataScadPartitaMag;
+ return this;
+ }
+
public MtbAart getMtbAart() {
return mtbAart;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java
index 16dcb743..dc73ded6 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java
@@ -6,7 +6,6 @@ import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
@@ -18,6 +17,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityThread;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO;
@@ -84,7 +84,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
}
ordineDTO.setChiaveGriglia(griglia.getCodAlis());
- ordineDTO.setDataConsD(new Date());
+ ordineDTO.setDataConsD(UtilityDate.getDateInstance());
ordineDTO.setArtRows(artRows);
saveDTO.setGestione("O");
saveDTO.setOrdineDTO(ordineDTO);
@@ -101,7 +101,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
if (dtoList.size() > 0){
DtbOrdt dto = dtoList.get(0);
ordine.setTransmitted(true);
- ordine.setTransmissionDate(new Date());
+ ordine.setTransmissionDate(UtilityDate.getDateInstance());
ordine.setGestione(dto.getGestione());
ordine.setDataOrdS(dto.getDataOrd());
ordine.setCodMdep(dto.getCodMdep());
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java
index 79b8db0d..69e27a21 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java
@@ -26,6 +26,14 @@ public class UtilityBigDecimal {
return input.compareTo(toCompareWith) < 0;
}
+ public static boolean equalsOrLowerThan(BigDecimal input, BigDecimal toCompareWith) {
+ return equalsTo(input, toCompareWith) || lowerThan(input, toCompareWith);
+ }
+
+ public static boolean equalsOrGreaterThan(BigDecimal input, BigDecimal toCompareWith) {
+ return equalsTo(input, toCompareWith) || greaterThan(input, toCompareWith);
+ }
+
public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) {
if(input1 == null) return input2;
if(input2 == null) return input1;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java
index 784fabd7..a026c015 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java
@@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
@@ -246,7 +247,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
accettazioneListModel.setQtaEvasa(numCnfEvasa);
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
- accettazioneListModel.setUntMis("col");
+ accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
} else {
BigDecimal qtaEvasa = BigDecimal.ZERO;
@@ -299,7 +300,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
accettazioneListModel.setQtaEvasa(numCnfEvasa);
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
- accettazioneListModel.setUntMis("col");
+ accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
} else {
BigDecimal qtaEvasa = BigDecimal.ZERO;
@@ -353,7 +354,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
accettazioneListModel.setQtaEvasa(numCnfEvasa);
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
- accettazioneListModel.setUntMis("col");
+ accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
} else {
BigDecimal qtaEvasa = BigDecimal.ZERO;
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 84209fc5..165b7bca 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
@@ -493,10 +493,30 @@ public class AccettazionePickingViewModel {
}
}
+ BigDecimal initialNumCnf;
+ BigDecimal initialQtaCnf;
+ BigDecimal initialQtaTot;
+
+ if (qtaColDaPrelevare != null) {
+ initialNumCnf = numCnfDaPrelevare;
+ initialQtaCnf = qtaCnfDaPrelevare;
+ initialQtaTot = qtaColDaPrelevare;
+
+ } else {
+ initialNumCnf = totalNumCnfOrd;
+ initialQtaCnf = qtaCnfOrd;
+ initialQtaTot = totalQtaOrd;
+ }
+
+ if(UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) {
+ initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana();
+ initialQtaTot = initialNumCnf.multiply(initialQtaCnf);
+ }
+
this.sendOnItemDispatched(
pickingObjectDTO,
pickingObjectDTO.getMtbAart(),
- null, null, null,
+ initialNumCnf, initialQtaCnf, initialQtaTot,
qtaDaEvadere,
numCnfDaEvadere,
qtaCnfDaEvadere,
@@ -904,14 +924,10 @@ public class AccettazionePickingViewModel {
boolean canOverflowQuantity,
RunnableArgss onComplete);
- void onRowSaved();
-
void onFilterApplied(String newValue);
void onFilterRemoved();
- void onMtbColrDeleteRequest(RunnableArgs onComplete);
-
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java
index c994a493..b56e3eb1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java
@@ -7,7 +7,6 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
-import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
@Module(subcomponents = {PickingLiberoComponent.class})
public class PickingLiberoModule {
@@ -16,8 +15,7 @@ public class PickingLiberoModule {
@Singleton
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
- PrinterRESTConsumer printerRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer) {
- return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer);
+ return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
index 9b332953..82b46947 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
@@ -24,11 +24,11 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.VtbDest;
+import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
-import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.settings.SettingsManager;
@@ -37,7 +37,6 @@ 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.gest.spedizione.exceptions.InvalidPesoKGException;
-import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
@@ -48,7 +47,6 @@ public class PickingLiberoViewModel {
private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
- private final PrinterRESTConsumer mPrinterRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
@@ -62,11 +60,9 @@ public class PickingLiberoViewModel {
@Inject
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
- PrinterRESTConsumer printerRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
- this.mPrinterRESTConsumer = printerRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
}
@@ -815,7 +811,6 @@ public class PickingLiberoViewModel {
}
public interface Listener extends ILoadingListener, ILUBaseOperationsListener {
- void onMtbColrDeleteRequest(RunnableArgs onComplete);
void onError(Exception ex);
@@ -840,8 +835,6 @@ public class PickingLiberoViewModel {
boolean canPartitaMagBeChanged,
boolean canLUBeClosed,
RunnableArgss onComplete);
-
- void onRowSaved();
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java
index 845e1d88..da258280 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java
@@ -1,109 +1,135 @@
package it.integry.integrywmsnative.gest.picking_resi;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.text.SpannableString;
+
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
-import androidx.databinding.ObservableField;
-import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.LinearLayoutManager;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.text.SpannableString;
-
import com.annimon.stream.Stream;
import com.tfb.fbtoast.FBToast;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
+import javax.inject.Inject;
+
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.expansion.BaseActivity;
-import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
-import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
+import it.integry.integrywmsnative.core.di.BindableBoolean;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-import it.integry.integrywmsnative.core.model.CommonModelConsts;
+import it.integry.integrywmsnative.core.expansion.RunnableArgss;
+import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
-import it.integry.integrywmsnative.core.report.ReportManager;
+import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
-import it.integry.integrywmsnative.core.utility.UtilityNumber;
-import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
-import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
-import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter;
-import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
-import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
-import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
+import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListModel;
+import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
+import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
+import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
+import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
+import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
-import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
-import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
-import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
+import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
-public class PickingResiActivity extends BaseActivity implements IOnColloClosedCallback {
+public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener {
+
+ private ActivityPickingResiBinding mBindings;
+
+ @Inject
+ PickingResiViewModel mViewmodel;
+
+ private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
+
+ private ObservableArrayList mPickingResiMutableData = new ObservableArrayList<>();
+
+ public BindableBoolean noLUPresent = new BindableBoolean(true);
+ public BindableBoolean noItemsToPick = new BindableBoolean(false);
+ public BindableBoolean bottomSheetEnabled = new BindableBoolean(false);
+
+ private String mTitle;
private List mDocumentiResiList;
- public ObservableList mDtbDocrList;
- private final List mColliRegistrati = new ArrayList<>();
-
- private ActivityPickingResiBinding mBinding;
- private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
-
- public ObservableField currentMtbColt = new ObservableField<>();
-
- private PickingResiListAdapter mAdapter;
private int barcodeScannerIstanceID = -1;
- private String mActivityTitle;
- private String mDefaultGestioneOfUL;
- private String mDefaultCodAnagOfUL;
- private Integer mDefaultSegnoOfUL;
-
+ private boolean mShouldCloseActivity;
public static void startActivity(Context context, String activityTitle, List documentoResoDTOList, Integer segno) {
- String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
-
Intent intent = new Intent(context, PickingResiActivity.class);
+
intent.putExtra("activity_title", activityTitle);
+
+ String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
intent.putExtra("key", consegneCacheKey);
+
intent.putExtra("segno", segno);
+
context.startActivity(intent);
}
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mBinding = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
- mBinding.setViewmodel(this);
-
- this.mDtbDocrList = new ObservableArrayList<>();
-
- mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, this.mBinding.bottomSheetInclude);
- mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
- mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onItemEdited);
- mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onItemDeleted);
-
+ mTitle = getIntent().getStringExtra("activity_title");
mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key"));
- mDefaultSegnoOfUL = getIntent().getIntExtra("segno", +1);
+ int defaultSegnoLU = getIntent().getIntExtra("segno", +1);
- mActivityTitle = getIntent().getStringExtra("activity_title");
+ mBindings = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
- this.initView();
+ MainApplication.appComponent
+ .pickingResiComponent()
+ .create()
+ .inject(this);
+
+ mViewmodel.setListener(this);
+
+ setSupportActionBar(mBindings.toolbar);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ getSupportActionBar().setTitle(mTitle);
+
+ mBindings.setLifecycleOwner(this);
+ mBindings.setPickingResiView(this);
+
+ mBindings.bottomSheetLuContent.init(mBindings.bottomSheetLuContent, null);
+ mBottomSheetFragmentLUContentViewModel = mBindings.bottomSheetLuContent.getViewModelInstance();
+ mBindings.bottomSheetLuContent.setListener(this);
+ mBottomSheetFragmentLUContentViewModel.setListener(this);
+ this.initVars();
+ this.initBarcodeReader();
+ this.initRecyclerView();
+
+
+ String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
+
+ this.mViewmodel.init(mDocumentiResiList, defaultSegnoLU, codMdep);
}
@Override
@@ -114,435 +140,255 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC
@Override
public void onBackPressed() {
- if(mArticoliInColloBottomSheetViewModel.isExpanded()){
- mArticoliInColloBottomSheetViewModel.collapse();
- }
- else if(thereIsAnOpenedUL()) {
- mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> {
- BarcodeManager.removeCallback(barcodeScannerIstanceID);
- super.onBackPressed();
- });
- }
- else {
+ if (this.mBindings.bottomSheetLuContent.isExpanded()) {
+ this.mBindings.bottomSheetLuContent.collapse();
+ } else if (!noLUPresent.get()) {
+ this.mShouldCloseActivity = true;
+ BarcodeManager.removeCallback(barcodeScannerIstanceID);
+ this.mViewmodel.closeLU(true);
+ } else {
BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onBackPressed();
}
}
- private void initView() {
+
+ private void initVars() {
+ this.noLUPresent.addOnPropertyChangedCallback(() -> {
+ this.bottomSheetEnabled.set(!this.noLUPresent.get());
+ });
+ }
+
+ private void initBarcodeReader() {
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
- .setOnScanSuccessfull(this::onScanSuccessful)
+ .setOnScanSuccessfull(onScanSuccessful)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
+ }
+ private void initRecyclerView() {
+ this.mBindings.elevatedToolbar.setRecyclerView(this.mBindings.mainList);
- setSupportActionBar(this.mBinding.toolbar);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ this.mViewmodel.getPickingList().observe(this, updatedData -> {
+ this.mPickingResiMutableData.clear();
+ this.mPickingResiMutableData.addAll(convertDataModelToListModel(updatedData));
+ this.noItemsToPick.set(updatedData.isEmpty());
+ });
- getSupportActionBar().setTitle(mActivityTitle);
+ PickingResiListAdapter pickingResiListAdapter = new PickingResiListAdapter(this, mPickingResiMutableData);
+ this.mBindings.mainList.setAdapter(pickingResiListAdapter);
+ this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(this));
- this.mBinding.elevatedToolbar.setRecyclerView(this.mBinding.mainList);
-
- Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(this);
- UltimeConsegneClienteRESTConsumer.loadDocRowFromConsegna(mDocumentiResiList, dtbDocrToPick -> {
- progressDialog.dismiss();
- this.mDtbDocrList.addAll(dtbDocrToPick);
-
- try {
- this.initDatiPicking();
- } catch (Exception ex) {
- DialogSimpleMessageHelper.showSimpleErrorDialog(this, ex.getMessage());
+ pickingResiListAdapter.setOnItemClicked(clickedItem -> {
+ if (!noLUPresent.get()) {
+ this.mViewmodel.dispatchOrdineRow(clickedItem);
}
-
- this.initList();
- }, ex -> {
- UtilityExceptions.defaultException(this, ex, progressDialog);
});
}
- private void initList() {
- mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList);
- mAdapter.setOnItemClicked(this::onOrdineRowDispatch);
+ private List convertDataModelToListModel(List dataList) {
+ List pickingResiListModels = new ArrayList<>();
- this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this));
- this.mBinding.mainList.setAdapter(mAdapter);
+ Stream.of(dataList)
+ .sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
+ .forEach(x -> {
+
+ PickingResiListModel pickingResiListModel = new PickingResiListModel();
+
+ pickingResiListModel.setGroupTitle(x.getCodDtip() + " - N° " + x.getNumDoc() + " del " + UtilityDate.formatDate(x.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
+ pickingResiListModel.setBadge1(x.getCodMart());
+ pickingResiListModel.setDescrizione(UtilityString.isNull(x.getDescrizioneEstesa(), x.getDescrizione()));
+ pickingResiListModel.setActive(true);
+ pickingResiListModel.setOriginalModel(x);
+
+ BigDecimal qtaColEvasa = BigDecimal.ZERO;
+ BigDecimal numCnfColEvasa = BigDecimal.ZERO;
+
+ for (MtbColr mtbColr : x.getWithdrawRows()) {
+ qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
+ numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
+ }
+
+ if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
+ pickingResiListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
+ pickingResiListModel.setQtaEvasa(numCnfColEvasa);
+ pickingResiListModel.setQtaTot(x.getNumCnf());
+
+ } else {
+ if (x.getMtbAart() != null)
+ pickingResiListModel.setUntMis(x.getMtbAart().getUntMis());
+ else pickingResiListModel.setUntMis(x.getUntDoc());
+ pickingResiListModel.setQtaEvasa(qtaColEvasa);
+ pickingResiListModel.setQtaTot(x.getQtaDoc());
+ }
+
+
+ pickingResiListModels.add(pickingResiListModel);
+ });
+
+ return pickingResiListModels;
}
- private void initDatiPicking() throws Exception {
- List foundGestioni = Stream.of(this.mDocumentiResiList)
- .map(DocumentoResoDTO::getGestione)
- .distinct()
- .withoutNulls()
- .toList();
+ private RunnableArgs onScanSuccessful = data -> {
+ BarcodeManager.disable();
- if(foundGestioni.size() > 1) {
- throw new Exception("Sono stati caricati documenti con diverse gestioni");
- } else mDefaultGestioneOfUL = foundGestioni.get(0);
+ this.openProgress();
+ this.mViewmodel.processBarcodeDTO(data, () -> {
+ BarcodeManager.enable();
+ this.closeProgress();
+ });
+ };
- List foundCodAnags = Stream.of(this.mDocumentiResiList)
- .map(DocumentoResoDTO::getCodAnag)
- .distinct()
- .toList();
+ public void createNewLU() {
+ this.mBindings.mainFab.close(true);
- if(foundCodAnags.size() > 1) {
- throw new Exception("Sono stati caricati documenti con diversi codici anagrafici");
- } else mDefaultCodAnagOfUL = foundCodAnags.get(0);
+ this.openProgress();
- }
-
-
-
-
- private void onScanSuccessful(BarcodeScanDTO data) {
-
- }
-
- public void createNewUL() {
- this.createNewUL(null, null, null, false, true, null);
- }
-
- public void createNewUL(Integer customNumCollo, String customSerCollo, Dialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) {
- this.mBinding.mainFab.close(true);
-
- if (progress == null){
- progress = UtilityProgress.createDefaultProgressDialog(this);
- }
-
- MtbColt mtbColt = new MtbColt();
- mtbColt.initDefaultFields();
- mtbColt .setGestione(mDefaultGestioneOfUL)
- .setSegno(mDefaultSegnoOfUL)
- .setCodAnag(mDefaultCodAnagOfUL)
- .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
- .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
-
-
- if(customNumCollo != null) {
- mtbColt.setNumCollo(customNumCollo);
- }
-
- if(!UtilityString.isNullOrEmpty(customSerCollo)) {
- mtbColt.setSerCollo(customSerCollo);
- }
-
-
- Dialog finalProgress = progress;
- ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, value -> {
-
- value.setDisablePrint(disablePrint);
-
- setULToCurrentContext(value);
-
- if(closeProgress) finalProgress.dismiss();
-
- FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
-
- if(onComplete != null) onComplete.run();
-
- }, ex -> {
- UtilityExceptions.defaultException(this, ex, finalProgress);
- });
-
- }
-
- private void setULToCurrentContext(MtbColt mtbColt){
- if(mtbColt != null && mtbColt.getMtbColr() == null) {
- mtbColt.setMtbColr(new ObservableArrayList<>());
- }
-
- this.currentMtbColt.set(mtbColt);
- mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
- }
-
-
-
-
- public void onOrdineRowDispatch(final WithdrawableDtbDocr item) {
- if(currentMtbColt.get() != null){
-
- List currentMtbColrs = item.getWithdrawRows();
-
- BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO;
- for (MtbColr mtbColr : currentMtbColrs) {
- qtaEvasaTotaleInMtbColr.add(mtbColr.getQtaCol());
- }
-
- BigDecimal qtaDaEvadere = item.getQtaDoc().subtract(qtaEvasaTotaleInMtbColr);
- if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO;
-
- DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
- .setBatchLot(item.getPartitaMag())
- .setCodArtFor(item.getCodArtFor())
- .setMtbAart(item.getMtbAart())
- .setQtaDisponibile(qtaDaEvadere)
- .setQtaTot(qtaDaEvadere)
- .setQtaEvasa(qtaEvasaTotaleInMtbColr)
- .setCanPartitaMagBeChanged(false)
- .setMaxQta(qtaDaEvadere);
-
-
- DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
- onOrdineRowDispatched(item, quantityDTO, closeUL);
-
- }, null).show();
- }
- }
-
-
-
-
- private void onOrdineRowDispatched(WithdrawableDtbDocr item, QuantityDTO quantityDTO, boolean closeUL){
- final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
-
- final MtbColr mtbColr = new MtbColr()
- .setCodMart(item.getCodMart())
- .setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get()))
- .setQtaCol(quantityDTO.qtaTot.getBigDecimal())
- .setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
- .setNumCnf(quantityDTO.numCnf.getBigDecimal())
- .setDescrizione(item.getDescrizioneEstesa())
- .setDatetimeRow(UtilityDate.getDateInstance())
-
- .setCodAnagDoc(item.getCodAnag())
- .setCodDtipDoc(item.getCodDtip())
- .setSerDoc(item.getSerDoc())
- .setNumDoc(item.getNumDoc())
- .setDataDoc(item.getDataDocS())
- .setIdRigaDoc(item.getIdRiga());
-// .setCodJcom(item.getCodJcom());
-
-
-
- mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
-
- MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone();
- cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
-
- cloneMtbColt.setMtbColr(new ObservableArrayList<>());
- cloneMtbColt.getMtbColr().add(mtbColr);
-
- ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> {
-
- mtbColr
- .setDataCollo(value.getDataColloS())
- .setNumCollo(value.getNumCollo())
- .setGestione(value.getGestione())
- .setSerCollo(value.getSerCollo())
- .setRiga(value.getMtbColr().get(0).getRiga())
- .setUntMis(item.getMtbAart().getUntMis())
- .setMtbAart(item.getMtbAart());
-
- item.getWithdrawRows().add(mtbColr);
-
- this.refreshDtbDocrItem(item);
-
- currentMtbColt.get().getMtbColr().add(mtbColr);
-
- //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei
- removeListFilter();
-
- FBToast.successToast(this, this.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
-
- progress.dismiss();
-
-// if(closeUL) onColloClosed(null);
- }, ex -> {
- UtilityExceptions.defaultException(this, ex, progress);
+ this.mViewmodel.createNewLU(null, null, () -> {
+ this.closeProgress();
});
}
-
@Override
- public void onColloClosed(Runnable onComplete, boolean shouldPrint) {
- if(thereIsAnOpenedUL()) {
+ public void onMtbColrEdit(MtbColr mtbColr) {
+ this.mViewmodel.dispatchRowEdit(mtbColr);
+ }
- final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
- progress.show();
+ @Override
+ public void onMtbColrDelete(MtbColr mtbColr) {
+ this.mViewmodel.deleteRow(mtbColr);
+ }
- if(thereIsAnyRowInUL()) {
- NoteAggiuntiveLUDialog.make(this, noteString -> {
+ @Override
+ public void onBottomSheetLUClose() {
+ this.mViewmodel.closeLU(true);
+ }
- MtbColt currentLU = currentMtbColt.get();
+ @Override
+ public void onNoteAggiuntiveRequired(RunnableArgs onComplete, Runnable onAbort) {
+ NoteAggiuntiveLUDialog.make(this, onComplete, onAbort).show();
+ }
- Runnable postNoteSave = () -> {
- ColliMagazzinoRESTConsumer.updateDataFineStatic(
- currentLU,
- () -> printCollo(progress, currentMtbColt.get(), onComplete),
- ex -> UtilityExceptions.defaultException(this, ex, progress));
- };
-
- if(!UtilityString.isNullOrEmpty(noteString)) {
- currentLU.setAnnotazioni(noteString);
-
- ColliMagazzinoRESTConsumer.saveColloStatic(currentLU, mtbColt -> {
- postNoteSave.run();
- }, ex -> UtilityExceptions.defaultException(this, ex, progress));
- } else postNoteSave.run();
-
-
- }, () -> {
-
- }).show();
- } else {
- deleteCollo(progress, onComplete);
- }
+ @Override
+ public void onError(Exception ex) {
+ this.closeProgress();
+ if(ex instanceof InvalidPesoKGException) {
+ UtilityToast.showToast(ex.getMessage());
} else {
- if(onComplete != null) onComplete.run();
- }
- }
-
- private void onItemEdited(MtbColr mtbColrOriginal, MtbColr mtbColrEdited) {
- for(int i = 0; i < mDtbDocrList.size(); i++) {
- int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrOriginal);
-
- if(foundIndex >= 0){
- mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
- mDtbDocrList.get(i).getWithdrawRows().add(foundIndex, mtbColrEdited);
-
- refreshDtbDocrItem(this.mDtbDocrList.get(i));
-
- break;
- }
- }
- }
-
- private void onItemDeleted(MtbColr mtbColrDeleted) {
- for(int i = 0; i < mDtbDocrList.size(); i++) {
- int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrDeleted);
-
- if(foundIndex >= 0){
- mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
-
- refreshDtbDocrItem(this.mDtbDocrList.get(i));
-
- break;
- }
- }
- }
-
- private void printCollo(Dialog progress, MtbColt mtbColtToPrint, Runnable onComplete) {
- DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> {
-
- if(shouldPrint) {
- PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
-
- if (printerList.size() > 0) {
- try {
- singlePrint(mtbColtToPrint, printerList.get(0), () -> {
- postCloseOperations(mtbColtToPrint, onComplete);
- progress.dismiss();
- }, ex -> {
- progress.dismiss();
- String errorMessage = ex.getMessage();
- DialogSimpleMessageHelper.makeErrorDialog(
- this,
- new SpannableString(errorMessage),
- null,
- null,
- R.string.button_ignore_print,
- () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
- });
-
- } catch (Exception ex) {
- UtilityExceptions.defaultException(this, ex, progress);
- postCloseOperations(mtbColtToPrint, onComplete);
- }
- } else {
- progress.dismiss();
- String errorMessage = "Nessuna stampante configurata";
- DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
- }
- }, ex -> {
- UtilityExceptions.defaultException(this, ex, progress);
- });
- } else {
- postCloseOperations(mtbColtToPrint, onComplete);
- progress.dismiss();
- }
- }).show();
- }
-
-
-
- private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onAbort) {
- ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
-
- PrinterRESTConsumer.printColloStatic(
- printerName,
- mtbColtToPrint,
- 1,
- reportName, onComplete, onAbort);
-
- }, onAbort);
- }
-
- private void postCloseOperations(MtbColt generatedMtbColt, Runnable onComplete) {
- this.mColliRegistrati.add(generatedMtbColt);
-
- setULToCurrentContext(null);
-
- for(int i = 0; i < this.mDtbDocrList.size(); i++) {
- WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i);
-
- List withdraws = dtbDocr.getWithdrawRows();
-
- for(int k = 0; k < withdraws.size(); k++) {
- MtbColr withdrawRow = withdraws.get(k);
-
- dtbDocr.setQtaDoc(dtbDocr.getQtaDoc().subtract(withdrawRow.getQtaCol()));
- }
-
- dtbDocr.getWithdrawRows().clear();
-
- if(UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc()) <= 0) {
- this.mDtbDocrList.remove(dtbDocr);
- i--;
- } else this.refreshDtbDocrItem(dtbDocr);
+ UtilityExceptions.defaultException(this, ex, mCurrentProgress);
}
- removeListFilter();
-
- if(onComplete != null) onComplete.run();
+ BarcodeManager.enable();
}
+ @Override
+ public void onItemDispatched(MtbAart mtbAart,
+ BigDecimal initialNumCnf,
+ BigDecimal initialQtaCnf,
+ BigDecimal initialQtaTot,
+ BigDecimal totalQtaAvailable,
+ BigDecimal totalNumCnfAvailable,
+ BigDecimal qtaCnfAvailable,
+ String partitaMag,
+ Date dataScad,
+ RunnableArgss onComplete) {
+ DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
+ .setMtbAart(mtbAart)
+ .setInitialNumCnf(initialNumCnf)
+ .setInitialQtaCnf(initialQtaCnf)
+ .setInitialQtaTot(initialQtaTot)
+ .setTotalQtaAvailable(totalQtaAvailable)
+ .setTotalNumCnfAvailable(totalNumCnfAvailable)
+ .setQtaCnfAvailable(qtaCnfAvailable)
+ .setPartitaMag(partitaMag)
+ .setDataScad(dataScad)
+ .setCanOverflowOrderQuantity(false)
+ .setCanLUBeClosed(false)
+ .setCanPartitaMagBeChanged(false);
- private void deleteCollo(Dialog progress, Runnable onComplete) {
+ DialogInputQuantityV2
+ .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
+ PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
+ .setNumCnf(resultDTO.getNumCnf())
+ .setQtaCnf(resultDTO.getQtaCnf())
+ .setQtaTot(resultDTO.getQtaTot())
+ .setPartitaMag(resultDTO.getPartitaMag())
+ .setDataScad(resultDTO.getDataScad());
- ColliMagazzinoRESTConsumer.deleteColloStatic(currentMtbColt.get(), () -> {
- setULToCurrentContext(null);
-
- progress.dismiss();
-
-
- if(onComplete != null) onComplete.run();
- }, ex -> UtilityExceptions.defaultException(this, ex, progress)
- );
+ this.openProgress();
+ onComplete.run(pickedQuantityDTO, shouldCloseLU);
+ }, () -> {
+// this.mViewmodel.resetMatchedRows();
+ })
+ .show(getSupportFragmentManager(), "tag");
}
-
- public boolean thereIsAnOpenedUL() {
- return currentMtbColt.get() != null;
+ @Override
+ public void onRowSaved() {
+ FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
}
- public boolean thereIsAnyRowInUL() {
- return currentMtbColt.get() != null &&
- currentMtbColt.get().getMtbColr() != null &&
- currentMtbColt.get().getMtbColr().size() > 0;
+ @Override
+ public void onMtbColrDeleteRequest(RunnableArgs onComplete) {
+ String text = getResources().getString(R.string.alert_delete_mtb_colr);
+ DialogSimpleMessageHelper.makeWarningDialog(this,
+ new SpannableString(text),
+ null,
+ () -> onComplete.run(true),
+ () -> onComplete.run(false)
+ ).show();
}
+ @Override
+ public void onLUOpened(MtbColt mtbColt) {
+ noLUPresent.set(false);
+ FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
- private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) {
- int index = this.mDtbDocrList.indexOf(dtbDocr);
- this.mDtbDocrList.remove(dtbDocr);
- this.mDtbDocrList.add(index, dtbDocr);
+ this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt);
}
+ @Override
+ public void onLUClosed() {
+ noLUPresent.set(true);
+ this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
- public void removeListFilter() {
+ if (this.mShouldCloseActivity) super.onBackPressed();
}
+ @Override
+ public void onLUSuccessullyPrinted() {
+ Resources res = getResources();
+ String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
+ DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
+ }
+ @Override
+ public void onLUPrintRequest(RunnableArgs onComplete) {
+ DialogAskShouldPrint.make(this, "Packing List", onComplete).show();
+ }
+
+ @Override
+ public void onLUPrintError(Exception ex, Runnable onComplete) {
+ this.closeProgress();
+ DialogSimpleMessageHelper.makeErrorDialog(
+ this,
+ new SpannableString(ex.getMessage()),
+ null,
+ null,
+ R.string.button_ignore_print,
+ onComplete).show();
+ }
+
+ @Override
+ public void onLoadingStarted() {
+ this.openProgress();
+ }
+
+ @Override
+ public void onLoadingEnded() {
+ this.closeProgress();
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiComponent.java
new file mode 100644
index 00000000..4567a6bd
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiComponent.java
@@ -0,0 +1,15 @@
+package it.integry.integrywmsnative.gest.picking_resi;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface PickingResiComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ PickingResiComponent create();
+ }
+
+ void inject(PickingResiActivity pickingResiActivity);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java
new file mode 100644
index 00000000..b0d8af52
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java
@@ -0,0 +1,33 @@
+package it.integry.integrywmsnative.gest.picking_resi;
+
+import dagger.Module;
+import dagger.Provides;
+import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
+import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
+import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
+import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
+
+@Module(subcomponents = PickingResiComponent.class)
+public class PickingResiModule {
+
+ @Provides
+ PickingResiRESTConsumer providesPickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
+ return new PickingResiRESTConsumer(systemRESTConsumer);
+ }
+
+ @Provides
+ BottomSheetFragmentLUContentViewModel providesBottomSheetFragmentLUContentViewModel() {
+ return new BottomSheetFragmentLUContentViewModel();
+ }
+
+ @Provides
+ PickingResiViewModel providesPickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PickingResiRESTConsumer pickingResiRESTConsumer) {
+ return new PickingResiViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, pickingResiRESTConsumer);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java
new file mode 100644
index 00000000..3087bfd0
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java
@@ -0,0 +1,578 @@
+package it.integry.integrywmsnative.gest.picking_resi;
+
+import androidx.databinding.ObservableArrayList;
+import androidx.lifecycle.MutableLiveData;
+
+import com.annimon.stream.Optional;
+import com.annimon.stream.Stream;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
+import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.expansion.RunnableArgss;
+import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener;
+import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener;
+import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
+import it.integry.integrywmsnative.core.model.CommonModelConsts;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.report.ReportManager;
+import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
+import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
+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.gest.picking_resi.exceptions.DocumentsLoadException;
+import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
+import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
+import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
+
+public class PickingResiViewModel {
+
+
+ private Listener mListener;
+
+ private final MutableLiveData> mPickingList = new MutableLiveData<>();
+ private final List mColliRegistrati = new ArrayList<>();
+
+ private MtbColt mCurrentMtbColt = null;
+
+ private String mDefaultGestioneOfLU;
+ private String mDefaultCodAnagOfLU;
+ private int mDefaultSegnoOfLU;
+ private String mDefaultCodMdepOfLU;
+
+ private final ArticoloRESTConsumer mArticoloRESTConsumer;
+ private final BarcodeRESTConsumer mBarcodeRESTConsumer;
+ private final ColliDataRecoverService mColliDataRecoverService;
+ private final OrdiniRESTConsumer mOrdiniRestConsumerService;
+ private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
+ private final PrinterRESTConsumer mPrinterRESTConsumer;
+ private final PickingResiRESTConsumer mPickingResiRESTConsumer;
+
+
+ @Inject
+ public PickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer,
+ BarcodeRESTConsumer barcodeRESTConsumer,
+ ColliDataRecoverService colliDataRecoverService,
+ OrdiniRESTConsumer ordiniRESTConsumer,
+ ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
+ PrinterRESTConsumer printerRESTConsumer,
+ PickingResiRESTConsumer mPickingResiRESTConsumer) {
+ this.mArticoloRESTConsumer = articoloRESTConsumer;
+ this.mBarcodeRESTConsumer = barcodeRESTConsumer;
+ this.mColliDataRecoverService = colliDataRecoverService;
+ this.mOrdiniRestConsumerService = ordiniRESTConsumer;
+ this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
+ this.mPrinterRESTConsumer = printerRESTConsumer;
+ this.mPickingResiRESTConsumer = mPickingResiRESTConsumer;
+ }
+
+ public void init(List documentList, int defaultSegnoLU, String codMdep) {
+ this.mDefaultSegnoOfLU = defaultSegnoLU;
+ this.mDefaultCodMdepOfLU = codMdep;
+
+ this.sendOnLoadingStarted();
+
+ this.initDatiPicking(documentList);
+
+ this.mPickingResiRESTConsumer.loadDocRows(documentList, withdrawableDtbDocr -> {
+ this.mPickingList.postValue(withdrawableDtbDocr);
+ this.sendOnLoadingEnded();
+ }, ex -> this.sendError(new DocumentsLoadException(ex)));
+ }
+
+ private void initDatiPicking(List documentList) {
+ List foundGestioni = Stream.of(documentList)
+ .map(DocumentoResoDTO::getGestione)
+ .distinct()
+ .withoutNulls()
+ .toList();
+
+ if (foundGestioni.size() > 1) {
+ this.sendError(new Exception("Sono stati caricati documenti con diverse gestioni"));
+ } else mDefaultGestioneOfLU = foundGestioni.get(0);
+
+
+ List foundCodAnags = Stream.of(documentList)
+ .map(DocumentoResoDTO::getCodAnag)
+ .distinct()
+ .toList();
+
+ if (foundCodAnags.size() > 1) {
+ this.sendError(new Exception("Sono stati caricati documenti con diversi codici anagrafici"));
+ } else mDefaultCodAnagOfLU = foundCodAnags.get(0);
+ }
+
+ public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
+ MtbColt mtbColt = new MtbColt();
+ mtbColt.initDefaultFields();
+ mtbColt.setGestione(mDefaultGestioneOfLU)
+ .setSegno(mDefaultSegnoOfLU)
+ .setCodAnag(mDefaultCodAnagOfLU)
+ .setCodMdep(mDefaultCodMdepOfLU)
+ .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
+
+ if (customNumCollo != null) mtbColt.setNumCollo(customNumCollo);
+ if (!UtilityString.isNullOrEmpty(customSerCollo)) mtbColt.setSerCollo(customSerCollo);
+
+ mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
+ mtbColt
+ .setNumCollo(value.getNumCollo())
+ .setDataCollo(value.getDataColloS())
+ .setMtbColr(new ObservableArrayList<>());
+
+ this.mCurrentMtbColt = mtbColt;
+
+ if (onComplete != null) onComplete.run();
+ this.sendLUOpened(mtbColt);
+ }, this::sendError);
+ }
+
+
+ public void closeLU(boolean shouldPrint) {
+ if (mCurrentMtbColt == null) return;
+
+ this.sendOnLoadingStarted();
+
+ mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> {
+
+ if (canBeDeleted) {
+ deleteLU(() -> {
+ this.sendLUClosed();
+ this.sendOnLoadingEnded();
+ });
+ } else {
+ this.sendOnNoteAggiuntiveRequired(noteAggiuntive -> {
+
+ if (!UtilityString.isNullOrEmpty(noteAggiuntive)) {
+ this.mCurrentMtbColt.setAnnotazioni(noteAggiuntive);
+ }
+
+ this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> {
+
+ if (shouldPrint) {
+ printCollo(mCurrentMtbColt, () -> {
+ postCloseOperations(mCurrentMtbColt, () -> {
+ this.sendLUClosed();
+ this.sendOnLoadingEnded();
+ });
+ });
+ } else {
+ postCloseOperations(mCurrentMtbColt, () -> {
+ this.sendLUClosed();
+ this.sendOnLoadingEnded();
+ });
+ }
+
+ }, this::sendError);
+
+ }, () -> {
+ this.sendLUClosed();
+ this.sendOnLoadingEnded();
+ });
+ }
+ }, this::sendError);
+ }
+
+ private void deleteLU(Runnable onComplete) {
+ mColliMagazzinoRESTConsumer.deleteCollo(mCurrentMtbColt, () -> {
+
+ this.mCurrentMtbColt = null;
+ if (onComplete != null) onComplete.run();
+
+ }, this::sendError);
+ }
+
+ private void printCollo(MtbColt mtbColtToPrint, Runnable onComplete) {
+ this.sendLUPrintRequest(shouldPrint -> {
+ if (!shouldPrint) {
+ onComplete.run();
+ } else {
+ this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdepOfLU, PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
+ if (printerList == null || printerList.size() == 0) {
+ this.sendError(new NoPrintersFoundException());
+ onComplete.run();
+ return;
+ }
+ singlePrint(mtbColtToPrint, printerList.get(0), onComplete, ex -> this.sendLUPrintError(ex, onComplete));
+ }, this::sendError);
+ }
+ });
+ }
+
+ private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onFailed) {
+ ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
+
+ this.mPrinterRESTConsumer.printCollo(
+ printerName,
+ mtbColtToPrint,
+ 1,
+ reportName, onComplete, onFailed);
+
+ }, onFailed);
+ }
+
+ private void postCloseOperations(MtbColt mtbColt, Runnable onComplete) {
+ this.mColliRegistrati.add(mtbColt);
+
+ Stream.of(this.mPickingList.getValue())
+ .forEach(x -> {
+ List withdraws = x.getWithdrawRows();
+
+ for (int k = 0; k < withdraws.size(); k++) {
+ MtbColr withdrawRow = withdraws.get(k);
+ x.setQtaDoc(x.getQtaDoc().subtract(withdrawRow.getQtaCol()));
+ }
+
+ x.getWithdrawRows().clear();
+
+ if (UtilityBigDecimal.equalsOrLowerThan(x.getQtaDoc(), BigDecimal.ZERO)) {
+ this.mPickingList.getValue().remove(x);
+ }
+ });
+
+ this.mPickingList.postValue(this.mPickingList.getValue());
+ onComplete.run();
+ }
+
+ public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
+
+ //Se non c'è una UL aperta
+ if (mCurrentMtbColt == null) {
+
+ //Se è un'etichetta anonima
+ if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
+ //Se il collo non esiste allora lo creo associandolo a questa etichetta anonima
+ //invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
+ //dell'etichetta anonima
+// this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
+ } else {
+// this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete);
+ }
+
+ } else {
+ if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
+ //Cerco gli articoli presenti nell'ul dell'etichetta anonima
+// this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
+
+ } else {
+// this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete);
+ }
+ }
+ }
+
+ public void dispatchOrdineRow(final WithdrawableDtbDocr withdrawableDtbDocr) {
+ BigDecimal totalQtaDoc = withdrawableDtbDocr.getQtaDoc();
+ BigDecimal totalNumCnfDoc = withdrawableDtbDocr.getNumCnf();
+ BigDecimal qtaCnfDoc = withdrawableDtbDocr.getQtaCnf();
+
+
+
+ this.sendOnItemDispatched(
+ withdrawableDtbDocr.getMtbAart(),
+ totalNumCnfDoc,
+ qtaCnfDoc,
+ totalQtaDoc,
+ totalQtaDoc,
+ totalNumCnfDoc,
+ qtaCnfDoc,
+ withdrawableDtbDocr.getPartitaMag(),
+ withdrawableDtbDocr.getDataScadPartitaMagD(),
+ (pickedQuantityDTO, shouldCloseLU) -> {
+
+ this.saveNewRow(withdrawableDtbDocr,
+ pickedQuantityDTO.getNumCnf(),
+ pickedQuantityDTO.getQtaCnf(),
+ pickedQuantityDTO.getQtaTot(),
+ pickedQuantityDTO.getPartitaMag(),
+ pickedQuantityDTO.getDataScad(),
+ shouldCloseLU);
+ });
+ }
+
+ public void dispatchRowEdit(final MtbColr mtbColrToEdit) {
+
+ this.sendOnItemDispatched(
+ mtbColrToEdit.getMtbAart(),
+ mtbColrToEdit.getNumCnf(),
+ mtbColrToEdit.getQtaCnf(),
+ mtbColrToEdit.getQtaCol(),
+ null,
+ null,
+ null,
+ mtbColrToEdit.getPartitaMag(),
+ mtbColrToEdit.getDataScadPartitaD(),
+ (pickedQuantityDTO, shouldCloseLU) -> {
+
+ this.saveEditedRow(mtbColrToEdit,
+ pickedQuantityDTO.getNumCnf(),
+ pickedQuantityDTO.getQtaCnf(),
+ pickedQuantityDTO.getQtaTot(),
+ pickedQuantityDTO.getPartitaMag(),
+ pickedQuantityDTO.getDataScad(),
+ shouldCloseLU);
+ });
+ }
+
+
+ public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
+ this.sendOnLoadingStarted();
+
+ final MtbColr mtbColr = new MtbColr()
+ .setCodMart(withdrawableDtbDocr.getMtbAart().getCodMart())
+ .setPartitaMag(partitaMag)
+ .setDataScadPartita(dataScad)
+ .setQtaCol(qtaTot)
+ .setQtaCnf(qtaCnf)
+ .setNumCnf(numCnf)
+ .setDescrizione(withdrawableDtbDocr.getMtbAart().getDescrizioneEstesa())
+ .setDatetimeRow(UtilityDate.getDateInstance())
+
+ .setCodAnagDoc(withdrawableDtbDocr.getCodAnag())
+ .setCodDtipDoc(withdrawableDtbDocr.getCodDtip())
+ .setSerDoc(withdrawableDtbDocr.getSerDoc())
+ .setNumDoc(withdrawableDtbDocr.getNumDoc())
+ .setDataDoc(withdrawableDtbDocr.getDataDocS())
+ .setIdRigaDoc(withdrawableDtbDocr.getIdRiga());
+
+ mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
+
+ MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
+ cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
+
+ cloneMtbColt.setMtbColr(new ObservableArrayList<>());
+ cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone());
+
+ boolean shouldPrint = true;
+
+ //Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe)
+ if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) {
+ shouldPrint = false;
+ }
+
+ if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) {
+ this.sendOnLoadingEnded();
+
+ if (shouldCloseLU) closeLU(shouldPrint);
+ return;
+ }
+
+ boolean finalShouldPrint = shouldPrint;
+ this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
+
+ mtbColr
+ .setDataCollo(value.getDataColloS())
+ .setNumCollo(value.getNumCollo())
+ .setGestione(value.getGestione())
+ .setSerCollo(value.getSerCollo())
+ .setRiga(value.getMtbColr().get(0).getRiga())
+ .setUntMis(withdrawableDtbDocr.getMtbAart().getUntMis())
+ .setMtbAart(withdrawableDtbDocr.getMtbAart());
+
+ withdrawableDtbDocr.getWithdrawRows().add(mtbColr);
+ mCurrentMtbColt.getMtbColr().add(mtbColr);
+
+ this.mPickingList.postValue(this.mPickingList.getValue());
+
+ this.sendOnRowSaved();
+ this.sendOnLoadingEnded();
+
+ if (shouldCloseLU) closeLU(finalShouldPrint);
+ }, this::sendError);
+ }
+
+ private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
+
+ this.sendOnLoadingStarted();
+
+ MtbColt mtbColt = new MtbColt()
+ .setNumCollo(mtbColrToUpdate.getNumCollo())
+ .setDataCollo(mtbColrToUpdate.getDataColloS())
+ .setSerCollo(mtbColrToUpdate.getSerCollo())
+ .setGestione(mtbColrToUpdate.getGestione())
+ .setMtbColr(new ObservableArrayList<>());
+ mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
+
+ final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone();
+ mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
+ mtbColr.setRiga(null)
+ .setNumCnf(numCnf.subtract(mtbColrToUpdate.getNumCnf()))
+ .setQtaCnf(qtaCnf)
+ .setQtaCol(qtaTot.subtract(mtbColrToUpdate.getQtaCol()))
+ .setPartitaMag(partitaMag)
+ .setDataScadPartita(dataScad);
+
+ mtbColt.getMtbColr().add(mtbColr);
+
+ this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
+
+ mtbColr.setNumCnf(numCnf)
+ .setQtaCnf(qtaCnf)
+ .setQtaCol(qtaTot);
+
+ Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue())
+ .filter(x -> Stream.of(x.getWithdrawRows()).anyMatch(y -> y == mtbColrToUpdate))
+ .findSingle();
+
+ if (pickingObjectDTO.isPresent()) {
+ pickingObjectDTO.get().getWithdrawRows().remove(mtbColrToUpdate);
+ pickingObjectDTO.get().getWithdrawRows().add(mtbColr);
+ }
+
+ this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
+ this.mCurrentMtbColt.getMtbColr().add(mtbColr);
+
+ this.sendOnRowSaved();
+ this.sendOnLoadingEnded();
+
+ }, this::sendError);
+ }
+
+ public void deleteRow(MtbColr mtbColrToDelete) {
+ this.sendMtbColrDeleteRequest(canDelete -> {
+ if (canDelete) {
+ this.sendOnLoadingStarted();
+
+ MtbColt mtbColt = new MtbColt()
+ .setNumCollo(mtbColrToDelete.getNumCollo())
+ .setDataCollo(mtbColrToDelete.getDataColloS())
+ .setSerCollo(mtbColrToDelete.getSerCollo())
+ .setGestione(mtbColrToDelete.getGestione())
+ .setMtbColr(new ObservableArrayList<>());
+ mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
+
+ MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone();
+ mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
+ mtbColr.setQtaCol(mtbColr.getQtaCol().multiply(new BigDecimal(-1)))
+ .setNumCnf(mtbColr.getNumCnf().multiply(new BigDecimal(-1)))
+ .setRiga(null);
+
+ mtbColt.getMtbColr().add(mtbColr);
+
+ this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
+
+ Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue())
+ .filter(x -> Stream.of(x.getWithdrawRows()).anyMatch(y -> y == mtbColrToDelete))
+ .findSingle();
+
+ if (pickingObjectDTO.isPresent()) {
+ pickingObjectDTO.get().getWithdrawRows().remove(mtbColrToDelete);
+ }
+
+ this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
+
+ this.sendOnRowSaved();
+ this.sendOnLoadingEnded();
+
+ }, this::sendError);
+ }
+ });
+ }
+
+
+ public MutableLiveData> getPickingList() {
+ return mPickingList;
+ }
+
+ private void sendOnNoteAggiuntiveRequired(RunnableArgs onComplete, Runnable onAbort) {
+ if (this.mListener != null) this.mListener.onNoteAggiuntiveRequired(onComplete, onAbort);
+ }
+
+ 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);
+ }
+
+ private void sendLUOpened(MtbColt mtbColt) {
+ if (this.mListener != null) mListener.onLUOpened(mtbColt);
+ }
+
+ private void sendLUClosed() {
+ if (this.mListener != null) mListener.onLUClosed();
+ }
+
+ private void sendLUPrintRequest(RunnableArgs onComplete) {
+ if (this.mListener != null) mListener.onLUPrintRequest(onComplete);
+ }
+
+ private void sendLUPrintError(Exception ex, Runnable onComplete) {
+ if (this.mListener != null) mListener.onLUPrintError(ex, onComplete);
+ }
+
+ private void sendMtbColrDeleteRequest(RunnableArgs onComplete) {
+ if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
+ }
+
+ private void sendOnItemDispatched(MtbAart mtbAart,
+ BigDecimal initialNumCnf,
+ BigDecimal initialQtaCnf,
+ BigDecimal initialQtaTot,
+ BigDecimal totalQtaAvailable,
+ BigDecimal totalNumCnfAvailable,
+ BigDecimal qtaCnfAvailable,
+ String partitaMag,
+ Date dataScad,
+ RunnableArgss onComplete) {
+ if (this.mListener != null) mListener.onItemDispatched(mtbAart,
+ initialNumCnf,
+ initialQtaCnf,
+ initialQtaTot,
+ totalQtaAvailable,
+ totalNumCnfAvailable,
+ qtaCnfAvailable,
+ partitaMag,
+ dataScad,
+ onComplete);
+ }
+
+ private void sendOnRowSaved() {
+ if (this.mListener != null) mListener.onRowSaved();
+ }
+
+
+ public PickingResiViewModel setListener(Listener listener) {
+ this.mListener = listener;
+ return this;
+ }
+
+ public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
+
+ void onNoteAggiuntiveRequired(RunnableArgs onComplete, Runnable onAbort);
+
+ void onError(Exception ex);
+
+ void onItemDispatched(MtbAart mtbAart,
+ BigDecimal initialNumCnf,
+ BigDecimal initialQtaCnf,
+ BigDecimal initialQtaTot,
+ BigDecimal totalQtaAvailable,
+ BigDecimal totalNumCnfAvailable,
+ BigDecimal qtaCnfAvailable,
+ String partitaMag,
+ Date dataScad,
+ RunnableArgss onComplete);
+
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java
index 0da8eb22..13aef6b5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java
@@ -1,197 +1,149 @@
package it.integry.integrywmsnative.gest.picking_resi.core;
import android.content.Context;
+import android.graphics.Color;
import android.view.LayoutInflater;
+import android.view.View;
import android.view.ViewGroup;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView;
-import com.annimon.stream.Stream;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
-import java.math.BigDecimal;
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.RunnableArgs;
-import it.integry.integrywmsnative.core.model.DtbDocr;
-import it.integry.integrywmsnative.core.model.MtbColr;
-import it.integry.integrywmsnative.core.settings.SettingsManager;
-import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
-import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
-import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemBinding;
-import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemHeaderBinding;
-import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
+import it.integry.integrywmsnative.databinding.PickingResiMainListItemBinding;
+import it.integry.integrywmsnative.databinding.PickingResiMainListItemHeaderBinding;
+import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
public class PickingResiListAdapter extends SectionedRecyclerViewAdapter {
-
private Context mContext;
-
- private List mDataset;
-
+ private final List mDataset = new ArrayList<>();
private RunnableArgs mOnItemClicked;
static class SubheaderHolder extends RecyclerView.ViewHolder {
+ PickingResiMainListItemHeaderBinding mBinding;
- UltimeConsegneMainListItemHeaderBinding mBinding;
-
- SubheaderHolder(UltimeConsegneMainListItemHeaderBinding binding) {
+ SubheaderHolder(PickingResiMainListItemHeaderBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
-
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
+ PickingResiMainListItemBinding mBinding;
- UltimeConsegneMainListItemBinding mBinding;
-
- SingleItemViewHolder(UltimeConsegneMainListItemBinding binding) {
+ SingleItemViewHolder(PickingResiMainListItemBinding binding) {
super(binding.getRoot());
this.mBinding = binding;
}
}
-
- public PickingResiListAdapter(Context context, ObservableList data) {
+ public PickingResiListAdapter(AppCompatActivity context, ObservableArrayList mutableDataSet) {
this.mContext = context;
- this.mDataset = new ArrayList<>();
- refreshData(data);
-
- data.addOnListChangedCallback(new ObservableList.OnListChangedCallback>() {
+ mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
@Override
- public void onChanged(ObservableList sender) {
- refreshData(sender);
- }
-
- @Override
- public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) {
- refreshData(sender);
- }
-
- @Override
- public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) {
- refreshData(sender);
- }
-
- @Override
- public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) {
- refreshData(sender);
- }
-
- @Override
- public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) {
- refreshData(sender);
+ public void onChanged(ObservableList sender) {
+ mDataset.clear();
+ mDataset.addAll(sender);
+ notifyDataSetChanged();
+ notifyDataChanged();
}
});
}
- private void refreshData(List data) {
- this.mDataset.clear();
- this.mDataset.addAll(Stream.of(data)
- .sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
- .toList());
-
- this.notifyDataChanged();
- }
-
public void setOnItemClicked(RunnableArgs onItemClicked) {
this.mOnItemClicked = onItemClicked;
}
@Override
- public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
- UltimeConsegneMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ultime_consegne_main_list__item, parent, false);
- return new SingleItemViewHolder(binding);
+ public PickingResiListAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
+ PickingResiMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item, parent, false);
+ return new PickingResiListAdapter.SingleItemViewHolder(binding);
}
@Override
- public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
- UltimeConsegneMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ultime_consegne_main_list__item_header, parent, false);
- return new SubheaderHolder(binding);
+ public PickingResiListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
+ PickingResiMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item_header, parent, false);
+ return new PickingResiListAdapter.SubheaderHolder(binding);
+ }
+
+
+ @Override
+ public void onBindSubheaderViewHolder(PickingResiListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
+ PickingResiListModel pickingResiListModel = this.mDataset.get(nextItemPosition);
+
+ subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(pickingResiListModel.getGroupTitle()) ? View.GONE : View.VISIBLE);
+ subheaderHolder.mBinding.groupTitle.setText(pickingResiListModel.getGroupTitle());
}
@Override
- public void onBindItemViewHolder(final SingleItemViewHolder holder, final int position) {
- final WithdrawableDtbDocr dtbDocr = this.mDataset.get(position);
+ public void onBindItemViewHolder(final PickingResiListAdapter.SingleItemViewHolder holder, final int position) {
+ PickingResiListModel pickingResiListModel = this.mDataset.get(position);
- BigDecimal qtaColEvasa = BigDecimal.ZERO;
- BigDecimal numCnfColEvasa = BigDecimal.ZERO;
-
- for(MtbColr mtbColr : dtbDocr.getWithdrawRows()) {
- qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
- numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
- }
-
- Float qtaDaEvadere = UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc().subtract(qtaColEvasa));
-
- holder.mBinding.badge1.setText(dtbDocr.getCodMart());
- holder.mBinding.descrizione.setText(UtilityString.isNullOrEmpty(dtbDocr.getDescrizioneEstesa()) ? dtbDocr.getDescrizioneEstesa() : dtbDocr.getDescrizione());
-
-
-
- //Setting qty with unt_mis
- if(!SettingsManager.iDB().isFlagForceAllToColli() && (dtbDocr.getMtbAart() == null || dtbDocr.getMtbAart().isFlagQtaCnfFissaBoolean())){
- holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(qtaColEvasa));
- holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getQtaDoc()));
- holder.mBinding.untMis.setText(dtbDocr.getUntDoc());
- } else {
- holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(numCnfColEvasa));
- holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getNumCnf()));
- holder.mBinding.untMis.setText(UtilityResources.getString(R.string.unt_mis_col));
- }
-
-
-
- if (qtaDaEvadere <= 0 ) {
+ if (pickingResiListModel.getQtaEvasa().subtract(pickingResiListModel.getQtaTot()).floatValue() >= 0) {
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
- } else if (qtaDaEvadere > 0 && qtaColEvasa.floatValue() > 0) {
+ } else if (pickingResiListModel.getQtaEvasa().floatValue() > 0) {
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
+ } else if (position % 2 == 1) {
+ holder.mBinding.getRoot().setBackgroundColor(Color.WHITE);
} else {
- holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.full_white));
+ holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
}
+ holder.mBinding.deactivatedOverBg.setVisibility(!pickingResiListModel.isActive() ? View.VISIBLE : View.GONE);
+ holder.mBinding.getRoot().setAlpha(!pickingResiListModel.isActive() ? 0.8f : 1);
+ holder.mBinding.badge1.setBackground(mContext.getResources().getDrawable(!pickingResiListModel.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner));
+ holder.mBinding.qtaEvasa.setTextColor(mContext.getResources().getColor(!pickingResiListModel.isActive() ? R.color.gray_600 : R.color.green_700));
+
+ holder.mBinding.descrizione.setText(pickingResiListModel.getDescrizione());
+ holder.mBinding.descrizione.setTextColor(pickingResiListModel.isDescrizionePresente() ? Color.BLACK : Color.GRAY);
+
+
+ holder.mBinding.badge1.setText(pickingResiListModel.getBadge1());
+
+ holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingResiListModel.getQtaEvasa()));
+ holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingResiListModel.getQtaTot()));
+
+ holder.mBinding.untMis.setText(pickingResiListModel.getUntMis());
+ holder.mBinding.untMis.setVisibility(UtilityString.isNullOrEmpty(pickingResiListModel.getUntMis()) ? View.GONE : View.VISIBLE);
+
holder.mBinding.getRoot().setOnClickListener(v -> {
- if(this.mOnItemClicked != null) this.mOnItemClicked.run(dtbDocr);
+ if (this.mOnItemClicked != null)
+ this.mOnItemClicked.run(pickingResiListModel.getOriginalModel());
});
-
- }
-
- @Override
- public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
- DtbDocr nextDtbDocr = this.mDataset.get(nextItemPosition);
- subheaderHolder.mBinding.descrizione.setText(nextDtbDocr.getCodDtip() + " - N° " + nextDtbDocr.getNumDoc() + " del " + UtilityDate.formatDate(nextDtbDocr.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
+ if (getItemSize() == 1) return true;
+ else if (getItemSize() > 1) {
+ PickingResiListModel compare1 = this.mDataset.get(position);
+ PickingResiListModel compare2 = this.mDataset.get(position + 1);
- DtbDocr compare1 = this.mDataset.get(position);
- DtbDocr compare2 = this.mDataset.get(position + 1);
-
- if( !compare1.getDataDocS().equalsIgnoreCase(compare2.getDataDocS()) ||
- !compare1.getSerDoc().equalsIgnoreCase(compare2.getSerDoc()) ||
- !compare1.getNumDoc().equals(compare2.getNumDoc()) ||
- !compare1.getCodAnag().equalsIgnoreCase(compare2.getCodAnag()) ||
- !compare1.getCodDtip().equalsIgnoreCase(compare2.getCodDtip())) {
- return true;
+ if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
+ return false;
+ }
}
- return false;
+ return true;
}
+
@Override
public int getItemSize() {
return this.mDataset.size();
}
-
-
-
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java
new file mode 100644
index 00000000..d5816c64
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java
@@ -0,0 +1,103 @@
+package it.integry.integrywmsnative.gest.picking_resi.core;
+
+import java.math.BigDecimal;
+
+import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
+
+public class PickingResiListModel {
+
+ private String groupTitle;
+
+ private String badge1;
+
+ private String descrizione;
+ private boolean descrizionePresente;
+ private BigDecimal qtaEvasa;
+ private BigDecimal qtaTot;
+ private String untMis;
+
+ private boolean active;
+
+ private WithdrawableDtbDocr mOriginalModel;
+
+ public String getGroupTitle() {
+ return groupTitle;
+ }
+
+ public PickingResiListModel setGroupTitle(String groupTitle) {
+ this.groupTitle = groupTitle;
+ return this;
+ }
+
+ public String getBadge1() {
+ return badge1;
+ }
+
+ public PickingResiListModel setBadge1(String badge1) {
+ this.badge1 = badge1;
+ return this;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public PickingResiListModel setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ return this;
+ }
+
+ public boolean isDescrizionePresente() {
+ return descrizionePresente;
+ }
+
+ public PickingResiListModel setDescrizionePresente(boolean descrizionePresente) {
+ this.descrizionePresente = descrizionePresente;
+ return this;
+ }
+
+ public BigDecimal getQtaEvasa() {
+ return qtaEvasa;
+ }
+
+ public PickingResiListModel setQtaEvasa(BigDecimal qtaEvasa) {
+ this.qtaEvasa = qtaEvasa;
+ return this;
+ }
+
+ public BigDecimal getQtaTot() {
+ return qtaTot;
+ }
+
+ public PickingResiListModel setQtaTot(BigDecimal qtaTot) {
+ this.qtaTot = qtaTot;
+ return this;
+ }
+
+ public String getUntMis() {
+ return untMis;
+ }
+
+ public PickingResiListModel setUntMis(String untMis) {
+ this.untMis = untMis;
+ return this;
+ }
+
+ public boolean isActive() {
+ return active;
+ }
+
+ public PickingResiListModel setActive(boolean active) {
+ this.active = active;
+ return this;
+ }
+
+ public WithdrawableDtbDocr getOriginalModel() {
+ return mOriginalModel;
+ }
+
+ public PickingResiListModel setOriginalModel(WithdrawableDtbDocr originalModel) {
+ this.mOriginalModel = originalModel;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/exceptions/DocumentsLoadException.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/exceptions/DocumentsLoadException.java
new file mode 100644
index 00000000..be2b42f7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/exceptions/DocumentsLoadException.java
@@ -0,0 +1,10 @@
+package it.integry.integrywmsnative.gest.picking_resi.exceptions;
+
+public class DocumentsLoadException extends Exception {
+
+ public DocumentsLoadException(Throwable cause) {
+ super("Errore durante il caricamento dei documenti");
+ initCause(cause);
+ }
+
+}
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
new file mode 100644
index 00000000..a05850e4
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java
@@ -0,0 +1,232 @@
+package it.integry.integrywmsnative.gest.picking_resi.rest;
+
+import com.annimon.stream.Stream;
+import com.google.gson.reflect.TypeToken;
+
+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.DtbDocr;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
+import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
+import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
+import it.integry.integrywmsnative.core.utility.UtilityQuery;
+
+@Singleton
+public class PickingResiRESTConsumer {
+
+
+ private final SystemRESTConsumer mSystemRestConsumer;
+
+ @Inject
+ public PickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
+ this.mSystemRestConsumer = systemRESTConsumer;
+ }
+
+ public void loadDocRows(List documents, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ List> filterCond = new ArrayList<>();
+
+ for(int i = 0; i < documents.size(); i++) {
+ HashMap filter = new HashMap<>();
+
+ filter.put("dtb_docr.data_doc", documents.get(i).getDataDocD());
+ filter.put("dtb_docr.num_doc", documents.get(i).getNumDoc());
+ filter.put("dtb_docr.ser_doc", documents.get(i).getSerDoc());
+ filter.put("dtb_docr.cod_anag", documents.get(i).getCodAnag());
+ filter.put("dtb_docr.cod_dtip", documents.get(i).getCodDtip());
+
+ filterCond.add(filter);
+ }
+
+ String sql = "SELECT dtb_docr.[cod_anag]" +
+ " ,dtb_docr.[cod_dtip]" +
+ " ,dtb_docr.[data_doc]" +
+ " ,dtb_docr.[ser_doc]" +
+ " ,dtb_docr.[num_doc]" +
+ " ,dtb_docr.[id_riga]" +
+ " ,dtb_docr.[cod_mart]" +
+ " ,dtb_docr.[descrizione]" +
+ " ,dtb_docr.[unt_doc]" +
+ " ,(dtb_docr.[rap_conv] / dtb_docr.[rap_conv]) as rap_conv" +
+ " ,(dtb_docr.[qta_doc] * dtb_docr.[rap_conv]) - ISNULL(mtb_colr.qta_col, 0) as qta_doc" +
+ " ,dtb_docr.[val_unt]" +
+ " ,dtb_docr.[sconto5]" +
+ " ,dtb_docr.[sconto6]" +
+ " ,dtb_docr.[sconto7]" +
+ " ,dtb_docr.[sconto8]" +
+ " ,dtb_docr.[cod_aliq]" +
+ " ,dtb_docr.[perc_prov]" +
+ " ,dtb_docr.[val_prov]" +
+ " ,dtb_docr.[data_ord]" +
+ " ,dtb_docr.[num_ord]" +
+ " ,dtb_docr.[riga_ord]" +
+ " ,dtb_docr.[importo_riga]" +
+ " ,dtb_docr.[cod_col]" +
+ " ,dtb_docr.[cod_tagl]" +
+ " ,dtb_docr.[cod_jcom]" +
+ " ,dtb_docr.[cod_mdep]" +
+ " ,dtb_docr.[perc_gest]" +
+ " ,dtb_docr.[val_gest]" +
+ " ,dtb_docr.[partita_mag]" +
+ " ,dtb_docr.[val_unt_iva]" +
+ " ,dtb_docr.[qta_cnf]" +
+ " ,dtb_docr.[descrizione_estesa]" +
+ " ,dtb_docr.[costo_unt]" +
+ " ,dtb_docr.[perc_ispe]" +
+ " ,dtb_docr.[val_ispe]" +
+ " ,dtb_docr.[perc_promo]" +
+ " ,dtb_docr.[val_promo]" +
+ " ,dtb_docr.[perc_oneri]" +
+ " ,dtb_docr.[val_oneri]" +
+ " ,dtb_docr.[flag_evaso_forzato]" +
+ " ,dtb_docr.[cod_dtip_comp]" +
+ " ,dtb_docr.[data_doc_comp]" +
+ " ,dtb_docr.[ser_doc_comp]" +
+ " ,dtb_docr.[num_doc_comp]" +
+ " ,dtb_docr.[cod_promo]" +
+ " ,dtb_docr.[perc_prov2]" +
+ " ,dtb_docr.[val_prov2]" +
+ " ,dtb_docr.[cod_art_for]" +
+ " ,dtb_docr.[unt_doc2]" +
+ " ,dtb_docr.[qta_doc2]" +
+ " ,dtb_docr.[unt_doc3]" +
+ " ,dtb_docr.[qta_doc3]" +
+ " ,dtb_docr.[num_cnf]" +
+ " ,dtb_docr.[peso_lordo]" +
+ " ,dtb_docr.[posizione]" +
+ " ,dtb_docr.[cod_anag_comp]" +
+ " ,dtb_docr.[cod_mtip]" +
+ " ,dtb_docr.[matricola]" +
+ " ,dtb_docr.[data_iniz_comp]" +
+ " ,dtb_docr.[data_fine_comp]" +
+ " ,dtb_docr.[cod_kit]" +
+ " ,dtb_docr.[cod_alis]" +
+ " ,dtb_docr.[data_ins_row]" +
+ " ,dtb_docr.[note] " +
+ " ,dtb_doct.[gestione] " +
+ " ,mtb_partita_mag.[data_scad] as data_scad_partita_mag " +
+ "FROM dtb_docr " +
+ "INNER JOIN dtb_doct ON dtb_docr.num_doc = dtb_doct.num_doc AND dtb_docr.data_doc = dtb_doct.data_doc AND dtb_docr.cod_anag = dtb_doct.cod_anag AND dtb_docr.cod_dtip = dtb_doct.cod_dtip AND dtb_docr.ser_doc = dtb_doct.ser_doc " +
+ "INNER JOIN mtb_aart ON dtb_docr.cod_mart = mtb_aart.cod_mart " +
+ "LEFT OUTER JOIN mtb_partita_mag ON dtb_docr.cod_mart = mtb_partita_mag.cod_mart " +
+ " AND dtb_docr.partita_mag = mtb_partita_mag.partita_mag " +
+ "LEFT OUTER JOIN ctb_cont ON mtb_aart.cod_ccon_ricavi = ctb_cont.cod_ccon " +
+ "LEFT OUTER JOIN ctb_grup ON ctb_cont.cod_cgrp = ctb_grup.cod_cgrp " +
+ "LEFT OUTER JOIN (" +
+ " SELECT gestione," +
+ " cod_mart," +
+ " cod_col," +
+ " cod_tagl," +
+ " SUM(qta_col) as qta_col," +
+ " data_ord," +
+ " num_ord," +
+ " riga_ord," +
+ " partita_mag," +
+ " qta_cnf," +
+ " gestione_rif," +
+ " data_collo_rif," +
+ " ser_collo_rif," +
+ " num_collo_rif," +
+ " cod_jcom," +
+ " SUM(num_cnf) as num_cnf," +
+ " cod_anag_doc," +
+ " cod_dtip_doc," +
+ " data_doc," +
+ " ser_doc," +
+ " num_doc," +
+ " id_riga_doc" +
+ " FROM mtb_colr" +
+ " GROUP BY gestione," +
+ " cod_barre," +
+ " cod_mart," +
+ " cod_col," +
+ " cod_tagl," +
+ " data_ord," +
+ " num_ord," +
+ " riga_ord," +
+ " partita_mag," +
+ " qta_cnf," +
+ " gestione_rif," +
+ " data_collo_rif," +
+ " ser_collo_rif," +
+ " num_collo_rif," +
+ " cod_jcom," +
+ " cod_anag_doc," +
+ " cod_dtip_doc," +
+ " data_doc," +
+ " ser_doc," +
+ " num_doc," +
+ " id_riga_doc" +
+ " ) mtb_colr" +
+ " ON " +
+ " dtb_docr.cod_anag = mtb_colr.cod_anag_doc AND " +
+ " dtb_docr.cod_dtip = mtb_colr.cod_dtip_doc AND " +
+ " dtb_docr.ser_doc = mtb_colr.ser_doc AND " +
+ " dtb_docr.data_doc = mtb_colr.data_doc AND " +
+ " dtb_docr.num_doc = mtb_colr.num_doc AND " +
+ " dtb_docr.id_riga = mtb_colr.id_riga_doc " +
+ "WHERE " +
+ " (ctb_grup.sezione <> 1 OR ctb_grup.sezione IS NULL) AND " +
+ " dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) > 0 AND" +
+ " ( " +
+ UtilityQuery.concatFieldListInWhereCond(filterCond) +
+ " ) " +
+ "ORDER BY cod_mart";
+
+
+ Type typeOfObjectsList = new TypeToken>() {}.getType();
+ this.mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(ArrayList values) {
+
+ if(values != null && values.size() > 0){
+ List codMarts = Stream.of(values)
+ .map(DtbDocr::getCodMart)
+ .withoutNulls()
+ .distinct()
+ .toList();
+
+ ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
+
+ if(arts != null && arts.size() > 0) {
+ for (DtbDocr value : values) {
+
+ MtbAart foundMtbAart = null;
+
+ List mtbAartStream = Stream.of(arts)
+ .filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList();
+
+ if(mtbAartStream != null && mtbAartStream.size() > 0){
+ foundMtbAart = mtbAartStream.get(0);
+ }
+
+ value.setMtbAart(foundMtbAart);
+ }
+
+
+ if(onComplete != null) onComplete.run(values);
+ }
+
+ }, onFailed);
+
+ } else {
+ if(onComplete != null) onComplete.run(values);
+ }
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java
similarity index 92%
rename from app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java
rename to app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java
index eb7d8110..08fabdd5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java
@@ -1,4 +1,4 @@
-package it.integry.integrywmsnative.gest.picking_resi.dto;
+package it.integry.integrywmsnative.gest.picking_resi.rest;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/PickingResiActivity.java
new file mode 100644
index 00000000..7aa43763
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/PickingResiActivity.java
@@ -0,0 +1,548 @@
+package it.integry.integrywmsnative.gest.picking_resi_OLD;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.SpannableString;
+
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableArrayList;
+import androidx.databinding.ObservableField;
+import androidx.databinding.ObservableList;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.annimon.stream.Stream;
+import com.tfb.fbtoast.FBToast;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.integrywmsnative.core.data_cache.DataCache;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.CommonModelConsts;
+import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.report.ReportManager;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
+import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityNumber;
+import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
+import it.integry.integrywmsnative.gest.picking_resi_OLD.core.PickingResiListAdapter;
+import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
+import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
+import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
+import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
+import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
+import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
+import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
+import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
+import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
+
+public class PickingResiActivity extends BaseActivity implements IOnColloClosedCallback {
+
+ private List mDocumentiResiList;
+ public ObservableList mDtbDocrList;
+ private final List mColliRegistrati = new ArrayList<>();
+
+ private ActivityPickingResiBinding mBinding;
+ private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
+
+ public ObservableField currentMtbColt = new ObservableField<>();
+
+ private PickingResiListAdapter mAdapter;
+
+ private int barcodeScannerIstanceID = -1;
+
+ private String mActivityTitle;
+ private String mDefaultGestioneOfUL;
+ private String mDefaultCodAnagOfUL;
+ private Integer mDefaultSegnoOfUL;
+
+
+ public static void startActivity(Context context, String activityTitle, List documentoResoDTOList, Integer segno) {
+ String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
+
+ Intent intent = new Intent(context, PickingResiActivity.class);
+ intent.putExtra("activity_title", activityTitle);
+ intent.putExtra("key", consegneCacheKey);
+ intent.putExtra("segno", segno);
+ context.startActivity(intent);
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mBinding = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
+// mBinding.setViewmodel(this);
+
+ this.mDtbDocrList = new ObservableArrayList<>();
+
+// mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, this.mBinding.bottomSheetInclude);
+// mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
+// mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onItemEdited);
+// mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onItemDeleted);
+
+
+ mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key"));
+ mDefaultSegnoOfUL = getIntent().getIntExtra("segno", +1);
+
+ mActivityTitle = getIntent().getStringExtra("activity_title");
+
+ this.initView();
+
+
+ }
+
+ @Override
+ public boolean onSupportNavigateUp() {
+ onBackPressed();
+ return true;
+ }
+
+ @Override
+ public void onBackPressed() {
+ if(mArticoliInColloBottomSheetViewModel.isExpanded()){
+ mArticoliInColloBottomSheetViewModel.collapse();
+ }
+ else if(thereIsAnOpenedUL()) {
+ mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> {
+ BarcodeManager.removeCallback(barcodeScannerIstanceID);
+ super.onBackPressed();
+ });
+
+ }
+ else {
+ BarcodeManager.removeCallback(barcodeScannerIstanceID);
+ super.onBackPressed();
+ }
+ }
+
+ private void initView() {
+ barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
+ .setOnScanSuccessfull(this::onScanSuccessful)
+ .setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
+
+
+ setSupportActionBar(this.mBinding.toolbar);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ getSupportActionBar().setTitle(mActivityTitle);
+
+ this.mBinding.elevatedToolbar.setRecyclerView(this.mBinding.mainList);
+
+ Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(this);
+ UltimeConsegneClienteRESTConsumer.loadDocRowFromConsegna(mDocumentiResiList, dtbDocrToPick -> {
+ progressDialog.dismiss();
+ this.mDtbDocrList.addAll(dtbDocrToPick);
+
+ try {
+ this.initDatiPicking();
+ } catch (Exception ex) {
+ DialogSimpleMessageHelper.showSimpleErrorDialog(this, ex.getMessage());
+ }
+
+ this.initList();
+ }, ex -> {
+ UtilityExceptions.defaultException(this, ex, progressDialog);
+ });
+ }
+
+ private void initList() {
+
+ mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList);
+ mAdapter.setOnItemClicked(this::onOrdineRowDispatch);
+
+ this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this));
+ this.mBinding.mainList.setAdapter(mAdapter);
+ }
+
+ private void initDatiPicking() throws Exception {
+ List foundGestioni = Stream.of(this.mDocumentiResiList)
+ .map(DocumentoResoDTO::getGestione)
+ .distinct()
+ .withoutNulls()
+ .toList();
+
+ if(foundGestioni.size() > 1) {
+ throw new Exception("Sono stati caricati documenti con diverse gestioni");
+ } else mDefaultGestioneOfUL = foundGestioni.get(0);
+
+
+ List foundCodAnags = Stream.of(this.mDocumentiResiList)
+ .map(DocumentoResoDTO::getCodAnag)
+ .distinct()
+ .toList();
+
+ if(foundCodAnags.size() > 1) {
+ throw new Exception("Sono stati caricati documenti con diversi codici anagrafici");
+ } else mDefaultCodAnagOfUL = foundCodAnags.get(0);
+
+ }
+
+
+
+
+ private void onScanSuccessful(BarcodeScanDTO data) {
+
+ }
+
+ public void createNewUL() {
+ this.createNewUL(null, null, null, false, true, null);
+ }
+
+ public void createNewUL(Integer customNumCollo, String customSerCollo, Dialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) {
+ this.mBinding.mainFab.close(true);
+
+ if (progress == null){
+ progress = UtilityProgress.createDefaultProgressDialog(this);
+ }
+
+ MtbColt mtbColt = new MtbColt();
+ mtbColt.initDefaultFields();
+ mtbColt .setGestione(mDefaultGestioneOfUL)
+ .setSegno(mDefaultSegnoOfUL)
+ .setCodAnag(mDefaultCodAnagOfUL)
+ .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
+ .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
+
+
+ if(customNumCollo != null) {
+ mtbColt.setNumCollo(customNumCollo);
+ }
+
+ if(!UtilityString.isNullOrEmpty(customSerCollo)) {
+ mtbColt.setSerCollo(customSerCollo);
+ }
+
+
+ Dialog finalProgress = progress;
+ ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, value -> {
+
+ value.setDisablePrint(disablePrint);
+
+ setULToCurrentContext(value);
+
+ if(closeProgress) finalProgress.dismiss();
+
+ FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
+
+ if(onComplete != null) onComplete.run();
+
+ }, ex -> {
+ UtilityExceptions.defaultException(this, ex, finalProgress);
+ });
+
+ }
+
+ private void setULToCurrentContext(MtbColt mtbColt){
+ if(mtbColt != null && mtbColt.getMtbColr() == null) {
+ mtbColt.setMtbColr(new ObservableArrayList<>());
+ }
+
+ this.currentMtbColt.set(mtbColt);
+ mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
+ }
+
+
+
+
+ public void onOrdineRowDispatch(final WithdrawableDtbDocr item) {
+ if(currentMtbColt.get() != null){
+
+ List currentMtbColrs = item.getWithdrawRows();
+
+ BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO;
+ for (MtbColr mtbColr : currentMtbColrs) {
+ qtaEvasaTotaleInMtbColr.add(mtbColr.getQtaCol());
+ }
+
+ BigDecimal qtaDaEvadere = item.getQtaDoc().subtract(qtaEvasaTotaleInMtbColr);
+ if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO;
+
+ DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
+ .setBatchLot(item.getPartitaMag())
+ .setCodArtFor(item.getCodArtFor())
+ .setMtbAart(item.getMtbAart())
+ .setQtaDisponibile(qtaDaEvadere)
+ .setQtaTot(qtaDaEvadere)
+ .setQtaEvasa(qtaEvasaTotaleInMtbColr)
+ .setCanPartitaMagBeChanged(false)
+ .setMaxQta(qtaDaEvadere);
+
+
+ DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
+ onOrdineRowDispatched(item, quantityDTO, closeUL);
+
+ }, null).show();
+ }
+ }
+
+
+
+
+ private void onOrdineRowDispatched(WithdrawableDtbDocr item, QuantityDTO quantityDTO, boolean closeUL){
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
+
+ final MtbColr mtbColr = new MtbColr()
+ .setCodMart(item.getCodMart())
+ .setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get()))
+ .setQtaCol(quantityDTO.qtaTot.getBigDecimal())
+ .setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
+ .setNumCnf(quantityDTO.numCnf.getBigDecimal())
+ .setDescrizione(item.getDescrizioneEstesa())
+ .setDatetimeRow(UtilityDate.getDateInstance())
+
+ .setCodAnagDoc(item.getCodAnag())
+ .setCodDtipDoc(item.getCodDtip())
+ .setSerDoc(item.getSerDoc())
+ .setNumDoc(item.getNumDoc())
+ .setDataDoc(item.getDataDocS())
+ .setIdRigaDoc(item.getIdRiga());
+// .setCodJcom(item.getCodJcom());
+
+
+
+ mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
+
+ MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone();
+ cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
+
+ cloneMtbColt.setMtbColr(new ObservableArrayList<>());
+ cloneMtbColt.getMtbColr().add(mtbColr);
+
+ ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> {
+
+ mtbColr
+ .setDataCollo(value.getDataColloS())
+ .setNumCollo(value.getNumCollo())
+ .setGestione(value.getGestione())
+ .setSerCollo(value.getSerCollo())
+ .setRiga(value.getMtbColr().get(0).getRiga())
+ .setUntMis(item.getMtbAart().getUntMis())
+ .setMtbAart(item.getMtbAart());
+
+ item.getWithdrawRows().add(mtbColr);
+
+ this.refreshDtbDocrItem(item);
+
+ currentMtbColt.get().getMtbColr().add(mtbColr);
+
+ //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei
+ removeListFilter();
+
+ FBToast.successToast(this, this.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
+
+ progress.dismiss();
+
+// if(closeUL) onColloClosed(null);
+ }, ex -> {
+ UtilityExceptions.defaultException(this, ex, progress);
+ });
+ }
+
+
+ @Override
+ public void onColloClosed(Runnable onComplete, boolean shouldPrint) {
+ if(thereIsAnOpenedUL()) {
+
+ final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
+ progress.show();
+
+ if(thereIsAnyRowInUL()) {
+ NoteAggiuntiveLUDialog.make(this, noteString -> {
+
+ MtbColt currentLU = currentMtbColt.get();
+
+ Runnable postNoteSave = () -> {
+ ColliMagazzinoRESTConsumer.updateDataFineStatic(
+ currentLU,
+ () -> printCollo(progress, currentMtbColt.get(), onComplete),
+ ex -> UtilityExceptions.defaultException(this, ex, progress));
+ };
+
+ if(!UtilityString.isNullOrEmpty(noteString)) {
+ currentLU.setAnnotazioni(noteString);
+
+ ColliMagazzinoRESTConsumer.saveColloStatic(currentLU, mtbColt -> {
+ postNoteSave.run();
+ }, ex -> UtilityExceptions.defaultException(this, ex, progress));
+ } else postNoteSave.run();
+
+
+ }, () -> {
+
+ }).show();
+ } else {
+ deleteCollo(progress, onComplete);
+ }
+
+ } else {
+ if(onComplete != null) onComplete.run();
+ }
+ }
+
+ private void onItemEdited(MtbColr mtbColrOriginal, MtbColr mtbColrEdited) {
+ for(int i = 0; i < mDtbDocrList.size(); i++) {
+ int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrOriginal);
+
+ if(foundIndex >= 0){
+ mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
+ mDtbDocrList.get(i).getWithdrawRows().add(foundIndex, mtbColrEdited);
+
+ refreshDtbDocrItem(this.mDtbDocrList.get(i));
+
+ break;
+ }
+ }
+ }
+
+ private void onItemDeleted(MtbColr mtbColrDeleted) {
+ for(int i = 0; i < mDtbDocrList.size(); i++) {
+ int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrDeleted);
+
+ if(foundIndex >= 0){
+ mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
+
+ refreshDtbDocrItem(this.mDtbDocrList.get(i));
+
+ break;
+ }
+ }
+ }
+
+ private void printCollo(Dialog progress, MtbColt mtbColtToPrint, Runnable onComplete) {
+ DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> {
+
+ if(shouldPrint) {
+ PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
+
+ if (printerList.size() > 0) {
+ try {
+ singlePrint(mtbColtToPrint, printerList.get(0), () -> {
+ postCloseOperations(mtbColtToPrint, onComplete);
+ progress.dismiss();
+ }, ex -> {
+ progress.dismiss();
+ String errorMessage = ex.getMessage();
+ DialogSimpleMessageHelper.makeErrorDialog(
+ this,
+ new SpannableString(errorMessage),
+ null,
+ null,
+ R.string.button_ignore_print,
+ () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
+ });
+
+ } catch (Exception ex) {
+ UtilityExceptions.defaultException(this, ex, progress);
+ postCloseOperations(mtbColtToPrint, onComplete);
+ }
+ } else {
+ progress.dismiss();
+ String errorMessage = "Nessuna stampante configurata";
+ DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
+ }
+ }, ex -> {
+ UtilityExceptions.defaultException(this, ex, progress);
+ });
+ } else {
+ postCloseOperations(mtbColtToPrint, onComplete);
+ progress.dismiss();
+ }
+ }).show();
+ }
+
+
+
+ private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onAbort) {
+ ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
+
+ PrinterRESTConsumer.printColloStatic(
+ printerName,
+ mtbColtToPrint,
+ 1,
+ reportName, onComplete, onAbort);
+
+ }, onAbort);
+ }
+
+ private void postCloseOperations(MtbColt generatedMtbColt, Runnable onComplete) {
+ this.mColliRegistrati.add(generatedMtbColt);
+
+ setULToCurrentContext(null);
+
+ for(int i = 0; i < this.mDtbDocrList.size(); i++) {
+ WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i);
+
+ List withdraws = dtbDocr.getWithdrawRows();
+
+ for(int k = 0; k < withdraws.size(); k++) {
+ MtbColr withdrawRow = withdraws.get(k);
+
+ dtbDocr.setQtaDoc(dtbDocr.getQtaDoc().subtract(withdrawRow.getQtaCol()));
+ }
+
+ dtbDocr.getWithdrawRows().clear();
+
+ if(UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc()) <= 0) {
+ this.mDtbDocrList.remove(dtbDocr);
+ i--;
+ } else this.refreshDtbDocrItem(dtbDocr);
+ }
+
+ removeListFilter();
+
+ if(onComplete != null) onComplete.run();
+ }
+
+
+ private void deleteCollo(Dialog progress, Runnable onComplete) {
+
+ ColliMagazzinoRESTConsumer.deleteColloStatic(currentMtbColt.get(), () -> {
+ setULToCurrentContext(null);
+
+ progress.dismiss();
+
+
+ if(onComplete != null) onComplete.run();
+ }, ex -> UtilityExceptions.defaultException(this, ex, progress)
+ );
+ }
+
+
+ public boolean thereIsAnOpenedUL() {
+ return currentMtbColt.get() != null;
+ }
+
+ public boolean thereIsAnyRowInUL() {
+ return currentMtbColt.get() != null &&
+ currentMtbColt.get().getMtbColr() != null &&
+ currentMtbColt.get().getMtbColr().size() > 0;
+ }
+
+
+ private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) {
+ int index = this.mDtbDocrList.indexOf(dtbDocr);
+ this.mDtbDocrList.remove(dtbDocr);
+ this.mDtbDocrList.add(index, dtbDocr);
+ }
+
+
+ public void removeListFilter() {
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/core/PickingResiListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/core/PickingResiListAdapter.java
new file mode 100644
index 00000000..830943d7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/core/PickingResiListAdapter.java
@@ -0,0 +1,197 @@
+package it.integry.integrywmsnative.gest.picking_resi_OLD.core;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ObservableList;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.annimon.stream.Stream;
+import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.DtbDocr;
+import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.core.utility.UtilityNumber;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.databinding.PickingResiMainListItemBinding;
+import it.integry.integrywmsnative.databinding.PickingResiMainListItemHeaderBinding;
+import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
+
+public class PickingResiListAdapter extends SectionedRecyclerViewAdapter {
+
+
+ private Context mContext;
+
+ private List mDataset;
+
+ private RunnableArgs mOnItemClicked;
+
+ static class SubheaderHolder extends RecyclerView.ViewHolder {
+
+ PickingResiMainListItemHeaderBinding mBinding;
+
+ SubheaderHolder(PickingResiMainListItemHeaderBinding binding) {
+ super(binding.getRoot());
+ this.mBinding = binding;
+ }
+
+ }
+
+ static class SingleItemViewHolder extends RecyclerView.ViewHolder {
+
+ PickingResiMainListItemBinding mBinding;
+
+ SingleItemViewHolder(PickingResiMainListItemBinding binding) {
+ super(binding.getRoot());
+ this.mBinding = binding;
+ }
+ }
+
+
+ public PickingResiListAdapter(Context context, ObservableList data) {
+ this.mContext = context;
+ this.mDataset = new ArrayList<>();
+
+ refreshData(data);
+
+ data.addOnListChangedCallback(new ObservableList.OnListChangedCallback>() {
+ @Override
+ public void onChanged(ObservableList sender) {
+ refreshData(sender);
+ }
+
+ @Override
+ public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) {
+ refreshData(sender);
+ }
+
+ @Override
+ public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) {
+ refreshData(sender);
+ }
+
+ @Override
+ public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) {
+ refreshData(sender);
+ }
+
+ @Override
+ public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) {
+ refreshData(sender);
+ }
+ });
+ }
+
+ private void refreshData(List data) {
+ this.mDataset.clear();
+ this.mDataset.addAll(Stream.of(data)
+ .sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
+ .toList());
+
+ this.notifyDataChanged();
+ }
+
+ public void setOnItemClicked(RunnableArgs onItemClicked) {
+ this.mOnItemClicked = onItemClicked;
+ }
+
+ @Override
+ public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
+ PickingResiMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item, parent, false);
+ return new SingleItemViewHolder(binding);
+ }
+
+ @Override
+ public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
+ PickingResiMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item_header, parent, false);
+ return new SubheaderHolder(binding);
+ }
+
+ @Override
+ public void onBindItemViewHolder(final SingleItemViewHolder holder, final int position) {
+ final WithdrawableDtbDocr dtbDocr = this.mDataset.get(position);
+
+ BigDecimal qtaColEvasa = BigDecimal.ZERO;
+ BigDecimal numCnfColEvasa = BigDecimal.ZERO;
+
+ for(MtbColr mtbColr : dtbDocr.getWithdrawRows()) {
+ qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
+ numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
+ }
+
+ Float qtaDaEvadere = UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc().subtract(qtaColEvasa));
+
+ holder.mBinding.badge1.setText(dtbDocr.getCodMart());
+ holder.mBinding.descrizione.setText(UtilityString.isNullOrEmpty(dtbDocr.getDescrizioneEstesa()) ? dtbDocr.getDescrizioneEstesa() : dtbDocr.getDescrizione());
+
+
+
+ //Setting qty with unt_mis
+ if(!SettingsManager.iDB().isFlagForceAllToColli() && (dtbDocr.getMtbAart() == null || dtbDocr.getMtbAart().isFlagQtaCnfFissaBoolean())){
+ holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(qtaColEvasa));
+ holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getQtaDoc()));
+ holder.mBinding.untMis.setText(dtbDocr.getUntDoc());
+ } else {
+ holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(numCnfColEvasa));
+ holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getNumCnf()));
+ holder.mBinding.untMis.setText(UtilityResources.getString(R.string.unt_mis_col));
+ }
+
+
+
+ if (qtaDaEvadere <= 0 ) {
+ holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
+ } else if (qtaDaEvadere > 0 && qtaColEvasa.floatValue() > 0) {
+ holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
+ } else {
+ holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.full_white));
+ }
+
+ holder.mBinding.getRoot().setOnClickListener(v -> {
+ if(this.mOnItemClicked != null) this.mOnItemClicked.run(dtbDocr);
+ });
+
+ }
+
+ @Override
+ public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
+ DtbDocr nextDtbDocr = this.mDataset.get(nextItemPosition);
+ subheaderHolder.mBinding.groupTitle.setText(nextDtbDocr.getCodDtip() + " - N° " + nextDtbDocr.getNumDoc() + " del " + UtilityDate.formatDate(nextDtbDocr.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
+ }
+
+ @Override
+ public boolean onPlaceSubheaderBetweenItems(int position) {
+
+ DtbDocr compare1 = this.mDataset.get(position);
+ DtbDocr compare2 = this.mDataset.get(position + 1);
+
+ if( !compare1.getDataDocS().equalsIgnoreCase(compare2.getDataDocS()) ||
+ !compare1.getSerDoc().equalsIgnoreCase(compare2.getSerDoc()) ||
+ !compare1.getNumDoc().equals(compare2.getNumDoc()) ||
+ !compare1.getCodAnag().equalsIgnoreCase(compare2.getCodAnag()) ||
+ !compare1.getCodDtip().equalsIgnoreCase(compare2.getCodDtip())) {
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public int getItemSize() {
+ return this.mDataset.size();
+ }
+
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java
index 7f401c84..7d968e41 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java
@@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper;
import android.app.Activity;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
@@ -16,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepositor
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineAcquistoPvHelper {
@@ -67,7 +67,7 @@ public class OrdineAcquistoPvHelper {
public void createNewOrder(Griglia griglia, RunnableArgs onSuccess, RunnableArgs onError) {
Ordine ordine = new Ordine();
- ordine.setDataIns(new Date());
+ ordine.setDataIns(UtilityDate.getDateInstance());
ordine.setIdGriglia(griglia.getGrigliaId());
mOrdineRepository.insert(ordine, id -> {
ordine.setOrdineId(id);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
index c38d50c1..4e8f5fca 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.gest.spedizione;
+import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
@@ -44,6 +45,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding;
@@ -96,6 +98,21 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
private final int PICK_UL_REQUEST = 1;
+ public static void startActivity(Context context, List ordini, List selectedOrders, List mtbColtList) {
+ Intent myIntent = new Intent(context, SpedizioneActivity.class);
+
+ String keyPickingList = DataCache.addItem(ordini);
+ myIntent.putExtra("keyPickingList", keyPickingList);
+
+ String keyTestateOrdini = DataCache.addItem(selectedOrders);
+ myIntent.putExtra("keyTestateOrdini", keyTestateOrdini);
+
+ String keyColliRegistrati = DataCache.addItem(mtbColtList);
+ myIntent.putExtra("keyColliRegistrati", keyColliRegistrati);
+
+ context.startActivity(myIntent);
+ }
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -249,7 +266,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
- spedizioneListModel.setUntMis("col");
+ spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
} else {
@@ -287,7 +304,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
- cloneModel.setUntMis("col");
+ cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
@@ -412,7 +429,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
- spedizioneListModel.setUntMis("col");
+ spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
} else {
@@ -450,7 +467,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
- cloneModel.setUntMis("col");
+ cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
index 0d6b94d3..5bbad96b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
@@ -1155,10 +1155,6 @@ public class SpedizioneViewModel {
//Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe)
if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) {
shouldPrint = false;
-// if(UtilityString.isNullOrEmpty(cloneMtbColt.getCodTcol())) {
-// cloneMtbColt.setCodTcol(pickingObjectDTO.getSitArtOrdDTO().getCodTcol());
-// cloneMtbColt.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
-// }
}
@@ -1387,7 +1383,7 @@ public class SpedizioneViewModel {
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onFailed) {
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
- PrinterRESTConsumer.printColloStatic(
+ this.mPrinterRESTConsumer.printCollo(
printerName,
mtbColtToPrint,
1,
@@ -1515,15 +1511,12 @@ public class SpedizioneViewModel {
public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
-
void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete);
void onFilterApplied(String newValue);
void onFilterRemoved();
- void onMtbColrDeleteRequest(RunnableArgs onComplete);
-
void onError(Exception ex);
void onItemDispatched(PickingObjectDTO pickingObjectDTO,
@@ -1544,8 +1537,6 @@ public class SpedizioneViewModel {
Date dataScad,
boolean canOverflowOrderQuantity,
RunnableArgss onComplete);
-
- void onRowSaved();
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java
index e949cd0a..bf2cd22f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java
@@ -29,9 +29,8 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter {
-
private Context mContext;
- private List mDataset = new ArrayList<>();
+ private final List mDataset = new ArrayList<>();
private RunnableArgs mOnItemClicked;
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 3d1fbf5d..53cc77a2 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
@@ -17,7 +17,7 @@ import it.integry.integrywmsnative.core.model.DtbDocr;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
-import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
+import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
public class UltimeConsegneClienteRESTConsumer {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
index 7c608c24..c2bb867d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
@@ -1,40 +1,23 @@
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore;
-import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import com.annimon.stream.Optional;
-import com.annimon.stream.Stream;
-
-import java.util.ArrayList;
-import java.util.List;
-
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
-import it.integry.integrywmsnative.core.model.GtbAnag;
-import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
-import it.integry.integrywmsnative.core.settings.SettingsManager;
-import it.integry.integrywmsnative.core.utility.UtilityExceptions;
-import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
-import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
-import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel;
-import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
-import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
/**
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java
index ad4787de..7e60b3e9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java
@@ -19,7 +19,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
-import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
+import it.integry.integrywmsnative.gest.picking_resi_OLD.PickingResiActivity;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
index 996b442d..91ffa13c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
@@ -2,7 +2,6 @@ package it.integry.integrywmsnative.gest.vendita;
import android.app.Dialog;
import android.content.Context;
-import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString;
@@ -25,13 +24,11 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
-import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
-import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.CommonRESTException;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
@@ -234,7 +231,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
+ "
" +
"" + alreadyRegisteredUL + " " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
null,
- () -> startVenditaActivity(sitArtsDTO, selectedOrders, mtbColtList)
+ () -> SpedizioneActivity.startActivity(getActivity(), sitArtsDTO, selectedOrders, mtbColtList)
).show();
}, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress));
@@ -350,19 +347,4 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
onComplete.run();
}
}
-
- private void startVenditaActivity(List ordini, List selectedOrders, List mtbColtList) {
- Intent myIntent = new Intent(getActivity(), SpedizioneActivity.class);
-
- String keyPickingList = DataCache.addItem(ordini);
- myIntent.putExtra("keyPickingList", keyPickingList);
-
- String keyTestateOrdini = DataCache.addItem(selectedOrders);
- myIntent.putExtra("keyTestateOrdini", keyTestateOrdini);
-
- String keyColliRegistrati = DataCache.addItem(mtbColtList);
- myIntent.putExtra("keyColliRegistrati", keyColliRegistrati);
-
- getActivity().startActivity(myIntent);
- }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java
index 14a5d571..f2e665d4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java
@@ -93,12 +93,14 @@ public class SimpleAutoCompleteDropdownAdapter extends ArrayAdapter {
protected void publishResults(CharSequence constraint,
FilterResults results) {
// NOTE: this function is *always* called from the UI thread.
- ArrayList filtered = (ArrayList) results.values;
- notifyDataSetChanged();
- clear();
- for (int i = 0, l = filtered.size(); i < l; i++)
- add(filtered.get(i));
- notifyDataSetInvalidated();
+ if(constraint != null && constraint.length() > 2) {
+ ArrayList filtered = (ArrayList) results.values;
+ notifyDataSetChanged();
+ clear();
+ for (int i = 0, l = filtered.size(); i < l; i++)
+ add(filtered.get(i));
+ notifyDataSetInvalidated();
+ }
}
}
diff --git a/app/src/main/res/layout/activity_picking_resi.xml b/app/src/main/res/layout/activity_picking_resi.xml
index 9e2c9783..a435c364 100644
--- a/app/src/main/res/layout/activity_picking_resi.xml
+++ b/app/src/main/res/layout/activity_picking_resi.xml
@@ -4,9 +4,11 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
+
+
@@ -24,8 +26,7 @@
+ android:layout_height="match_parent">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
+
diff --git a/app/src/main/res/layout/ultime_consegne_main_list__item.xml b/app/src/main/res/layout/picking_resi_main_list__item.xml
similarity index 90%
rename from app/src/main/res/layout/ultime_consegne_main_list__item.xml
rename to app/src/main/res/layout/picking_resi_main_list__item.xml
index 8cbc884b..b3bc48ef 100644
--- a/app/src/main/res/layout/ultime_consegne_main_list__item.xml
+++ b/app/src/main/res/layout/picking_resi_main_list__item.xml
@@ -9,6 +9,7 @@
android:focusable="true">
+ android:gravity="end">
+
+
diff --git a/app/src/main/res/layout/ultime_consegne_main_list__item_header.xml b/app/src/main/res/layout/picking_resi_main_list__item_header.xml
similarity index 93%
rename from app/src/main/res/layout/ultime_consegne_main_list__item_header.xml
rename to app/src/main/res/layout/picking_resi_main_list__item_header.xml
index efda0d5e..6eecd206 100644
--- a/app/src/main/res/layout/ultime_consegne_main_list__item_header.xml
+++ b/app/src/main/res/layout/picking_resi_main_list__item_header.xml
@@ -10,7 +10,7 @@
android:background="@color/mainGreen">