Finish v1.40.28(445)

This commit is contained in:
Marco Elefante 2024-07-22 09:09:43 +02:00
commit 6177d84131
11 changed files with 139 additions and 15 deletions

View File

@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 444
def appVersionName = '1.40.27'
def appVersionCode = 445
def appVersionName = '1.40.28'
signingConfigs {
release {

View File

@ -1,13 +1,19 @@
package it.integry.integrywmsnative.core.rest.consumers;
import androidx.annotation.NonNull;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
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.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call;
import retrofit2.Callback;
@ -59,4 +65,20 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
}
});
}
public void retrieveAllPartitaMag(List<String> codMarts, Date dataScad, RunnableArgs<List<MtbPartitaMag>> onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
service.retrieveAllPartitaMag(codMarts, UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.enqueue(new Callback<>() {
@Override
public void onResponse(@NonNull Call<ServiceRESTResponse<List<MtbPartitaMag>>> call, @NonNull Response<ServiceRESTResponse<List<MtbPartitaMag>>> response) {
analyzeAnswer(response, "retrieveAllPartitaMag", onComplete, onFailed);
}
@Override
public void onFailure(@NonNull Call<ServiceRESTResponse<List<MtbPartitaMag>>> call, @NonNull Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@ -3,14 +3,12 @@ package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
public interface MagazzinoRESTConsumerService {
@ -22,6 +20,7 @@ public interface MagazzinoRESTConsumerService {
Call<ServiceRESTResponse<MtbPartitaMag>> retrievePartitaMag(@Query("codMart") String codMart,
@Query("partitaMag") String partitaMag);
@POST("wms/partita-magazzino/retrieveAllPartitaMag")
Call<ServiceRESTResponse<List<MtbPartitaMag>>> retrieveAllPartitaMag(@Body List<String> codMarts,
@Query("dataScad") String dataScad);
}

View File

@ -82,6 +82,8 @@ public class DBSettingsModel {
private boolean flagPickingLiberoEnableScanArt = false;
private boolean flagAskDuplicateUDSSpedizione = false;
private boolean suggestDataScad = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
}
@ -684,4 +686,13 @@ public class DBSettingsModel {
this.flagAskDuplicateUDSSpedizione = flagAskDuplicateUDSSpedizione;
return this;
}
public boolean isSuggestDataScad() {
return suggestDataScad;
}
public DBSettingsModel setSuggestDataScad(boolean suggestDataScad) {
this.suggestDataScad = suggestDataScad;
return this;
}
}

View File

@ -456,6 +456,12 @@ public class SettingsManager {
.setKeySection("GENERA_DOC")
.setSetter(dbSettingsModelIstance::setFlagGeneraDocumentoSpedizione)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("SUGGEST_DATA_SCAD")
.setSetter(dbSettingsModelIstance::setSuggestDataScad)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")

View File

@ -916,7 +916,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.setCanLUBeClosed(true)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null)
.setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus());
.setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus())
.setMtbPartitaMagList(mViewmodel.getmPartitaMagList());
if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View

View File

@ -11,6 +11,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsum
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
@ -36,7 +37,8 @@ public class SpedizioneModule {
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer,
ImballiRESTConsumer imballiRESTConsumer) {
ImballiRESTConsumer imballiRESTConsumer,
MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new SpedizioneViewModel(articoloRESTConsumer,
barcodeRESTConsumer,
colliDataRecoverService,
@ -48,7 +50,8 @@ public class SpedizioneModule {
colliSpedizioneRESTConsumer,
colliLavorazioneRESTConsumer,
magazzinoAutomaticoRESTConsumer,
imballiRESTConsumer);
imballiRESTConsumer,
magazzinoRESTConsumer);
}
}

View File

@ -10,6 +10,7 @@ import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -59,6 +60,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsum
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
@ -105,6 +107,7 @@ public class SpedizioneViewModel {
private List<OrdineUscitaInevasoDTO> mTestateOrdini;
private MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
private List<MtbColt> mColliRegistrati = new ArrayList<>();
private List<MtbPartitaMag> mPartitaMagList = new ArrayList<>();
private Listener mListener;
@ -143,6 +146,7 @@ public class SpedizioneViewModel {
private final ImballiRESTConsumer mImballiRESTConsumer;
private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
private MagazzinoRESTConsumer magazzinoRESTConsumer;
@Inject
public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer,
@ -156,7 +160,8 @@ public class SpedizioneViewModel {
ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer,
ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
ImballiRESTConsumer imballiRESTConsumer) {
ImballiRESTConsumer imballiRESTConsumer,
MagazzinoRESTConsumer magazzinoRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliDataRecoverService = colliDataRecoverService;
@ -169,6 +174,7 @@ public class SpedizioneViewModel {
this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
this.mImballiRESTConsumer = imballiRESTConsumer;
this.magazzinoRESTConsumer = magazzinoRESTConsumer;
}
@ -190,21 +196,35 @@ public class SpedizioneViewModel {
if (enableGiacenza) {
mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> {
this.mPickingList.postValue(pickingObjectList);
this.sendOnLoadingEnded();
}, ex -> this.sendError(new OrdersLoadException(ex)));
} else {
getEmptyPickingList(pickingList, pickingObjectList -> {
this.mPickingList.postValue(pickingObjectList);
this.sendOnLoadingEnded();
});
}
getPartitaMagList(pickingList, mtbPartitaMagList -> {
this.mPartitaMagList = mtbPartitaMagList;
this.sendOnLoadingEnded();
});
this.mDefaultGestioneOfUL = gestioneCol;
this.mDefaultSegnoCol = segnoCol;
this.initDefaultVars();
}
private void getPartitaMagList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<MtbPartitaMag>> onComplete) {
if (SettingsManager.iDB().isSuggestDataScad()) {
List<String> codMarts = sitArtOrdList.stream()
.map(x -> x.getCodMart().trim())
.collect(Collectors.toList());
this.magazzinoRESTConsumer.retrieveAllPartitaMag(codMarts, new Date(), onComplete, this::sendError);
} else {
onComplete.run(new ArrayList<>());
}
}
private void getEmptyPickingList(List<SitArtOrdDTO> sitArtOrdList, RunnableArgs<List<PickingObjectDTO>> onComplete) {
List<String> codMarts = sitArtOrdList.stream()
@ -1982,6 +2002,10 @@ public class SpedizioneViewModel {
return mPickingList;
}
public List<MtbPartitaMag> getmPartitaMagList() {
return mPartitaMagList;
}
public ArrayList<MtbColt> getCreatedMtbColts() {
return (ArrayList<MtbColt>) this.mColliRegistrati;
}

View File

@ -2,9 +2,11 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
@ -57,6 +59,8 @@ public class DialogInputQuantityV2DTO {
private String customArtDescription;
private List<MtbPartitaMag> mtbPartitaMagList;
public MtbAart getMtbAart() {
return mtbAart;
}
@ -380,4 +384,13 @@ public class DialogInputQuantityV2DTO {
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
return this;
}
public List<MtbPartitaMag> getMtbPartitaMagList() {
return mtbPartitaMagList;
}
public DialogInputQuantityV2DTO setMtbPartitaMagList(List<MtbPartitaMag> mtbPartitaMagList) {
this.mtbPartitaMagList = mtbPartitaMagList;
return this;
}
}

View File

@ -27,6 +27,7 @@ import com.pedromassango.doubleclick.DoubleClickListener;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.Objects;
import javax.inject.Inject;
import javax.inject.Singleton;
@ -177,6 +178,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
.setDataScad(mDialogInputQuantityV2DTO.getDataScad())
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck())
.setmPartitaMagList(mDialogInputQuantityV2DTO.getMtbPartitaMagList())
.setStatoArt(mDialogInputQuantityV2DTO.getStatoPartitaMag() != null ? mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() : null);
mBindings.setView(this);
@ -301,7 +303,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> {
if (this.mEnableDataCallback) {
this.mViewModel.setPartitaMag(value);
this.mViewModel.setNewPartitaMag(value);
}
});
@ -403,7 +405,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
UtilityObservable.addPropertyChanged(this.mViewModel.blockedQtaTot, (value) -> {
toggleTextInputLayoutError(textColorsQtaTot, this.mBindings.inputQtaTotLayout, value);
if (this.mViewModel.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
if (Objects.requireNonNull(this.mViewModel.mtbAart.get()).isFlagQtaCnfFissaBoolean()) {
this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable() && !value);
} else {
if (value) {

View File

@ -4,8 +4,13 @@ import androidx.databinding.ObservableField;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.concurrent.FutureTask;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Stream;
import javax.inject.Inject;
@ -100,6 +105,8 @@ public class DialogInputQuantityV2ViewModel {
private StatoPartitaMag statoArt;
private List<MtbPartitaMag> mPartitaMagList;
@Inject
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) {
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
@ -354,6 +361,11 @@ public class DialogInputQuantityV2ViewModel {
return this;
}
public DialogInputQuantityV2ViewModel setmPartitaMagList(List<MtbPartitaMag> mPartitaMagList) {
this.mPartitaMagList = mPartitaMagList;
return this;
}
public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
return this;
@ -378,6 +390,37 @@ public class DialogInputQuantityV2ViewModel {
return this;
}
public void setNewPartitaMag(String internalPartitaMag) {
this.internalPartitaMag = internalPartitaMag;
if (mPartitaMagList != null && SettingsManager.iDB().isSuggestDataScad()){
Optional<MtbPartitaMag> partitaMag = mPartitaMagList.stream()
.filter(x -> x.getPartitaMag().equalsIgnoreCase(internalPartitaMag))
.findFirst();
if (partitaMag.isPresent()){
setNewDataScad(partitaMag.get().getDataScad());
} else {
MtbAart localMtbAart = mtbAart.get();
LocalDate dataScad = null;
if (localMtbAart != null && localMtbAart.getGgScadPartita() != null && localMtbAart.getGgScadPartita() > 0) {
dataScad = UtilityDate.getNow();
dataScad.plusDays(localMtbAart.getGgScadPartita());
}
setNewDataScad(dataScad);
}
}
this.mListener.onDataChanged();
}
public void setNewDataScad(LocalDate internalDataScad) {
this.internalDataScad = internalDataScad;
this.mListener.onDataChanged();
}
public DialogInputQuantityV2ViewModel setDataScad(LocalDate internalDataScad) {
this.internalDataScad = internalDataScad;
return this;