Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
This commit is contained in:
13
.idea/deviceManager.xml
generated
Normal file
13
.idea/deviceManager.xml
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DeviceTable">
|
||||
<option name="columnSorters">
|
||||
<list>
|
||||
<ColumnSorterState>
|
||||
<option name="column" value="Name" />
|
||||
<option name="order" value="ASCENDING" />
|
||||
</ColumnSorterState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
android {
|
||||
|
||||
def appVersionCode = 517
|
||||
def appVersionName = '1.47.04'
|
||||
def appVersionCode = 518
|
||||
def appVersionName = '1.47.05'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
|
||||
@@ -20,9 +20,9 @@ import javax.inject.Singleton;
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||
import it.integry.integrywmsnative.core.rest.handler.ManagedErrorCallback;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
@@ -89,22 +89,22 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
|
||||
});
|
||||
}
|
||||
|
||||
public List<AvailableCodMdepsDTO> getAvailableCodMdepsSynchronized() throws Exception {
|
||||
public List<MtbDepo> getAvailableCodMdepsSynchronized() throws Exception {
|
||||
SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class);
|
||||
var response = service.getAvailableCodMdeps().execute();
|
||||
return analyzeAnswer(response, "CodMdepsAvailable");
|
||||
}
|
||||
|
||||
public void getAvailableCodMdeps(final RunnableArgs<List<AvailableCodMdepsDTO>> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||
public void getAvailableCodMdeps(final RunnableArgs<List<MtbDepo>> onSuccess, RunnableArgs<Exception> onFailed) {
|
||||
SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class);
|
||||
service.getAvailableCodMdeps().enqueue(new ManagedErrorCallback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> call, Response<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> response) {
|
||||
public void onResponse(Call<ServiceRESTResponse<List<MtbDepo>>> call, Response<ServiceRESTResponse<List<MtbDepo>>> response) {
|
||||
analyzeAnswer(response, "CodMdepsAvailable", onSuccess, onFailed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> call, @NonNull final Exception e) {
|
||||
public void onFailure(Call<ServiceRESTResponse<List<MtbDepo>>> call, @NonNull final Exception e) {
|
||||
onFailed.run(e);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||
@@ -25,7 +25,7 @@ public interface SystemRESTConsumerService {
|
||||
Call<ServiceRESTResponse<List<String>>> getAvailableProfiles(@Query("username") String username, @Query("password") String password);
|
||||
|
||||
@GET("getAvailableCodMdepsForUser")
|
||||
Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> getAvailableCodMdeps();
|
||||
Call<ServiceRESTResponse<List<MtbDepo>>> getAvailableCodMdeps();
|
||||
|
||||
@POST("sendEmail")
|
||||
Call<ServiceRESTResponse<Void>> sendMail(@Body MailRequestDTO mailDto);
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
package it.integry.integrywmsnative.core.rest.model;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
public class AvailableCodMdepsDTO {
|
||||
|
||||
@SerializedName("codMdep")
|
||||
private String codMdep;
|
||||
|
||||
@SerializedName("descrizione")
|
||||
private String descrizione;
|
||||
|
||||
public String getCodMdep() {
|
||||
return codMdep;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if((obj) != null) {
|
||||
return ((AvailableCodMdepsDTO) obj).codMdep.equalsIgnoreCase(codMdep);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -7,15 +7,15 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.Azienda;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
|
||||
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
|
||||
public class DBSettingsModel {
|
||||
|
||||
private List<String> availableProfiles = null;
|
||||
private List<AvailableCodMdepsDTO> availableDepos = null;
|
||||
private List<MtbDepo> availableDepos = null;
|
||||
private List<MtbDepoPosizione> availablePosizioni = null;
|
||||
|
||||
private Azienda datiAzienda = null;
|
||||
@@ -154,11 +154,11 @@ public class DBSettingsModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<AvailableCodMdepsDTO> getAvailableDepos() {
|
||||
public List<MtbDepo> getAvailableDepos() {
|
||||
return availableDepos;
|
||||
}
|
||||
|
||||
public void setAvailableDepos(List<AvailableCodMdepsDTO> availableDepos) {
|
||||
public void setAvailableDepos(List<MtbDepo> availableDepos) {
|
||||
this.availableDepos = availableDepos;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import javax.inject.Singleton;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.model.MtbTCol;
|
||||
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
|
||||
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
|
||||
@@ -26,7 +27,6 @@ import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityFirebase;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
@@ -185,7 +185,7 @@ public class SettingsManager {
|
||||
boolean codMdepExistsAnymore = false;
|
||||
|
||||
if (settingsModelIstance.getUserSession().getDepo() != null) {
|
||||
for (AvailableCodMdepsDTO availableCodMdepDTO : availableCodMdeps) {
|
||||
for (MtbDepo availableCodMdepDTO : availableCodMdeps) {
|
||||
//Controllo se il codMdep salvato esiste ancora
|
||||
if (availableCodMdepDTO.getCodMdep().equalsIgnoreCase(settingsModelIstance.getUserSession().getDepo().getCodMdep())) {
|
||||
codMdepExistsAnymore = true;
|
||||
|
||||
@@ -2,7 +2,7 @@ package it.integry.integrywmsnative.core.settings;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
|
||||
public class SettingsModel {
|
||||
|
||||
@@ -85,7 +85,7 @@ public class SettingsModel {
|
||||
private LocalDateTime refreshTokenExpiryDate;
|
||||
private String deviceId;
|
||||
private String profileDB;
|
||||
private AvailableCodMdepsDTO depo;
|
||||
private MtbDepo depo;
|
||||
private Integer defaultOrdinamentoPickingAccettazione = 0;
|
||||
private Integer defaultOrdinamentoPickingAccettazioneBolle = 0;
|
||||
|
||||
@@ -134,11 +134,11 @@ public class SettingsModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public AvailableCodMdepsDTO getDepo() {
|
||||
public MtbDepo getDepo() {
|
||||
return depo;
|
||||
}
|
||||
|
||||
public UserSession setDepo(AvailableCodMdepsDTO depo) {
|
||||
public UserSession setDepo(MtbDepo depo) {
|
||||
this.depo = depo;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -807,7 +807,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
|
||||
if (!mDialogInputQuantityV2View.isVisible())
|
||||
mDialogInputQuantityV2View
|
||||
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO).setOnComplete(resultDTO -> {
|
||||
if (resultDTO == null) {
|
||||
if (resultDTO == null || resultDTO.isAborted()) {
|
||||
this.mViewModel.resetMatchedRows();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -36,11 +36,11 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.menu.MenuService;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO;
|
||||
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
@@ -427,7 +427,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
.show(getParentFragmentManager(), "switch-user-depo");
|
||||
}
|
||||
|
||||
private void onUserDepoChanged(AvailableCodMdepsDTO newDepo) {
|
||||
private void onUserDepoChanged(MtbDepo newDepo) {
|
||||
SettingsManager.i().getUserSession().setDepo(newDepo);
|
||||
initSessionData();
|
||||
}
|
||||
|
||||
@@ -71,7 +71,8 @@ public class OrdiniUscitaElencoDTO extends OrdineUscitaInevasoDTO {
|
||||
// Copia anche i campi della super-superclasse se necessario (OrdineInevasoDTO)
|
||||
dto.setDataOrd(that.getDataOrd())
|
||||
.setNumOrd(that.getNumOrd())
|
||||
.setGestione(that.getGestione());
|
||||
.setGestione(that.getGestione())
|
||||
.setCodMdep(that.getCodMdep());
|
||||
return dto;
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,6 @@ import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.JtbComt;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.model.MtbGrup;
|
||||
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUlDTO;
|
||||
@@ -113,7 +112,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
||||
|
||||
private int mBarcodeScannerInstanceID = -1;
|
||||
|
||||
private List<MtbDepo> mtbDepoCache;
|
||||
// private List<MtbDepo> mtbDepoCache;
|
||||
private List<MtbGrup> mtbGrupCache;
|
||||
private List<JtbComt> jtbComtCache;
|
||||
|
||||
@@ -185,7 +184,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
||||
try {
|
||||
this.onLoadingStarted();
|
||||
|
||||
this.initMtbDepoCache();
|
||||
this.initMtbGrupsCache();
|
||||
this.initJtbComtCache();
|
||||
|
||||
@@ -393,6 +391,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
||||
|
||||
FilterChipView filterChipView = new FilterChipView(requireActivity(), filterChipDTO.getFilterChipText())
|
||||
.setOnClicked(v -> initBottomSheetDialogFilter(filterChipDTO));
|
||||
filterChipDTO.setFilterChipView(filterChipView);
|
||||
|
||||
switch (filterChipDTO.getID()) {
|
||||
case OrdiniUscitaElencoFilterBindings.DEPOSITO_FILTER_ID -> {
|
||||
@@ -610,14 +609,16 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
||||
.toList());
|
||||
case OrdiniUscitaElencoFilterBindings.DEPOSITO_FILTER_ID ->
|
||||
((FilterDepositoLayoutView) filterLayoutView)
|
||||
.setAllCodMdeps(mAppliedFilterViewModel.getAllCodMdeps(mtbDepoCache))
|
||||
.setAvailableCodMdeps(mAppliedFilterViewModel.getAvailableCodMdeps(mtbDepoCache))
|
||||
.setAllCodMdeps(mAppliedFilterViewModel.getAllCodMdeps())
|
||||
.setAvailableCodMdeps(mAppliedFilterViewModel.getAvailableCodMdeps())
|
||||
.setOnFilterApplied(mAppliedFilterViewModel::setDepositoFilter)
|
||||
.setPreSelectedCodMdeps(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
|
||||
.filter(mAppliedFilterViewModel.getCurrentDepositoPredicate().get() == null ?
|
||||
x -> false :
|
||||
mAppliedFilterViewModel.getCurrentDepositoPredicate().get())
|
||||
.map(x -> Stream.of(mtbDepoCache).filter(y -> x.getCodMdep().equalsIgnoreCase(y.getCodMdep())).findFirst().get())
|
||||
.map(x -> SettingsManager.iDB().getAvailableDepos().stream()
|
||||
.filter(y -> x.getCodMdep().equalsIgnoreCase(y.getCodMdep()))
|
||||
.findFirst().get())
|
||||
.toList());
|
||||
case OrdiniUscitaElencoFilterBindings.VIAGGIO_FILTER_ID ->
|
||||
((FilterViaggioLayoutView) filterLayoutView)
|
||||
@@ -737,68 +738,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
||||
}
|
||||
|
||||
private void refreshList(List<OrdiniUscitaElencoDTO> originalData, List<OrdiniUscitaElencoDTO> filteredList) {
|
||||
// List<OrdiniUscitaElencoDTO> tmpList;
|
||||
|
||||
// if (filteredList != null) {
|
||||
// tmpList = filteredList;
|
||||
// } else if (mAppliedFilterViewModel != null) {
|
||||
// mAppliedFilterViewModel.applyAllTests();
|
||||
// tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
|
||||
// } else {
|
||||
// tmpList = originalData;
|
||||
// }
|
||||
|
||||
// var list = convertDataModelToListModel(tmpList);
|
||||
|
||||
// this.mOrdiniInevasiMutableData.getValue().clear();
|
||||
// this.mOrdiniInevasiMutableData.getValue().addAll(list);
|
||||
|
||||
// fabVisible.set(tmpList.stream()
|
||||
// .anyMatch(OrdiniUscitaElencoDTO::isSelected));
|
||||
}
|
||||
|
||||
// private List<OrdiniUscitaElencoListModel> convertDataModelToListModel(List<OrdiniUscitaElencoDTO> dataList) {
|
||||
//
|
||||
// ComparatorCompat<OrdiniUscitaElencoDTO> comparator = ComparatorCompat
|
||||
// .comparing(OrdiniUscitaElencoDTO::getRagSocOrd)
|
||||
// .thenComparing(ComparatorCompat.comparing(x -> x.getDestinatario() != null ? x.getDestinatario() : "zzzzzzzzz"))
|
||||
// .thenComparing(ComparatorCompat.comparing(OrdiniUscitaElencoDTO::getNumOrd));
|
||||
//
|
||||
// List<OrdiniUscitaElencoListModel> notHiddenElements = dataList.stream()
|
||||
// .filter(x -> !x.isHidden())
|
||||
// .sorted(comparator)
|
||||
// .map(x -> {
|
||||
// OrdiniUscitaElencoListModel listModel = new OrdiniUscitaElencoListModel();
|
||||
//
|
||||
// if (x.isFlagEvaso()) {
|
||||
// listModel.setEtichettaColor(ResourcesCompat.getColor(getResources(), R.color.mainGreen, null));
|
||||
// } else if (x.isExistColloBoolean()) {
|
||||
// listModel.setEtichettaColor(ResourcesCompat.getColor(getResources(), R.color.colorPrimary, null));
|
||||
// } else {
|
||||
// listModel.setEtichettaColor(ResourcesCompat.getColor(getResources(), android.R.color.transparent, null));
|
||||
// }
|
||||
//
|
||||
// listModel.setGroupTitle(x.getRagSocOrd());
|
||||
//
|
||||
// String testataOrdString = String.format(getString(R.string.ord_ven_testata), String.valueOf(x.getNumOrd()), UtilityDate.formatDate(x.getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
// listModel.setDescription(testataOrdString);
|
||||
//
|
||||
// listModel.setSubDescription(x.getRifOrd());
|
||||
//
|
||||
// if (x.getDataCons() != null) {
|
||||
// String testataDataConsString = String.format(getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(x.getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
// listModel.setRightDescription(testataDataConsString);
|
||||
// }
|
||||
//
|
||||
// listModel.setOriginalModel(x);
|
||||
//
|
||||
// return listModel;
|
||||
// })
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// return notHiddenElements;
|
||||
// }
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
|
||||
@@ -889,12 +830,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
||||
}
|
||||
|
||||
|
||||
private void initMtbDepoCache() throws Exception {
|
||||
var mtbDepos = this.mDepositoRESTConsumer.getAllSynchronized();
|
||||
this.mtbDepoCache = mtbDepos;
|
||||
}
|
||||
|
||||
|
||||
private void initMtbGrupsCache() throws Exception {
|
||||
var codMgrpArts = Objects.requireNonNull(this.mViewModel.getOrderList().getValue()).parallelStream()
|
||||
.filter(x -> x.getAvailableClassMerc() != null && !x.getAvailableClassMerc().isEmpty())
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
@@ -10,6 +12,7 @@ import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -18,8 +21,11 @@ import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.model.MtbGrup;
|
||||
import it.integry.integrywmsnative.core.model.OrdineInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
|
||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFilterBindings;
|
||||
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||
|
||||
public class OrdiniUscitaElencoFiltroViewModel {
|
||||
|
||||
@@ -45,6 +51,30 @@ public class OrdiniUscitaElencoFiltroViewModel {
|
||||
public void init(List<OrdiniUscitaElencoDTO> initialList) {
|
||||
this.initialOrderList = initialList;
|
||||
applyAllTests();
|
||||
|
||||
refreshChipVisibility();
|
||||
}
|
||||
|
||||
private void refreshChipVisibility() {
|
||||
for (Map.Entry<Integer, FilterChipDTO> filter : OrdiniUscitaElencoFilterBindings.AVAILABLE_FILTERS.entrySet()) {
|
||||
var filterChip = filter.getValue();
|
||||
|
||||
var filterDataList = switch (filterChip.getID()) {
|
||||
case OrdiniUscitaElencoFilterBindings.DEPOSITO_FILTER_ID -> getAllCodMdeps();
|
||||
case OrdiniUscitaElencoFilterBindings.NUM_ORD_FILTER_ID -> getAllNumOrds();
|
||||
case OrdiniUscitaElencoFilterBindings.CLIENTE_FILTER_ID -> getAllClienti();
|
||||
case OrdiniUscitaElencoFilterBindings.VIAGGIO_FILTER_ID -> getAllIDViaggio();
|
||||
case OrdiniUscitaElencoFilterBindings.VETTORE_FILTER_ID -> getAllVettori();
|
||||
case OrdiniUscitaElencoFilterBindings.TERM_CONS_FILTER_ID -> getAllTermCons();
|
||||
case OrdiniUscitaElencoFilterBindings.AUTOMEZZO_FILTER_ID -> getAllAutomezzi();
|
||||
case OrdiniUscitaElencoFilterBindings.AGENTE_FILTER_ID -> getAllAgenti();
|
||||
case OrdiniUscitaElencoFilterBindings.PAESE_FILTER_ID -> getAllPaesi();
|
||||
default -> null;
|
||||
};
|
||||
|
||||
if(filterDataList != null)
|
||||
filterChip.getFilterChipView().setVisibility(filterDataList.isEmpty() || filterDataList.size() == 1 ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
public MutableLiveData<List<OrdiniUscitaElencoDTO>> getMutableFilteredOrderList() {
|
||||
@@ -243,21 +273,23 @@ public class OrdiniUscitaElencoFiltroViewModel {
|
||||
return currentCommessaPredicate;
|
||||
}
|
||||
|
||||
public List<MtbDepo> getAllCodMdeps(List<MtbDepo> mtbDepoFullList) {
|
||||
List<String> codMdeps = Stream.of(initialOrderList)
|
||||
public List<MtbDepo> getAllCodMdeps() {
|
||||
List<MtbDepo> availableDepos = SettingsManager.iDB().getAvailableDepos();
|
||||
|
||||
List<String> codMdeps = initialOrderList.stream()
|
||||
.map(OrdineInevasoDTO::getCodMdep)
|
||||
.distinct()
|
||||
.toList();
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return Stream.of(Objects.requireNonNull(mtbDepoFullList))
|
||||
return Objects.requireNonNull(availableDepos).stream()
|
||||
.filter(x -> codMdeps.contains(x.getCodMdep()))
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.sortBy(MtbDepo::getCodMdep)
|
||||
.toList();
|
||||
.sorted((x1, x2) -> x1.getCodMdep().compareToIgnoreCase(x2.getCodMdep()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<MtbDepo> getAvailableCodMdeps(List<MtbDepo> mtbDepoFullList) {
|
||||
public List<MtbDepo> getAvailableCodMdeps() {
|
||||
|
||||
if (currentNumOrdsPredicate.get() == null &&
|
||||
currentClientePredicate.get() == null &&
|
||||
@@ -271,9 +303,9 @@ public class OrdiniUscitaElencoFiltroViewModel {
|
||||
currentGruppoMercPredicate.get() == null &&
|
||||
currentCommessaPredicate.get() == null
|
||||
) {
|
||||
return getAllCodMdeps(mtbDepoFullList);
|
||||
return getAllCodMdeps();
|
||||
} else {
|
||||
List<String> availableCodMdeps = Stream.of(this.initialOrderList)
|
||||
List<String> availableCodMdeps = this.initialOrderList.stream()
|
||||
.filter(x ->
|
||||
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
|
||||
(currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
|
||||
@@ -289,14 +321,14 @@ public class OrdiniUscitaElencoFiltroViewModel {
|
||||
)
|
||||
.map(OrdineInevasoDTO::getCodMdep)
|
||||
.distinct()
|
||||
.toList();
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return Stream.of(Objects.requireNonNull(mtbDepoFullList))
|
||||
List<MtbDepo> availableDepos = SettingsManager.iDB().getAvailableDepos();
|
||||
return Objects.requireNonNull(availableDepos).stream()
|
||||
.filter(x -> availableCodMdeps.contains(x.getCodMdep()))
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.sortBy(MtbDepo::getCodMdep)
|
||||
.toList();
|
||||
.sorted((x1, x2) -> x1.getCodMdep().compareToIgnoreCase(x2.getCodMdep()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,11 @@ package it.integry.integrywmsnative.gest.trasferimento_pedane;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.SpannableString;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.PopupMenu;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -17,7 +19,9 @@ import com.ravikoradiya.liveadapter.BR;
|
||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||
import com.ravikoradiya.liveadapter.Type;
|
||||
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -28,11 +32,13 @@ import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedane
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.secondary.TrasferimentoPedaneStatusEnum;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.databinding.FragmentTrasferimentoPedaneBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentTrasferimentoPedaneListItemBinding;
|
||||
import it.integry.integrywmsnative.gest.trasferimento_pedane.edit.TrasferimentoPedaneEditActivity;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_info_trasferimento.DialogAskInfoTrasferimentoView;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import kotlin.Unit;
|
||||
|
||||
public class TrasferimentoPedaneFragment extends BaseFragment implements ITitledFragment, IScrollableFragment {
|
||||
@@ -96,6 +102,14 @@ public class TrasferimentoPedaneFragment extends BaseFragment implements ITitled
|
||||
openTrasferimentoPedaneEditActivity(holder.getBinding().getItem().getId());
|
||||
return null;
|
||||
});
|
||||
item.onLongClick(holder -> {
|
||||
var trasferimento = holder.getBinding().getItem();
|
||||
|
||||
if (trasferimento != null && trasferimento.getStatusEnum() == TrasferimentoPedaneStatusEnum.APERTO) {
|
||||
showRowContextMenu(holder.getBinding().getRoot(), trasferimento);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
|
||||
new LiveAdapter(data, this)
|
||||
.map(TrasferimentoPedaneEntity.class, item)
|
||||
@@ -106,6 +120,62 @@ public class TrasferimentoPedaneFragment extends BaseFragment implements ITitled
|
||||
.into(mBindings.trasferimentoPedaneRecyclerView);
|
||||
}
|
||||
|
||||
private void showRowContextMenu(View view, TrasferimentoPedaneEntity trasferimento) {
|
||||
var ulRowContextMenu = new PopupMenu(requireContext(), view);
|
||||
ulRowContextMenu.inflate(R.menu.edit_delete_menu);
|
||||
|
||||
ulRowContextMenu.getMenu().removeItem(R.id.edit);
|
||||
|
||||
ulRowContextMenu.setOnMenuItemClickListener(item -> {
|
||||
if (item.getItemId() == R.id.delete) {
|
||||
executorService.execute(() -> {
|
||||
try {
|
||||
if (askDeleteConfirm())
|
||||
this.mViewModel.delete(trasferimento);
|
||||
} catch (Exception e) {
|
||||
onError(e);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
ulRowContextMenu.show();
|
||||
}
|
||||
|
||||
private boolean askDeleteConfirm() {
|
||||
AtomicBoolean result = new AtomicBoolean(false);
|
||||
CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||
|
||||
handler.post(() -> {
|
||||
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||
DialogSimpleMessageView.makeWarningDialog(requireContext(),
|
||||
new SpannableString(text),
|
||||
null,
|
||||
() -> {
|
||||
result.set(true);
|
||||
countDownLatch.countDown();
|
||||
},
|
||||
() -> {
|
||||
result.set(false);
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
)
|
||||
.show();
|
||||
});
|
||||
|
||||
|
||||
try {
|
||||
countDownLatch.await();
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
return false;
|
||||
}
|
||||
|
||||
return result.get();
|
||||
}
|
||||
|
||||
public LiveData<Boolean> canOpenNewTransfer() {
|
||||
return Transformations.map(mViewModel.isAnyOpenedTrasferimentoLive(), anyOpened -> !anyOpened);
|
||||
}
|
||||
|
||||
@@ -49,4 +49,15 @@ public class TrasferimentoPedaneViewModel {
|
||||
public long startNewTransfer(String codMdep, String descrizioneDepo) {
|
||||
return this.trasferimentoPedaneRepository.insert(codMdep, descrizioneDepo);
|
||||
}
|
||||
|
||||
public void delete(TrasferimentoPedaneEntity trasferimento) throws Exception {
|
||||
if(trasferimento == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(trasferimento.getStatusEnum() != TrasferimentoPedaneStatusEnum.APERTO)
|
||||
throw new IllegalStateException("Non è possibile eliminare un trasferimento che non è aperto");
|
||||
|
||||
this.trasferimentoPedaneRepository.deleteSynchronized(trasferimento);
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,7 @@ import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.sound.SoundAlertService;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.ActivityTraferimentoPedaneEditBinding;
|
||||
import it.integry.integrywmsnative.databinding.ActivityTrasferimentoPedaneRowListItemBinding;
|
||||
@@ -54,6 +55,9 @@ public class TrasferimentoPedaneEditActivity extends BaseActivity implements Tra
|
||||
@Inject
|
||||
PrinterRESTConsumer printerRESTConsumer;
|
||||
|
||||
@Inject
|
||||
SoundAlertService soundAlertService;
|
||||
|
||||
private ActivityTraferimentoPedaneEditBinding mBindings;
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
@@ -180,8 +184,10 @@ public class TrasferimentoPedaneEditActivity extends BaseActivity implements Tra
|
||||
executorService.execute(() -> {
|
||||
try {
|
||||
this.mViewModel.processBarcodeDTO(data);
|
||||
soundAlertService.success();
|
||||
this.onLoadingEnded();
|
||||
} catch (Exception e) {
|
||||
soundAlertService.warning();
|
||||
this.onError(e);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -6,6 +6,7 @@ public class FilterChipDTO {
|
||||
private int posizione;
|
||||
private String filterChipText;
|
||||
private FilterLayoutView filterLayoutView;
|
||||
private FilterChipView filterChipView;
|
||||
|
||||
public int getID() {
|
||||
return ID;
|
||||
@@ -42,4 +43,12 @@ public class FilterChipDTO {
|
||||
this.posizione = posizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public FilterChipView getFilterChipView() {
|
||||
return filterChipView;
|
||||
}
|
||||
|
||||
public void setFilterChipView(FilterChipView filterChipView) {
|
||||
this.filterChipView = filterChipView;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,8 @@ import androidx.lifecycle.MutableLiveData;
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.exception.InvalidCodMdepBarcodeException;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
@@ -47,12 +47,12 @@ public class DialogAskDepositoViewModel {
|
||||
throw new InvalidCodMdepBarcodeException(barcodeScanDTO.getStringValue());
|
||||
}
|
||||
|
||||
AvailableCodMdepsDTO availableCodMdepsDTO = SettingsManager.iDB().getAvailableDepos().stream()
|
||||
MtbDepo availableDepo = SettingsManager.iDB().getAvailableDepos().stream()
|
||||
.filter(x -> x.getCodMdep().equalsIgnoreCase(ean128Model.Internal4))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
|
||||
if (availableCodMdepsDTO == null) {
|
||||
if (availableDepo == null) {
|
||||
throw new InvalidCodMdepBarcodeException(ean128Model.Internal4);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.di.TextWatcherAdapter;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseMaterialAlertDialogBuilder;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.databinding.DialogAskInfoTrasferimentoBinding;
|
||||
import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteTwoLinesDropdownAdapter;
|
||||
import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteTwoLinesDropdownListModel;
|
||||
@@ -34,18 +34,18 @@ public class DialogAskInfoTrasferimentoView extends BaseMaterialAlertDialogBuild
|
||||
private Context mContext;
|
||||
private RunnableArgs<Result> onResult;
|
||||
|
||||
private List<AvailableCodMdepsDTO> availableDepoList;
|
||||
private AvailableCodMdepsDTO selectedDepo;
|
||||
private List<MtbDepo> availableDepoList;
|
||||
private MtbDepo selectedDepo;
|
||||
|
||||
//Pass here all external parameters
|
||||
public static DialogAskInfoTrasferimentoView newInstance(@NonNull Context context,
|
||||
@NonNull List<AvailableCodMdepsDTO> availableDepoList,
|
||||
@NonNull List<MtbDepo> availableDepoList,
|
||||
@NonNull RunnableArgs<Result> onResult) {
|
||||
return new DialogAskInfoTrasferimentoView(context, availableDepoList, onResult);
|
||||
}
|
||||
|
||||
private DialogAskInfoTrasferimentoView(@NonNull Context context,
|
||||
@NonNull List<AvailableCodMdepsDTO> availableDepoList,
|
||||
@NonNull List<MtbDepo> availableDepoList,
|
||||
@NonNull RunnableArgs<Result> onResult) {
|
||||
super(context);
|
||||
this.mContext = context;
|
||||
@@ -108,7 +108,7 @@ public class DialogAskInfoTrasferimentoView extends BaseMaterialAlertDialogBuild
|
||||
|
||||
private void initDepoAdapter() {
|
||||
var listModel = availableDepoList.stream()
|
||||
.map(x -> new SimpleAutoCompleteTwoLinesDropdownListModel<AvailableCodMdepsDTO>()
|
||||
.map(x -> new SimpleAutoCompleteTwoLinesDropdownListModel<MtbDepo>()
|
||||
.setTitle(x.getCodMdep())
|
||||
.setDescription(x.getDescrizione())
|
||||
.setOriginalModel(x))
|
||||
|
||||
@@ -23,7 +23,7 @@ import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinder;
|
||||
import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinderBase;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||
import it.integry.integrywmsnative.databinding.DialogSwitchUserDepoBinding;
|
||||
|
||||
public class DialogSwitchUserDepoView extends BaseDialogFragment {
|
||||
@@ -34,15 +34,15 @@ public class DialogSwitchUserDepoView extends BaseDialogFragment {
|
||||
private DialogSwitchUserDepoBinding mBindings;
|
||||
private Context mContext;
|
||||
|
||||
private final List<AvailableCodMdepsDTO> availableCodMdeps;
|
||||
private final RunnableArgs<AvailableCodMdepsDTO> onComplete;
|
||||
private final List<MtbDepo> availableCodMdeps;
|
||||
private final RunnableArgs<MtbDepo> onComplete;
|
||||
|
||||
//Pass here all external parameters
|
||||
public static DialogSwitchUserDepoView newInstance(List<AvailableCodMdepsDTO> availableCodMdeps, RunnableArgs<AvailableCodMdepsDTO> onComplete) {
|
||||
public static DialogSwitchUserDepoView newInstance(List<MtbDepo> availableCodMdeps, RunnableArgs<MtbDepo> onComplete) {
|
||||
return new DialogSwitchUserDepoView(availableCodMdeps, onComplete);
|
||||
}
|
||||
|
||||
private DialogSwitchUserDepoView(List<AvailableCodMdepsDTO> availableCodMdeps, RunnableArgs<AvailableCodMdepsDTO> onComplete) {
|
||||
private DialogSwitchUserDepoView(List<MtbDepo> availableCodMdeps, RunnableArgs<MtbDepo> onComplete) {
|
||||
super();
|
||||
|
||||
this.availableCodMdeps = availableCodMdeps;
|
||||
@@ -80,9 +80,9 @@ public class DialogSwitchUserDepoView extends BaseDialogFragment {
|
||||
public void onInit(DialogInterface dialogInterface) {
|
||||
super.onInit(dialogInterface);
|
||||
|
||||
ItemBinder<AvailableCodMdepsDTO> itemBinder = new ItemBinderBase<>(BR.item, R.layout.dialog_switch_user_depo__list_item);
|
||||
ItemBinder<MtbDepo> itemBinder = new ItemBinderBase<>(BR.item, R.layout.dialog_switch_user_depo__list_item);
|
||||
|
||||
BindingRecyclerViewAdapter<AvailableCodMdepsDTO> adapter = new BindingRecyclerViewAdapter<>(itemBinder, availableCodMdeps);
|
||||
BindingRecyclerViewAdapter<MtbDepo> adapter = new BindingRecyclerViewAdapter<>(itemBinder, availableCodMdeps);
|
||||
adapter.setClickHandler(data -> {
|
||||
onComplete.run(data);
|
||||
dismiss();
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<data>
|
||||
<variable
|
||||
name="item"
|
||||
type="it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO" />
|
||||
type="it.integry.integrywmsnative.core.model.MtbDepo" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
||||
Reference in New Issue
Block a user