Completate implementazioni per resi fornitore

This commit is contained in:
2025-06-19 17:30:05 +02:00
parent d44b726a66
commit 25e3a5ddc4
26 changed files with 573 additions and 242 deletions

View File

@@ -51,7 +51,7 @@ android {
buildTypes { buildTypes {
debug { debug {
ext.enableCrashlytics = false ext.enableCrashlytics = false
minifyEnabled true // Abilita la minimizzazione del codice // minifyEnabled true // Abilita la minimizzazione del codice
// shrinkResources true // Rimuove risorse non utilizzate // shrinkResources true // Rimuove risorse non utilizzate
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }

View File

@@ -25,6 +25,7 @@ import androidx.databinding.BindingAdapter;
import androidx.databinding.BindingConversion; import androidx.databinding.BindingConversion;
import androidx.databinding.Observable; import androidx.databinding.Observable;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
@@ -476,7 +477,7 @@ public class Converters {
@BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false) @BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false)
public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField<Date> observableDate, BaseDialogFragment parentFragment, boolean warningOnOldDates) { public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField<Date> observableDate, DialogFragment parentFragment, boolean warningOnOldDates) {
Pair<ObservableField<Date>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable); Pair<ObservableField<Date>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableDate) { if (pair == null || pair.first != observableDate) {
if (pair != null) { if (pair != null) {

View File

@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.model; package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -9,6 +10,8 @@ import java.util.Objects;
import it.integry.integrywmsnative.core.exception.DateNotRecognizedException; import it.integry.integrywmsnative.core.exception.DateNotRecognizedException;
import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException; import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException;
import it.integry.integrywmsnative.core.model.key.DtbDocrKey;
import it.integry.integrywmsnative.core.model.key.DtbDoctKey;
import it.integry.integrywmsnative.core.model.key.MtbColrKey; import it.integry.integrywmsnative.core.model.key.MtbColrKey;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
@@ -84,7 +87,7 @@ public class MtbColr extends EntityBase {
@SerializedName("codDtipDoc") @SerializedName("codDtipDoc")
private String codDtipDoc; private String codDtipDoc;
@SerializedName("dataDoc") @SerializedName("dataDoc")
private String dataDoc; private LocalDate dataDoc;
@SerializedName("serDoc") @SerializedName("serDoc")
private String serDoc; private String serDoc;
@SerializedName("numDoc") @SerializedName("numDoc")
@@ -186,9 +189,39 @@ public class MtbColr extends EntityBase {
} }
public MtbColrKey getKey() { public MtbColrKey getKey() {
if (UtilityString.isNullOrEmpty(gestione) ||
UtilityString.isNullOrEmpty(serCollo) ||
getDataColloLD() == null ||
numCollo == null ||
riga == null)
return null;
return new MtbColrKey(gestione, serCollo, getDataColloLD(), numCollo, riga); return new MtbColrKey(gestione, serCollo, getDataColloLD(), numCollo, riga);
} }
public DtbDoctKey getDocumentKey() {
if (UtilityString.isNullOrEmpty(codAnagDoc) ||
UtilityString.isNullOrEmpty(codDtipDoc) ||
UtilityString.isNullOrEmpty(serDoc) ||
dataDoc == null ||
numDoc == null)
return null;
return new DtbDoctKey(codAnagDoc, codDtipDoc, dataDoc, numDoc, serDoc);
}
public DtbDocrKey getDocumentRowKey() {
if (UtilityString.isNullOrEmpty(codAnagDoc) ||
UtilityString.isNullOrEmpty(codDtipDoc) ||
UtilityString.isNullOrEmpty(serDoc) ||
dataDoc == null ||
numDoc == null ||
idRigaDoc == null)
return null;
return new DtbDocrKey(codAnagDoc, codDtipDoc, dataDoc, numDoc, serDoc, idRigaDoc);
}
public static class Causale { public static class Causale {
public static final int DEFAULT = 0; public static final int DEFAULT = 0;
public static final int RETTIFICA = 1; public static final int RETTIFICA = 1;
@@ -561,11 +594,11 @@ public class MtbColr extends EntityBase {
return this; return this;
} }
public String getDataDoc() { public LocalDate getDataDoc() {
return dataDoc; return dataDoc;
} }
public MtbColr setDataDoc(String dataDoc) { public MtbColr setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc; this.dataDoc = dataDoc;
return this; return this;
} }

View File

@@ -19,6 +19,8 @@ import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
import it.integry.integrywmsnative.core.model.key.DtbDoctKey;
import it.integry.integrywmsnative.core.model.key.MtbColtKey;
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
@@ -73,7 +75,7 @@ public class MtbColt extends EntityBase {
@SerializedName("dataOrd") @SerializedName("dataOrd")
private String dataOrd; private String dataOrd;
@SerializedName("dataDoc") @SerializedName("dataDoc")
private String dataDoc; private LocalDate dataDoc;
@SerializedName("oraInizPrep") @SerializedName("oraInizPrep")
private String oraInizPrep; private String oraInizPrep;
@SerializedName("oraFinePrep") @SerializedName("oraFinePrep")
@@ -135,6 +137,27 @@ public class MtbColt extends EntityBase {
} }
} }
public MtbColtKey getKey() {
if (UtilityString.isNullOrEmpty(gestione) ||
UtilityString.isNullOrEmpty(serCollo) ||
getDataColloLD() == null ||
numCollo == null)
return null;
return new MtbColtKey(gestione, serCollo, getDataColloLD(), numCollo);
}
public DtbDoctKey getDocumentKey() {
if (UtilityString.isNullOrEmpty(codAnag) ||
UtilityString.isNullOrEmpty(codDtip) ||
UtilityString.isNullOrEmpty(serDoc) ||
dataDoc == null ||
numDoc == null)
return null;
return new DtbDoctKey(codAnag, codDtip, dataDoc, numDoc, serDoc);
}
public MtbColt initDefaultFields(GestioneEnum gestioneEnum) { public MtbColt initDefaultFields(GestioneEnum gestioneEnum) {
setGestione(gestioneEnum); setGestione(gestioneEnum);
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()); setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
@@ -410,11 +433,11 @@ public class MtbColt extends EntityBase {
return this; return this;
} }
public String getDataDoc() { public LocalDate getDataDoc() {
return dataDoc; return dataDoc;
} }
public MtbColt setDataDoc(String dataDoc) { public MtbColt setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc; this.dataDoc = dataDoc;
return this; return this;
} }

View File

@@ -36,7 +36,7 @@ public class DtbDoctKey {
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; if (o == null || (getClass() != o.getClass() && !getClass().isAssignableFrom(o.getClass()))) return false;
DtbDoctKey that = (DtbDoctKey) o; DtbDoctKey that = (DtbDoctKey) o;
return Objects.equals(codAnag, that.codAnag) && return Objects.equals(codAnag, that.codAnag) &&
Objects.equals(codDtip, that.codDtip) && Objects.equals(codDtip, that.codDtip) &&
@@ -45,6 +45,7 @@ public class DtbDoctKey {
Objects.equals(serDoc, that.serDoc); Objects.equals(serDoc, that.serDoc);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(codAnag, codDtip, dataDoc, numDoc, serDoc); return Objects.hash(codAnag, codDtip, dataDoc, numDoc, serDoc);

View File

@@ -132,7 +132,7 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
var codMarts = codMartToFind.parallelStream() var codMarts = codMartToFind.parallelStream()
.filter(Objects::nonNull) .filter(Objects::nonNull)
.distinct() .distinct()
.collect(Collectors.toUnmodifiableList()); .collect(Collectors.toUnmodifiableList());
ArticoloRESTConsumerService articoloRESTConsumer = restBuilder.getService(ArticoloRESTConsumerService.class); ArticoloRESTConsumerService articoloRESTConsumer = restBuilder.getService(ArticoloRESTConsumerService.class);
var response = articoloRESTConsumer var response = articoloRESTConsumer
.getByCodMart(new RetrieveArticoloByCodMartRequestDTO() .getByCodMart(new RetrieveArticoloByCodMartRequestDTO()

View File

@@ -290,6 +290,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public List<MtbColr> fillMtbAartsOfMtbColrsSynchronized(List<MtbColr> mtbColrs) throws Exception { public List<MtbColr> fillMtbAartsOfMtbColrsSynchronized(List<MtbColr> mtbColrs) throws Exception {
List<String> codMarts = new ArrayList<>(mtbColrs.stream() List<String> codMarts = new ArrayList<>(mtbColrs.stream()

View File

@@ -49,10 +49,14 @@ public class InsertUDCRowRequestDTO {
@SerializedName("codDtip") @SerializedName("codDtip")
private String codDtip; private String codDtip;
@SerializedName("pesoNettoKg")
private BigDecimal pesoNettoKg;
@SerializedName("pesoLordoKg") @SerializedName("customBarcodeUlIn")
private BigDecimal pesoLordoKg; private String customBarcodeUlIn;
@SerializedName("customCodMdepIn")
private String customCodMdepIn;
@SerializedName("customPosizioneIn")
private String customPosizioneIn;
@SerializedName("documentReso") @SerializedName("documentReso")
private DtbDocrKey documentReso; private DtbDocrKey documentReso;
@@ -220,20 +224,31 @@ public class InsertUDCRowRequestDTO {
return this; return this;
} }
public BigDecimal getPesoNettoKg() { public String getCustomBarcodeUlIn() {
return pesoNettoKg; return customBarcodeUlIn;
} }
public void setPesoNettoKg(BigDecimal pesoNettoKg) { public InsertUDCRowRequestDTO setCustomBarcodeUlIn(String customBarcodeUlIn) {
this.pesoNettoKg = pesoNettoKg; this.customBarcodeUlIn = customBarcodeUlIn;
return this;
} }
public BigDecimal getPesoLordoKg() { public String getCustomCodMdepIn() {
return pesoLordoKg; return customCodMdepIn;
} }
public void setPesoLordoKg(BigDecimal pesoLordoKg) { public InsertUDCRowRequestDTO setCustomCodMdepIn(String customCodMdepIn) {
this.pesoLordoKg = pesoLordoKg; this.customCodMdepIn = customCodMdepIn;
return this;
}
public String getCustomPosizioneIn() {
return customPosizioneIn;
}
public InsertUDCRowRequestDTO setCustomPosizioneIn(String customPosizioneIn) {
this.customPosizioneIn = customPosizioneIn;
return this;
} }
public DtbDocrKey getDocumentReso() { public DtbDocrKey getDocumentReso() {

View File

@@ -141,7 +141,7 @@ public class UpdatesManager {
try { try {
fileDownloader.download(); fileDownloader.download();
} catch (Exception e) { } catch (Exception e) {
progressDialogBuilder.dismissAllowingStateLoss(); progressDialogBuilder.dismiss();
UtilityExceptions.defaultException(context, e); UtilityExceptions.defaultException(context, e);
} }
}); });

View File

@@ -5,12 +5,12 @@ import android.os.Handler;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer; import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
@@ -20,8 +20,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag
public class PickingResiModule { public class PickingResiModule {
@Provides @Provides
PickingResiRESTConsumer providesPickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { PickingResiRESTConsumer providesPickingResiRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
return new PickingResiRESTConsumer(systemRESTConsumer, articoloRESTConsumer); return new PickingResiRESTConsumer(restBuilder, systemRESTConsumer, articoloRESTConsumer);
} }
@Provides @Provides
@@ -33,7 +33,6 @@ public class PickingResiModule {
PickingResiViewModel providesPickingResiViewModel(Handler handler, PickingResiViewModel providesPickingResiViewModel(Handler handler,
ArticoloRESTConsumer articoloRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer,
ColliDataRecoverService colliDataRecoverService, ColliDataRecoverService colliDataRecoverService,
OrdiniRESTConsumer ordiniRESTConsumer,
ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer,
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer, ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
@@ -44,7 +43,6 @@ public class PickingResiModule {
articoloRESTConsumer, articoloRESTConsumer,
barcodeRESTConsumer, barcodeRESTConsumer,
colliDataRecoverService, colliDataRecoverService,
ordiniRESTConsumer,
colliAccettazioneRESTConsumer, colliAccettazioneRESTConsumer,
colliSpedizioneRESTConsumer, colliSpedizioneRESTConsumer,
colliMagazzinoRESTConsumer, colliMagazzinoRESTConsumer,

View File

@@ -15,6 +15,7 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import javax.inject.Inject; import javax.inject.Inject;
@@ -33,6 +34,7 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol; import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliAccettazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
@@ -54,6 +56,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException; 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.PickingResiRESTConsumer;
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
import it.integry.integrywmsnative.gest.picking_resi.rest.dto.ScaricoUdcInDocumentDTO;
import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException; import it.integry.integrywmsnative.gest.spedizione.exceptions.NotCurrentYearLUException;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
@@ -72,6 +75,7 @@ public class PickingResiViewModel {
private String mDefaultCodMdepOfLU; private String mDefaultCodMdepOfLU;
private final Handler mHandler; private final Handler mHandler;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final ColliDataRecoverService mColliDataRecoverService; private final ColliDataRecoverService mColliDataRecoverService;
private final ColliAccettazioneRESTConsumer mColliAccettazioneRESTConsumer; private final ColliAccettazioneRESTConsumer mColliAccettazioneRESTConsumer;
@@ -83,6 +87,7 @@ public class PickingResiViewModel {
@Inject @Inject
public PickingResiViewModel(Handler handler, public PickingResiViewModel(Handler handler,
ArticoloRESTConsumer articoloRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer,
ColliDataRecoverService colliDataRecoverService, ColliDataRecoverService colliDataRecoverService,
ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer,
@@ -91,6 +96,7 @@ public class PickingResiViewModel {
PrinterRESTConsumer printerRESTConsumer, PrinterRESTConsumer printerRESTConsumer,
PickingResiRESTConsumer mPickingResiRESTConsumer) { PickingResiRESTConsumer mPickingResiRESTConsumer) {
this.mHandler = handler; this.mHandler = handler;
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliDataRecoverService = colliDataRecoverService; this.mColliDataRecoverService = colliDataRecoverService;
this.mColliAccettazioneRESTConsumer = colliAccettazioneRESTConsumer; this.mColliAccettazioneRESTConsumer = colliAccettazioneRESTConsumer;
@@ -171,6 +177,8 @@ public class PickingResiViewModel {
public void closeLU(boolean shouldPrint) throws Exception { public void closeLU(boolean shouldPrint) throws Exception {
if (mCurrentMtbColt == null) return; if (mCurrentMtbColt == null) return;
resetMatchedRows();
var canBeDeleted = mColliMagazzinoRESTConsumer.canULBeDeletedSynchronized(mCurrentMtbColt); var canBeDeleted = mColliMagazzinoRESTConsumer.canULBeDeletedSynchronized(mCurrentMtbColt);
if (canBeDeleted) { if (canBeDeleted) {
@@ -320,16 +328,53 @@ public class PickingResiViewModel {
} }
private void executeEtichettaLU(String SSCC) throws Exception { private void executeEtichettaLU(String SSCC) throws Exception {
var mtbColt = mColliMagazzinoRESTConsumer.getBySsccSynchronized(SSCC, true, false); MtbColt mtbColt = null;
mtbColt = mColliMagazzinoRESTConsumer.getBySsccSynchronized(SSCC, true, false);
if (mTipologiaReso == Tipologia.VENDITA) {
//Leggere i colli in cui ho barcode_ul_out uguale a SSCC scansionato (nel caso di reso da cliente)
//per sapere cosa ho venduto di preciso
var data = mPickingResiRESTConsumer.makeSynchronousRetrieveScarichiUdcInDocument(SSCC, null);
var mtbAarts = mArticoloRESTConsumer.getByCodMartsSynchronized(data.stream().map(ScaricoUdcInDocumentDTO::getCodMart).collect(Collectors.toUnmodifiableList()));
mtbColt.setMtbColr(new ObservableArrayList<>());
mtbColt.getMtbColr().addAll(data.stream()
.map(x -> {
MtbColr mtbColr = new MtbColr()
.setCodMart(x.getCodMart())
.setPartitaMag(x.getPartitaMag())
.setCodJcom(x.getCodJcom())
.setQtaCol(x.getQtaCol())
.setQtaCnf(x.getQtaCnf())
.setNumCnf(x.getNumCnf())
.setBarcodeUlOut(SSCC)
.setSerDoc(x.getSerDoc())
.setCodAnagDoc(x.getCodAnag())
.setCodDtipDoc(x.getCodDtip())
.setNumDoc(x.getNumDoc())
.setDataDoc(x.getDataDoc())
.setMtbAart(mtbAarts.stream().filter(y -> y.getCodMart().equalsIgnoreCase(x.getCodMart())).findFirst().get());
mtbColr.setUntMis(mtbColr.getMtbAart().getUntMis());
return mtbColr;
})
.collect(Collectors.toList()));
}
if (mtbColt != null && mtbColt.getMtbColr() != null && !mtbColt.getMtbColr().isEmpty()) { if (mtbColt != null && mtbColt.getMtbColr() != null && !mtbColt.getMtbColr().isEmpty()) {
if (mtbColt.getSegno() != -1) { if (mtbColt.getSegno() != -1) {
searchArtFromUL(mtbColt); searchArtFromUL(mtbColt);
} else } else
throw new InvalidLUException(); throw new InvalidLUException();
} else {
} else
throw new NoResultFromBarcodeException(SSCC); throw new NoResultFromBarcodeException(SSCC);
}
} }
@@ -370,8 +415,10 @@ public class PickingResiViewModel {
for (WithdrawableDtbDocr pickingObject : pickingList) { for (WithdrawableDtbDocr pickingObject : pickingList) {
//Da verificare se il controllo per partita deve essere sempre effettuato //Da verificare se il controllo per partita deve essere sempre effettuato
if (UtilityString.equalsIgnoreCase(x.getCodMart(), pickingObject.getCodMart()) && if (UtilityString.equalsIgnoreCase(x.getCodMart(), pickingObject.getCodMart()) &&
UtilityString.equalsIgnoreCase(x.getPartitaMag(), pickingObject.getPartitaMag()) &&
UtilityString.equalsIgnoreCase(x.getCodTagl(), pickingObject.getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), pickingObject.getCodTagl()) &&
UtilityString.equalsIgnoreCase(x.getCodCol(), pickingObject.getCodCol())) { UtilityString.equalsIgnoreCase(x.getCodCol(), pickingObject.getCodCol()) &&
(mTipologiaReso == Tipologia.ACQUISTO || x.getDocumentKey().equals(pickingObject.getKey()))) {
if (!matchPickingObject.contains(pickingObject)) { if (!matchPickingObject.contains(pickingObject)) {
matchPickingObject.add(pickingObject); matchPickingObject.add(pickingObject);
@@ -388,8 +435,10 @@ public class PickingResiViewModel {
cloneMtbColt.getMtbColr().stream() cloneMtbColt.getMtbColr().stream()
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getCodMart()) && .filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getCodMart()) &&
UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getPartitaMag()) &&
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getCodTagl()) &&
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getCodCol()))) UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getCodCol())) &&
(mTipologiaReso == Tipologia.ACQUISTO || x.getDocumentKey().equals(matchedObject.getKey())))
.forEach(cloneMtbColrs::remove); .forEach(cloneMtbColrs::remove);
cloneMtbColt.setMtbColr(cloneMtbColrs); cloneMtbColt.setMtbColr(cloneMtbColrs);
@@ -457,10 +506,18 @@ public class PickingResiViewModel {
BigDecimal totalAvailableQtaCnf; BigDecimal totalAvailableQtaCnf;
BigDecimal totalAvailableNumCnf; BigDecimal totalAvailableNumCnf;
BigDecimal initialQtaCol = BigDecimal.ZERO;
BigDecimal initialQtaCnf = BigDecimal.ZERO;
BigDecimal initialNumCnf = BigDecimal.ZERO;
if (mtbColrToDispatch != null) { if (mtbColrToDispatch != null) {
totalAvailableQtaCol = mtbColrToDispatch.getQtaCol(); totalAvailableQtaCol = mtbColrToDispatch.getQtaCol();
totalAvailableQtaCnf = mtbColrToDispatch.getQtaCnf(); totalAvailableQtaCnf = mtbColrToDispatch.getQtaCnf();
totalAvailableNumCnf = mtbColrToDispatch.getNumCnf(); totalAvailableNumCnf = mtbColrToDispatch.getNumCnf();
initialQtaCol = mtbColrToDispatch.getQtaCol();
initialQtaCnf = mtbColrToDispatch.getQtaCnf();
initialNumCnf = mtbColrToDispatch.getNumCnf();
} else { } else {
totalAvailableQtaCol = totalQtaDoc; totalAvailableQtaCol = totalQtaDoc;
totalAvailableQtaCnf = qtaCnfDoc; totalAvailableQtaCnf = qtaCnfDoc;
@@ -469,9 +526,9 @@ public class PickingResiViewModel {
var pickedQuantityDTO = this.sendOnItemDispatched( var pickedQuantityDTO = this.sendOnItemDispatched(
withdrawableDtbDocr.getMtbAart(), withdrawableDtbDocr.getMtbAart(),
totalAvailableNumCnf, initialNumCnf,
totalAvailableQtaCnf, initialQtaCnf,
totalAvailableQtaCol, initialQtaCol,
totalAvailableQtaCol, totalAvailableQtaCol,
totalAvailableNumCnf, totalAvailableNumCnf,
totalAvailableQtaCnf, totalAvailableQtaCnf,
@@ -525,12 +582,15 @@ public class PickingResiViewModel {
public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) throws Exception { public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) throws Exception {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
var cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
InsertUDCRowRequestDTO insertUDCRowRequestDTO = null; InsertUDCRowRequestDTO insertUDCRowRequestDTO = null;
InsertUDSRowRequestDTO insertUDSRowRequestDTO = null; InsertUDSRowRequestDTO insertUDSRowRequestDTO = null;
if (mTipologiaReso == Tipologia.VENDITA) { if (mTipologiaReso == Tipologia.VENDITA) {
insertUDCRowRequestDTO = new InsertUDCRowRequestDTO() insertUDCRowRequestDTO = new InsertUDCRowRequestDTO()
.setTargetMtbColt(mCurrentMtbColt) .setTargetMtbColt(cloneMtbColt)
.setCodMart(withdrawableDtbDocr.getMtbAart().getCodMart()) .setCodMart(withdrawableDtbDocr.getMtbAart().getCodMart())
.setPartitaMag(partitaMag) .setPartitaMag(partitaMag)
.setDataScad(dataScad) .setDataScad(dataScad)
@@ -543,7 +603,7 @@ public class PickingResiViewModel {
} else if (mTipologiaReso == Tipologia.ACQUISTO) { } else if (mTipologiaReso == Tipologia.ACQUISTO) {
insertUDSRowRequestDTO = new InsertUDSRowRequestDTO() insertUDSRowRequestDTO = new InsertUDSRowRequestDTO()
.setTargetMtbColt(mCurrentMtbColt) .setTargetMtbColt(cloneMtbColt)
.setCodMart(withdrawableDtbDocr.getMtbAart().getCodMart()) .setCodMart(withdrawableDtbDocr.getMtbAart().getCodMart())
.setPartitaMag(partitaMag) .setPartitaMag(partitaMag)
.setDataScad(dataScad) .setDataScad(dataScad)
@@ -574,6 +634,10 @@ public class PickingResiViewModel {
if (mTipologiaReso == Tipologia.ACQUISTO) { if (mTipologiaReso == Tipologia.ACQUISTO) {
insertUDSRowRequestDTO insertUDSRowRequestDTO
.setSourceMtbColr(mtbColrToDispatch); .setSourceMtbColr(mtbColrToDispatch);
} else if (mTipologiaReso == Tipologia.VENDITA) {
//Nel caso in cui ho scansionato un SSCC che è esistito a magazzino allora forzo il barcode_ul_in
//uguale a barcode_ul_out in modo che il servizio lo metta in barcode_ul_in
insertUDCRowRequestDTO.setCustomBarcodeUlIn(mtbColrToDispatch.getBarcodeUlOut());
} }
} }
@@ -596,7 +660,7 @@ public class PickingResiViewModel {
boolean finalShouldPrint = shouldPrint; boolean finalShouldPrint = shouldPrint;
MtbColr insertedULRow; MtbColr insertedULRow;
if(mTipologiaReso == Tipologia.VENDITA) { if (mTipologiaReso == Tipologia.VENDITA) {
insertedULRow = this.mColliAccettazioneRESTConsumer.synchronousInsertUDCRow(insertUDCRowRequestDTO); insertedULRow = this.mColliAccettazioneRESTConsumer.synchronousInsertUDCRow(insertUDCRowRequestDTO);
} else if (mTipologiaReso == Tipologia.ACQUISTO) { } else if (mTipologiaReso == Tipologia.ACQUISTO) {
insertedULRow = this.mColliSpedizioneRESTConsumer.insertUDSRowSynchronized(insertUDSRowRequestDTO); insertedULRow = this.mColliSpedizioneRESTConsumer.insertUDSRowSynchronized(insertUDSRowRequestDTO);

View File

@@ -13,20 +13,27 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.model.DtbDocr; import it.integry.integrywmsnative.core.model.DtbDocr;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.key.DtbDoctKey;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.core.utility.UtilityQuery;
import it.integry.integrywmsnative.gest.picking_resi.rest.dto.RetrieveScarichiUdcInDocumentRequestDTO;
import it.integry.integrywmsnative.gest.picking_resi.rest.dto.ScaricoUdcInDocumentDTO;
@Singleton @Singleton
public class PickingResiRESTConsumer { public class PickingResiRESTConsumer extends _BaseRESTConsumer {
private final RESTBuilder restBuilder;
private final SystemRESTConsumer mSystemRestConsumer; private final SystemRESTConsumer mSystemRestConsumer;
private final ArticoloRESTConsumer mArticoloRESTConsumer; private final ArticoloRESTConsumer mArticoloRESTConsumer;
@Inject @Inject
public PickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) { public PickingResiRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
this.restBuilder = restBuilder;
this.mSystemRestConsumer = systemRESTConsumer; this.mSystemRestConsumer = systemRESTConsumer;
this.mArticoloRESTConsumer = articoloRESTConsumer; this.mArticoloRESTConsumer = articoloRESTConsumer;
} }
@@ -93,4 +100,17 @@ public class PickingResiRESTConsumer {
} }
public List<ScaricoUdcInDocumentDTO> makeSynchronousRetrieveScarichiUdcInDocument(String barcodeUdc, List<DtbDoctKey> documents) throws Exception {
var service = restBuilder.getService(PickingResiRESTConsumerService.class);
var response = service.retrieveScarichiUdcInDocuments(barcodeUdc, new RetrieveScarichiUdcInDocumentRequestDTO()
.setDocuments(documents))
.execute();
var data = analyzeAnswer(response, "retrieve-scarichi-udc-in-documents");
return data.getScarichiUdc() != null ? data.getScarichiUdc() : new ArrayList<>();
}
} }

View File

@@ -0,0 +1,19 @@
package it.integry.integrywmsnative.gest.picking_resi.rest;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.picking_resi.rest.dto.RetrieveScarichiUdcInDocumentRequestDTO;
import it.integry.integrywmsnative.gest.picking_resi.rest.dto.RetrieveScarichiUdcInDocumentResponseDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface PickingResiRESTConsumerService {
@POST("wms/resi-clienti/retrieve-scarichi-udc-in-document")
Call<ServiceRESTResponse<RetrieveScarichiUdcInDocumentResponseDTO>> retrieveScarichiUdcInDocuments(
@Query("barcodeUdc") String barcodeUdc,
@Body RetrieveScarichiUdcInDocumentRequestDTO requestBody
);
}

View File

@@ -0,0 +1,22 @@
package it.integry.integrywmsnative.gest.picking_resi.rest.dto;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import it.integry.integrywmsnative.core.model.key.DtbDoctKey;
public class RetrieveScarichiUdcInDocumentRequestDTO {
@SerializedName("documents")
private List<DtbDoctKey> documents;
public List<DtbDoctKey> getDocuments() {
return documents;
}
public RetrieveScarichiUdcInDocumentRequestDTO setDocuments(List<DtbDoctKey> documents) {
this.documents = documents;
return this;
}
}

View File

@@ -0,0 +1,20 @@
package it.integry.integrywmsnative.gest.picking_resi.rest.dto;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class RetrieveScarichiUdcInDocumentResponseDTO {
@SerializedName("scarichiUdc")
private List<ScaricoUdcInDocumentDTO> scarichiUdc;
public List<ScaricoUdcInDocumentDTO> getScarichiUdc() {
return scarichiUdc;
}
public RetrieveScarichiUdcInDocumentResponseDTO setScarichiUdc(List<ScaricoUdcInDocumentDTO> scarichiUdc) {
this.scarichiUdc = scarichiUdc;
return this;
}
}

View File

@@ -0,0 +1,143 @@
package it.integry.integrywmsnative.gest.picking_resi.rest.dto;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.time.LocalDate;
public class ScaricoUdcInDocumentDTO {
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codDtip")
private String codDtip;
@SerializedName("dataDoc")
private LocalDate dataDoc;
@SerializedName("numDoc")
private int numDoc;
@SerializedName("serDoc")
private String serDoc;
@SerializedName("codMart")
private String codMart;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("codJcom")
private String codJcom;
@SerializedName("qtaCol")
private BigDecimal qtaCol;
@SerializedName("qtaCnf")
private BigDecimal qtaCnf;
@SerializedName("numCnf")
private BigDecimal numCnf;
public String getCodAnag() {
return codAnag;
}
public ScaricoUdcInDocumentDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodDtip() {
return codDtip;
}
public ScaricoUdcInDocumentDTO setCodDtip(String codDtip) {
this.codDtip = codDtip;
return this;
}
public LocalDate getDataDoc() {
return dataDoc;
}
public ScaricoUdcInDocumentDTO setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public int getNumDoc() {
return numDoc;
}
public ScaricoUdcInDocumentDTO setNumDoc(int numDoc) {
this.numDoc = numDoc;
return this;
}
public String getSerDoc() {
return serDoc;
}
public ScaricoUdcInDocumentDTO setSerDoc(String serDoc) {
this.serDoc = serDoc;
return this;
}
public String getCodMart() {
return codMart;
}
public ScaricoUdcInDocumentDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public ScaricoUdcInDocumentDTO setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public String getCodJcom() {
return codJcom;
}
public ScaricoUdcInDocumentDTO setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public BigDecimal getQtaCol() {
return qtaCol;
}
public ScaricoUdcInDocumentDTO setQtaCol(BigDecimal qtaCol) {
this.qtaCol = qtaCol;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public ScaricoUdcInDocumentDTO setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public BigDecimal getNumCnf() {
return numCnf;
}
public ScaricoUdcInDocumentDTO setNumCnf(BigDecimal numCnf) {
this.numCnf = numCnf;
return this;
}
}

View File

@@ -326,6 +326,7 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett
null, null,
() -> { () -> {
DialogSimpleMessageView.makeInfoDialog( DialogSimpleMessageView.makeInfoDialog(
this,
null, null,
Html.fromHtml("Vuoi recuperare del materiale prima di chiudere gli ordini?"), Html.fromHtml("Vuoi recuperare del materiale prima di chiudere gli ordini?"),
null, null,

View File

@@ -123,7 +123,7 @@ public class UltimeConsegneClienteFragment extends BaseFragment implements Ultim
handler.post(() -> { handler.post(() -> {
DialogUltimeConsegneFiltroAvanzatoView.newInstance(gtbAnags, filterResult -> { DialogUltimeConsegneFiltroAvanzatoView.newInstance(requireContext(), gtbAnags, filterResult -> {
if (filterResult == null || filterResult.isAborted()) if (filterResult == null || filterResult.isAborted())
popMe(); popMe();
@@ -132,7 +132,8 @@ public class UltimeConsegneClienteFragment extends BaseFragment implements Ultim
refreshConsegne(filterResult.getGtbAnag()); refreshConsegne(filterResult.getGtbAnag());
}); });
}) })
.show(requireActivity().getSupportFragmentManager(), "dialog-filtro-ultime-consegne"); .show();
// .show(requireActivity().getSupportFragmentManager(), "dialog-filtro-ultime-consegne");
}); });
} catch (Exception e) { } catch (Exception e) {

View File

@@ -77,6 +77,9 @@ public class UltimeConsegneClienteViewModel {
var result = this.mUltimeConsegneClienteRESTConsumer.makeSynchronousRetrieveDocumentiFromBarcodeUdcRequest(barcodeUl); var result = this.mUltimeConsegneClienteRESTConsumer.makeSynchronousRetrieveDocumentiFromBarcodeUdcRequest(barcodeUl);
if(result == null)
throw new Exception("Nessun documento trovato per il codice barcode: <b>" + barcodeUl + "</b>");
var filteredDocumentList = originalDocumentList.stream() var filteredDocumentList = originalDocumentList.stream()
.filter(x -> result.stream().anyMatch(y -> x.getDtbDoctKey().equals(y))) .filter(x -> result.stream().anyMatch(y -> x.getDtbDoctKey().equals(y)))
.collect(Collectors.toUnmodifiableList()); .collect(Collectors.toUnmodifiableList());

View File

@@ -1,15 +1,13 @@
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog; package it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.WindowManager; import android.view.WindowManager;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.LifecycleOwner;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -20,31 +18,28 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.GtbAnag; import it.integry.integrywmsnative.core.model.GtbAnag;
import it.integry.integrywmsnative.databinding.DialogUltimeConsegneFiltroAvanzatoBinding; import it.integry.integrywmsnative.databinding.DialogUltimeConsegneFiltroAvanzatoBinding;
import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteDropdownAdapter; import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteDropdownAdapter;
public class DialogUltimeConsegneFiltroAvanzatoView extends BaseDialogFragment { public class DialogUltimeConsegneFiltroAvanzatoView extends MaterialAlertDialogBuilder {
@Inject @Inject
DialogUltimeConsegneFiltroAvanzatoViewModel mViewModel; DialogUltimeConsegneFiltroAvanzatoViewModel mViewModel;
private DialogUltimeConsegneFiltroAvanzatoBinding mBindings; private final DialogUltimeConsegneFiltroAvanzatoBinding mBindings;
private Context mContext; private final Context mContext;
private SimpleAutoCompleteDropdownAdapter<String> arrayAdapterRagSoc; private SimpleAutoCompleteDropdownAdapter<String> arrayAdapterRagSoc;
private final RunnableArgs<Result> onConfirm; private final RunnableArgs<Result> onConfirm;
public static DialogUltimeConsegneFiltroAvanzatoView newInstance(Context context, final List<GtbAnag> items, RunnableArgs<Result> onConfirm) {
public static DialogUltimeConsegneFiltroAvanzatoView newInstance(final List<GtbAnag> items, RunnableArgs<Result> onConfirm) { return new DialogUltimeConsegneFiltroAvanzatoView(context, items, onConfirm);
return new DialogUltimeConsegneFiltroAvanzatoView(items, onConfirm);
} }
public DialogUltimeConsegneFiltroAvanzatoView(@NonNull Context context, final List<GtbAnag> items, RunnableArgs<Result> onConfirm) {
private DialogUltimeConsegneFiltroAvanzatoView(final List<GtbAnag> items, RunnableArgs<Result> onConfirm) { super(context);
super(); this.mContext = context;
this.onConfirm = onConfirm; this.onConfirm = onConfirm;
MainApplication.appComponent MainApplication.appComponent
@@ -52,55 +47,41 @@ public class DialogUltimeConsegneFiltroAvanzatoView extends BaseDialogFragment {
.create() .create()
.inject(this); .inject(this);
mViewModel.init(items); mViewModel.init(items);
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
mBindings = DialogUltimeConsegneFiltroAvanzatoBinding.inflate(LayoutInflater.from(this.mContext), null, false); mBindings = DialogUltimeConsegneFiltroAvanzatoBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this); // Necessario per LiveData e binding if (mContext instanceof LifecycleOwner) {
mBindings.setLifecycleOwner((LifecycleOwner) mContext); // Necessario per LiveData e binding
}
mBindings.setView(this); mBindings.setView(this);
mBindings.setViewmodel(mViewModel); mBindings.setViewmodel(mViewModel);
setCancelable(false); setCancelable(false);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext) setView(mBindings.getRoot());
.setView(mBindings.getRoot()) setPositiveButton(R.string.ok, (dialog, which) -> onOk());
.setCancelable(isCancelable()) setNegativeButton(R.string.abort, (dialog, which) -> {
.setPositiveButton(R.string.ok, (dialog, which) -> onOk())
.setNegativeButton(R.string.abort, (dialog, which) -> {
if (onConfirm != null) onConfirm.run(Result.aborted()); if (onConfirm != null) onConfirm.run(Result.aborted());
}) });
.setNeutralButton(R.string.reset, (dialog, which) -> {}) setNeutralButton(R.string.reset, (dialog, which) -> {
.create(); });
alertDialog.setCanceledOnTouchOutside(isCancelable());
alertDialog.setOnShowListener(this); // Rimosso se non specificamente necessario per altro
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
this.initDropDowns(); this.initDropDowns();
return alertDialog;
} }
@NonNull
@Override @Override
public void onShow(DialogInterface dialogInterface) { public AlertDialog create() {
super.onShow(dialogInterface); AlertDialog alertDialog = super.create();
alertDialog.setCanceledOnTouchOutside(false);
var alertDialog = ((AlertDialog) dialogInterface); alertDialog.setOnShowListener(dialogInterface -> {
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
var neutralButton = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL); var neutralButton = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL);
neutralButton.setOnClickListener(view -> { neutralButton.setOnClickListener(view -> {
reset(); reset();
}); });
} });
return alertDialog;
@Override
public void dismiss() {
if (getDialog() != null) getDialog().dismiss();
super.dismiss();
} }
private void initDropDowns() { private void initDropDowns() {
@@ -109,7 +90,7 @@ public class DialogUltimeConsegneFiltroAvanzatoView extends BaseDialogFragment {
mContext, mContext,
R.layout.dialog_vendita_filtro_avanzato__single_item, // Assicurati che questo layout sia un semplice TextView R.layout.dialog_vendita_filtro_avanzato__single_item, // Assicurati che questo layout sia un semplice TextView
mViewModel.getAvailableRagSocsStrings(), // LiveData<List<String>> mViewModel.getAvailableRagSocsStrings(), // LiveData<List<String>>
this // LifecycleOwner (LifecycleOwner) mContext // Assumendo che il contesto sia un LifecycleOwner
); );
mBindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc); mBindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc);
@@ -136,13 +117,6 @@ public class DialogUltimeConsegneFiltroAvanzatoView extends BaseDialogFragment {
onConfirm.run(Result.completed(mViewModel.getRagSocBindable().getValue(), mViewModel.getDataDocBindable().getValue())); onConfirm.run(Result.completed(mViewModel.getRagSocBindable().getValue(), mViewModel.getDataDocBindable().getValue()));
} }
@Override
public void onDestroyView() {
super.onDestroyView();
mBindings = null; // Per evitare memory leaks
}
public static class Result { public static class Result {
private final GtbAnag gtbAnag; private final GtbAnag gtbAnag;
private final Date dataDoc; private final Date dataDoc;

View File

@@ -129,7 +129,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl
this.onLoadingEnded(); this.onLoadingEnded();
handler.post(() -> { handler.post(() -> {
DialogUltimeConsegneFiltroAvanzatoView.newInstance(gtbAnags, filterResult -> { DialogUltimeConsegneFiltroAvanzatoView.newInstance(requireContext(), gtbAnags, filterResult -> {
if (filterResult == null || filterResult.isAborted()) if (filterResult == null || filterResult.isAborted())
popMe(); popMe();
@@ -138,8 +138,7 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl
refreshArrivi(filterResult.getGtbAnag(), null); refreshArrivi(filterResult.getGtbAnag(), null);
resetSelected(); resetSelected();
}); });
}) });
.show(requireActivity().getSupportFragmentManager(), "dialog-filtro-ultimi-arrivi");
}); });
} catch (Exception e) { } catch (Exception e) {
this.onError(e); this.onError(e);

View File

@@ -1,15 +1,13 @@
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog; package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.WindowManager; import android.view.WindowManager;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.LifecycleOwner;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -20,13 +18,12 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.GtbAnag; import it.integry.integrywmsnative.core.model.GtbAnag;
import it.integry.integrywmsnative.databinding.DialogUltimiArriviFornitoreFiltroAvanzatoBinding; import it.integry.integrywmsnative.databinding.DialogUltimiArriviFornitoreFiltroAvanzatoBinding;
import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteDropdownAdapter; import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteDropdownAdapter;
public class DialogUltimiArriviFornitoreFiltroAvanzatoView extends BaseDialogFragment { public class DialogUltimiArriviFornitoreFiltroAvanzatoView extends MaterialAlertDialogBuilder {
@Inject @Inject
DialogUltimiArriviFornitoreFiltroAvanzatoViewModel mViewModel; DialogUltimiArriviFornitoreFiltroAvanzatoViewModel mViewModel;
@@ -38,13 +35,13 @@ public class DialogUltimiArriviFornitoreFiltroAvanzatoView extends BaseDialogFra
private final RunnableArgs<Result> onConfirm; private final RunnableArgs<Result> onConfirm;
public static DialogUltimiArriviFornitoreFiltroAvanzatoView newInstance(final List<GtbAnag> items, RunnableArgs<Result> onConfirm) { public static DialogUltimiArriviFornitoreFiltroAvanzatoView newInstance(Context context, final List<GtbAnag> items, RunnableArgs<Result> onConfirm) {
return new DialogUltimiArriviFornitoreFiltroAvanzatoView(items, onConfirm); return new DialogUltimiArriviFornitoreFiltroAvanzatoView(context, items, onConfirm);
} }
private DialogUltimiArriviFornitoreFiltroAvanzatoView(final List<GtbAnag> items, RunnableArgs<Result> onConfirm) { private DialogUltimiArriviFornitoreFiltroAvanzatoView(@NonNull Context context, final List<GtbAnag> items, RunnableArgs<Result> onConfirm) {
super(); super(context);
this.mContext = context;
this.onConfirm = onConfirm; this.onConfirm = onConfirm;
MainApplication.appComponent MainApplication.appComponent
@@ -53,59 +50,41 @@ public class DialogUltimiArriviFornitoreFiltroAvanzatoView extends BaseDialogFra
.inject(this); .inject(this);
mViewModel.init(items); mViewModel.init(items);
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
mBindings = DialogUltimiArriviFornitoreFiltroAvanzatoBinding.inflate(LayoutInflater.from(this.mContext), null, false); mBindings = DialogUltimiArriviFornitoreFiltroAvanzatoBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this); if (mContext instanceof LifecycleOwner) {
mBindings.setLifecycleOwner((LifecycleOwner) mContext); // Necessario per LiveData e binding
}
mBindings.setView(this); mBindings.setView(this);
mBindings.setViewmodel(mViewModel); mBindings.setViewmodel(mViewModel);
setCancelable(false); setCancelable(false);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext) setView(mBindings.getRoot());
.setView(mBindings.getRoot()) setPositiveButton(R.string.ok, (dialog, which) -> onOk());
.setCancelable(isCancelable()) setNegativeButton(R.string.abort, (dialog, which) -> {
.setPositiveButton(R.string.ok, (dialog, which) -> onOk())
.setNegativeButton(R.string.abort, (dialog, which) -> {
if (onConfirm != null) onConfirm.run(Result.aborted()); if (onConfirm != null) onConfirm.run(Result.aborted());
}) });
.setNeutralButton(R.string.reset, (dialog, which) -> {}) setNeutralButton(R.string.reset, (dialog, which) -> {
.create(); });
alertDialog.setCanceledOnTouchOutside(isCancelable());
alertDialog.setOnShowListener(this); // Rimosso se non specificamente necessario per altro
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
this.initDropDowns(); this.initDropDowns();
return alertDialog;
} }
@NonNull
@Override @Override
public void onShow(DialogInterface dialogInterface) { public AlertDialog create() {
super.onShow(dialogInterface); AlertDialog alertDialog = super.create();
alertDialog.setCanceledOnTouchOutside(false);
var alertDialog = ((AlertDialog) dialogInterface); alertDialog.setOnShowListener(dialogInterface -> {
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
var neutralButton = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL); var neutralButton = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL);
neutralButton.setOnClickListener(view -> { neutralButton.setOnClickListener(view -> {
reset(); reset();
}); });
} });
return alertDialog;
@Override
public void dismiss() {
if (getDialog() != null) getDialog().dismiss();
super.dismiss();
} }
private void initDropDowns() { private void initDropDowns() {
@@ -114,7 +93,7 @@ public class DialogUltimiArriviFornitoreFiltroAvanzatoView extends BaseDialogFra
mContext, mContext,
R.layout.dialog_vendita_filtro_avanzato__single_item, // Assicurati che questo layout sia un semplice TextView R.layout.dialog_vendita_filtro_avanzato__single_item, // Assicurati che questo layout sia un semplice TextView
mViewModel.getAvailableRagSocsStrings(), // LiveData<List<String>> mViewModel.getAvailableRagSocsStrings(), // LiveData<List<String>>
this // LifecycleOwner (LifecycleOwner) mContext // Assumendo che il contesto sia un LifecycleOwner
); );
mBindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc); mBindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc);
@@ -139,16 +118,8 @@ public class DialogUltimiArriviFornitoreFiltroAvanzatoView extends BaseDialogFra
public void onOk() { public void onOk() {
if (onConfirm != null) if (onConfirm != null)
onConfirm.run(Result.completed(mViewModel.getRagSocBindable().getValue(), mViewModel.getDataDocBindable().getValue())); onConfirm.run(Result.completed(mViewModel.getRagSocBindable().getValue(), mViewModel.getDataDocBindable().getValue()));
// dismiss();
} }
@Override
public void onDestroyView() {
super.onDestroyView();
mBindings = null; // Per evitare memory leaks
}
public static class Result { public static class Result {
private final GtbAnag gtbAnag; private final GtbAnag gtbAnag;

View File

@@ -1,18 +1,20 @@
package it.integry.integrywmsnative.view.dialogs.base; package it.integry.integrywmsnative.view.dialogs.base;
import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Spanned; import android.text.Spanned;
import android.util.DisplayMetrics;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.RelativeLayout; import android.view.WindowManager;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.LinearLayoutCompat; import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.core.content.res.ResourcesCompat; import androidx.core.content.res.ResourcesCompat;
@@ -22,8 +24,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.HashMap; import java.util.HashMap;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.databinding.DialogBaseBinding; import it.integry.integrywmsnative.databinding.DialogBaseBinding;
@@ -31,7 +31,7 @@ import it.integry.integrywmsnative.databinding.DialogBaseBinding;
* Created by GiuseppeS on 22/03/2018. * Created by GiuseppeS on 22/03/2018.
*/ */
public class DialogSimpleMessageView extends BaseDialogFragment { public class DialogSimpleMessageView extends MaterialAlertDialogBuilder {
public enum TYPE { public enum TYPE {
INFO(1), INFO(1),
@@ -58,6 +58,7 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
} }
private final Context mContext;
private final TYPE mType; private final TYPE mType;
private final String mTitleText; private final String mTitleText;
private final Spanned mMessageText; private final Spanned mMessageText;
@@ -73,16 +74,16 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
private String neutralButtonText; private String neutralButtonText;
private String negativeButtonText; private String negativeButtonText;
private AlertDialog dialog;
private DialogBaseBinding mBindings;
public static DialogSimpleMessageView newInstance(@NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) { public static DialogSimpleMessageView newInstance(@NonNull Context context, @NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) {
return new DialogSimpleMessageView(type, titleText, messageText, hashmapContent, onPositiveClick, onNegativeClick, rNeutralButtonString, onNeutralClick); return new DialogSimpleMessageView(context, type, titleText, messageText, hashmapContent, onPositiveClick, onNegativeClick, rNeutralButtonString, onNeutralClick);
} }
private DialogSimpleMessageView(@NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) { private DialogSimpleMessageView(@NonNull Context context, @NonNull TYPE type, @NonNull String titleText, @NonNull Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick, @StringRes Integer rNeutralButtonString, Runnable onNeutralClick) {
super(); super(context);
this.mContext = context;
this.mType = type; this.mType = type;
this.mTitleText = titleText; this.mTitleText = titleText;
this.mMessageText = messageText; this.mMessageText = messageText;
@@ -91,73 +92,94 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
this.mOnNegativeClick = onNegativeClick; this.mOnNegativeClick = onNegativeClick;
this.mRNeutralButtonString = rNeutralButtonString; this.mRNeutralButtonString = rNeutralButtonString;
this.mOnNeutralClick = onNeutralClick; this.mOnNeutralClick = onNeutralClick;
}
@Override DialogBaseBinding bindings = DialogBaseBinding.inflate(LayoutInflater.from(context), null, false);
public void onStart() {
super.onStart();
UtilityDialog.setTo90PercentWidth(this.requireContext(), this); setCancelable(false);
this.initContent(bindings);
setView(bindings.getRoot());
if (isPositiveVisible())
setPositiveButton(getPositiveButtonText(), (dialog, which) -> {
if (this.mOnPositiveClick != null) this.mOnPositiveClick.run();
});
if (isNeutralVisible())
setNeutralButton(getNeutralButtonText(), (dialog, which) -> {
if (this.mOnNeutralClick != null) this.mOnNeutralClick.run();
});
if (isNegativeVisible())
setNegativeButton(getNegativeButtonText(), (dialog, which) -> {
if (this.mOnNegativeClick != null) this.mOnNegativeClick.run();
});
} }
@NonNull @NonNull
@Override @Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { public AlertDialog create() {
mBindings = DialogBaseBinding.inflate(LayoutInflater.from(requireContext()), null, false); dialog = super.create();
// dialog.setCanceledOnTouchOutside(isCancelable());
mBindings.setView(this); dialog.setOnShowListener(d -> {
mBindings.setLifecycleOwner(this); if (mContext instanceof Activity) {
setCancelable(false); Dialog dialogToShow = (Dialog) d;
if (dialogToShow.getWindow() != null) {
this.initContent(); DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) mContext).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
var alertDialogBuilder = new MaterialAlertDialogBuilder(requireContext()) int displayWidth = displayMetrics.widthPixels;
.setView(mBindings.getRoot()) WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
.setCancelable(isCancelable()); layoutParams.copyFrom(dialogToShow.getWindow().getAttributes());
int dialogWindowWidth = (int) (displayWidth * 0.9f);
if (isPositiveVisible()) layoutParams.width = dialogWindowWidth;
alertDialogBuilder.setPositiveButton(getPositiveButtonText(), (dialog, which) -> { dialogToShow.getWindow().setAttributes(layoutParams);
if(this.mOnPositiveClick != null) this.mOnPositiveClick.run(); }
}
}); });
return dialog;
if (isNeutralVisible())
alertDialogBuilder.setNeutralButton(getNeutralButtonText(), (dialog, which) -> {
this.mOnNeutralClick.run();
});
if (isNegativeVisible())
alertDialogBuilder.setNegativeButton(getNegativeButtonText(), (dialog, which) -> {
this.mOnNegativeClick.run();
});
var alertDialog = alertDialogBuilder.create();
alertDialog.setCanceledOnTouchOutside(isCancelable());
return alertDialog;
} }
private void initContent() { @Override
public AlertDialog show() {
if (dialog == null) {
dialog = create();
}
if (!dialog.isShowing()) {
dialog.show();
}
return dialog;
}
public void dismiss() {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
}
private void initContent(DialogBaseBinding mBindings) {
int colorBackgroundTitle = -1; int colorBackgroundTitle = -1;
Drawable titleIconRes = switch (mType) { Drawable titleIconRes = switch (mType) {
case INFO -> { case INFO -> {
colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.colorPrimary); colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.colorPrimary);
yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_info_78dp, null); yield ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_info_78dp, null);
} }
case SUCCESS -> { case SUCCESS -> {
colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.green_300); colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.green_300);
yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_done_white_24dp, null); yield ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_done_white_24dp, null);
} }
case WARNING -> { case WARNING -> {
colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.yellow_600); colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.yellow_600);
yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_warning_white_24dp, null); yield ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_warning_white_24dp, null);
} }
case ERROR -> { case ERROR -> {
colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.red_300); colorBackgroundTitle = ContextCompat.getColor(mContext, R.color.red_300);
yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_mood_bad_24dp, null); yield ResourcesCompat.getDrawable(mContext.getResources(), R.drawable.ic_mood_bad_24dp, null);
} }
}; };
this.positiveButtonText = requireContext().getText(mOnNegativeClick != null ? R.string.yes : R.string.ok).toString(); this.positiveButtonText = mContext.getText(mOnNegativeClick != null ? R.string.yes : R.string.ok).toString();
this.negativeButtonText = requireContext().getText(R.string.no).toString(); this.negativeButtonText = mContext.getText(R.string.no).toString();
//Title VIEW //Title VIEW
mBindings.titleText.setText(mTitleText); mBindings.titleText.setText(mTitleText);
@@ -177,7 +199,7 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
String currentKey = mHashmapContent.keySet().toArray()[i].toString(); String currentKey = mHashmapContent.keySet().toArray()[i].toString();
String currentValue = mHashmapContent.get(currentKey); String currentValue = mHashmapContent.get(currentKey);
RelativeLayout singleMapContent = (RelativeLayout) LayoutInflater.from(requireContext()).inflate(R.layout.dialog_custom_content_hashmap_viewmodel, hashMapContainer); View singleMapContent = LayoutInflater.from(mContext).inflate(R.layout.dialog_custom_content_hashmap_viewmodel, hashMapContainer, false);
((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_key)).setText(currentKey); ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_key)).setText(currentKey);
((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_value)).setText(currentValue); ((TextView) singleMapContent.findViewById(R.id.dialog_content_hashmap_value)).setText(currentValue);
@@ -189,8 +211,6 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
} }
public boolean isPositiveVisible() { public boolean isPositiveVisible() {
return mOnPositiveClick != null || (!isNeutralVisible() && !isNegativeVisible()); return mOnPositiveClick != null || (!isNeutralVisible() && !isNegativeVisible());
} }
@@ -209,7 +229,7 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
} }
public String getNeutralButtonText() { public String getNeutralButtonText() {
return mRNeutralButtonString != null && mRNeutralButtonString != -1 ? requireContext().getText(mRNeutralButtonString).toString() : null; return mRNeutralButtonString != null && mRNeutralButtonString != -1 ? mContext.getText(mRNeutralButtonString).toString() : null;
} }
public String getNegativeButtonText() { public String getNegativeButtonText() {
@@ -231,8 +251,8 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
if (mOnNegativeClick != null) mOnNegativeClick.run(); if (mOnNegativeClick != null) mOnNegativeClick.run();
} }
public static DialogSimpleMessageView makeInfoDialog(String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) { public static DialogSimpleMessageView makeInfoDialog(Context context, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
return newInstance(TYPE.INFO, return newInstance(context, TYPE.INFO,
titleText, titleText,
messageText, messageText,
hashmapContent, hashmapContent,
@@ -241,8 +261,8 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
} }
public static DialogSimpleMessageView makeInfoDialog(String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) { public static DialogSimpleMessageView makeInfoDialog(Context context, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) {
return newInstance(TYPE.INFO, return newInstance(context, TYPE.INFO,
titleText, titleText,
messageText, messageText,
hashmapContent, hashmapContent,
@@ -251,8 +271,8 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
} }
public static DialogSimpleMessageView makeSuccessDialog(String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) { public static DialogSimpleMessageView makeSuccessDialog(Context context, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
return newInstance(TYPE.SUCCESS, return newInstance(context, TYPE.SUCCESS,
titleText, titleText,
messageText, messageText,
hashmapContent, hashmapContent,
@@ -261,8 +281,8 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
} }
public static DialogSimpleMessageView makeWarningDialog(Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) { public static DialogSimpleMessageView makeWarningDialog(Context context, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick) {
return newInstance(TYPE.WARNING, return newInstance(context, TYPE.WARNING,
UtilityResources.getString(R.string.warning), UtilityResources.getString(R.string.warning),
messageText, messageText,
hashmapContent, hashmapContent,
@@ -273,8 +293,8 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
} }
public static DialogSimpleMessageView makeWarningDialog(Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) { public static DialogSimpleMessageView makeWarningDialog(Context context, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
return newInstance(TYPE.WARNING, return newInstance(context, TYPE.WARNING,
UtilityResources.getString(R.string.warning), UtilityResources.getString(R.string.warning),
messageText, messageText,
hashmapContent, hashmapContent,
@@ -282,9 +302,9 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
null, -1, null); null, -1, null);
} }
public static DialogSimpleMessageView makeErrorDialog(Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) { public static DialogSimpleMessageView makeErrorDialog(Context context, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick) {
return newInstance(TYPE.ERROR, return newInstance(context, TYPE.ERROR,
UtilityResources.getString(R.string.ops), UtilityResources.getString(R.string.ops),
messageText, messageText,
hashmapContent, hashmapContent,
@@ -292,9 +312,9 @@ public class DialogSimpleMessageView extends BaseDialogFragment {
null, -1, null); null, -1, null);
} }
public static DialogSimpleMessageView makeErrorDialog(Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick) { public static DialogSimpleMessageView makeErrorDialog(Context context, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick) {
return newInstance(TYPE.ERROR, return newInstance(context, TYPE.ERROR,
UtilityResources.getString(R.string.ops), UtilityResources.getString(R.string.ops),
messageText, messageText,
hashmapContent, hashmapContent,

View File

@@ -193,7 +193,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:textColor="@android:color/black" android:textColor="@android:color/black"
android:text="@{Html.fromHtml(context.getString(R.string.doc_testata, view.mtbColt.getNumDoc(), view.mtbColt.getDataDoc()))}" android:text="@{Html.fromHtml(@string/doc_testata(view.mtbColt.numDoc, UtilityDate.formatDate(view.mtbColt.dataDoc, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)))}"
tools:text="n. 123 del 29/03/2023" /> tools:text="n. 123 del 29/03/2023" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -81,8 +81,7 @@
android:singleLine="true" android:singleLine="true"
android:textAppearance="?attr/textAppearanceSubtitle1" android:textAppearance="?attr/textAppearanceSubtitle1"
android:minHeight="?attr/listPreferredItemHeightSmall" android:minHeight="?attr/listPreferredItemHeightSmall"
app:binding="@{viewmodel.dataDocBindable}" />
app:parentView="@{view}" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>

View File

@@ -37,5 +37,7 @@
<item name="materialCalendarTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar</item> <item name="materialCalendarTheme">@style/ThemeOverlay.MaterialComponents.MaterialCalendar</item>
<item name="bottomSheetDialogTheme">@style/CustomBottomSheetDialog</item> <item name="bottomSheetDialogTheme">@style/CustomBottomSheetDialog</item>
<item name="android:windowActivityTransitions">true</item>
</style> </style>
</resources> </resources>