Finish v1_10_6(109)
This commit is contained in:
commit
15332ee349
@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
android {
|
||||
|
||||
def appVersionCode = 108
|
||||
def appVersionName = '1.10.5'
|
||||
def appVersionCode = 109
|
||||
def appVersionName = '1.10.6'
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
|
||||
@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.data_recover;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.android.gms.common.util.IOUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
@ -16,6 +18,7 @@ import java.io.InputStream;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
@ -24,12 +27,22 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
public class ColliDataRecover {
|
||||
|
||||
private static class RecoverDTO {
|
||||
private int id;
|
||||
private int numCollo;
|
||||
private String serCollo;
|
||||
private String dataCollo;
|
||||
private String gestioneCollo;
|
||||
private String filtro;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public RecoverDTO setId(int id) {
|
||||
this.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getNumCollo() {
|
||||
return numCollo;
|
||||
}
|
||||
@ -92,26 +105,12 @@ public class ColliDataRecover {
|
||||
return mtbColtsSessions.size() > 0;
|
||||
}
|
||||
|
||||
public static Integer getFirstSessionID() {
|
||||
|
||||
if(thereIsAnExistantSession()){
|
||||
return 0;
|
||||
|
||||
|
||||
} else return null;
|
||||
|
||||
}
|
||||
|
||||
public static List<Integer> getAllSessionIDs() {
|
||||
if(thereIsAnExistantSession()) {
|
||||
|
||||
List<Integer> sessionIDs = new ArrayList<>();
|
||||
|
||||
for(int i = 0; i < mtbColtsSessions.size(); i++){
|
||||
sessionIDs.add(i);
|
||||
}
|
||||
|
||||
return sessionIDs;
|
||||
return Stream.of(mtbColtsSessions)
|
||||
.map(RecoverDTO::getId)
|
||||
.toList();
|
||||
|
||||
} else return null;
|
||||
}
|
||||
@ -120,7 +119,7 @@ public class ColliDataRecover {
|
||||
|
||||
if(sessionID == null) return null;
|
||||
|
||||
RecoverDTO dto = mtbColtsSessions.get(sessionID);
|
||||
RecoverDTO dto = getIfExists(sessionID);
|
||||
|
||||
return new MtbColt()
|
||||
.setNumCollo(dto.getNumCollo())
|
||||
@ -130,9 +129,27 @@ public class ColliDataRecover {
|
||||
.setFiltroOrdini(dto.getFiltro());
|
||||
}
|
||||
|
||||
private static RecoverDTO getIfExists(int id) {
|
||||
Optional<RecoverDTO> recoverDTOOptional = Stream.of(mtbColtsSessions)
|
||||
.filter(x -> x.getId() == id)
|
||||
.findSingle();
|
||||
|
||||
|
||||
return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null;
|
||||
}
|
||||
|
||||
public static int startNewSession(MtbColt mtbColtSession) {
|
||||
Integer newId = null;
|
||||
|
||||
while(newId == null) {
|
||||
int randomId = new Random().nextInt(1000);
|
||||
RecoverDTO dto = getIfExists(randomId);
|
||||
if(dto == null) newId = randomId;
|
||||
}
|
||||
|
||||
|
||||
RecoverDTO recoverDTO = new RecoverDTO()
|
||||
.setId(newId)
|
||||
.setDataCollo(mtbColtSession.getDataColloS())
|
||||
.setNumCollo(mtbColtSession.getNumCollo())
|
||||
.setSerCollo(mtbColtSession.getSerCollo())
|
||||
@ -141,13 +158,17 @@ public class ColliDataRecover {
|
||||
|
||||
mtbColtsSessions.add(recoverDTO);
|
||||
updateLocalFile();
|
||||
return mtbColtsSessions.indexOf(recoverDTO);
|
||||
return newId;
|
||||
}
|
||||
|
||||
public static void closeSession(int ID) {
|
||||
mtbColtsSessions.remove(ID);
|
||||
RecoverDTO dto = getIfExists(ID);
|
||||
|
||||
if(dto != null) {
|
||||
mtbColtsSessions.remove(dto);
|
||||
updateLocalFile();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void loadLocalFile() {
|
||||
|
||||
@ -52,6 +52,7 @@ public class MtbColt extends EntityBase {
|
||||
private Integer numDoc;
|
||||
private Integer numDocProvv;
|
||||
private BigDecimal pesoKg;
|
||||
private BigDecimal pesoNettoKg;
|
||||
private BigDecimal lunghezzaCm;
|
||||
private BigDecimal larghezzaCm;
|
||||
private BigDecimal altezzaCm;
|
||||
@ -427,6 +428,15 @@ public class MtbColt extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getPesoNettoKg() {
|
||||
return pesoNettoKg;
|
||||
}
|
||||
|
||||
public MtbColt setPesoNettoKg(BigDecimal pesoNettoKg) {
|
||||
this.pesoNettoKg = pesoNettoKg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getLunghezzaCm() {
|
||||
return lunghezzaCm;
|
||||
}
|
||||
|
||||
@ -36,4 +36,24 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void getTipiCollo(RunnableArgs<List<MtbTCol>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
String baseSql = "SELECT * " +
|
||||
"FROM mtb_tcol ";
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<MtbTCol>>() {}.getType();
|
||||
SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbTCol>>() {
|
||||
@Override
|
||||
public void onSuccess(List<MtbTCol> values) {
|
||||
if(onComplete != null) {
|
||||
onComplete.run(values);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ public class DBSettingsModel {
|
||||
private boolean flagCanAutoOpenNewULAccettazione;
|
||||
private boolean flagCanAddExtraQuantitySpedizione;
|
||||
private boolean flagEnableCheckDepositoSpedizione;
|
||||
private boolean flagForceAllToColli;
|
||||
|
||||
public List<String> getAvailableProfiles() {
|
||||
return availableProfiles;
|
||||
@ -150,4 +151,13 @@ public class DBSettingsModel {
|
||||
this.flagEnableCheckDepositoSpedizione = flagEnableCheckDepositoSpedizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagForceAllToColli() {
|
||||
return flagForceAllToColli;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagForceAllToColli(boolean flagForceAllToColli) {
|
||||
this.flagForceAllToColli = flagForceAllToColli;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@ -218,6 +218,10 @@ public class SettingsManager {
|
||||
.setGestName("PICKING")
|
||||
.setSection("SPEDIZIONE")
|
||||
.setKeySection("ENABLE_CHECK_DEPOSITO"));
|
||||
stbGestSetupList.add(new StbGestSetup()
|
||||
.setGestName("PICKING")
|
||||
.setSection("SETUP")
|
||||
.setKeySection("FLAG_FORCE_ALL_TO_COLLI"));
|
||||
|
||||
|
||||
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
|
||||
@ -231,6 +235,7 @@ public class SettingsManager {
|
||||
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagEnableCheckDepositoSpedizione(getValueFromList(list, "ENABLE_CHECK_DEPOSITO", Boolean.class));
|
||||
dbSettingsModelIstance.setFlagForceAllToColli(getValueFromList(list, "FLAG_FORCE_ALL_TO_COLLI", Boolean.class));
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, onFailed);
|
||||
|
||||
@ -50,7 +50,7 @@ public class UtilityBarcode {
|
||||
}
|
||||
|
||||
public static boolean isEanPeso(BarcodeScanDTO barcodeScanDTO) {
|
||||
return isEan13(barcodeScanDTO) && barcodeScanDTO.getStringValue().startsWith("2");
|
||||
return (isEtichetta128(barcodeScanDTO) || isEan13(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("2");
|
||||
}
|
||||
|
||||
public static boolean isEan13(BarcodeScanDTO barcodeScanDTO) {
|
||||
|
||||
@ -155,8 +155,9 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
cyclicRecover(sessionsIterator, onComplete, onFailed);
|
||||
}, ex -> {
|
||||
|
||||
if(ex.getMessage().contains("Dati collo non corretti")) {
|
||||
if(ex.getMessage().contains("Dati collo non corretti") || (ex.getMessage().contains("Il collo numero") && ex.getMessage().contains("non esiste"))) {
|
||||
ColliDataRecover.closeSession(recoveredMtbColtID);
|
||||
onFailed.run(ex);
|
||||
} else {
|
||||
onFailed.run(ex);
|
||||
}
|
||||
|
||||
@ -5,19 +5,29 @@ import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbTCol;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityToReturnBinding;
|
||||
|
||||
public class InputQuantityToReturnDialog {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private Dialog currentDialog;
|
||||
|
||||
public static Dialog make(final Context context, MtbAart mtbAart, BigDecimal minQuantity, BigDecimal maxQuantity, RunnableArgs<BigDecimal> onDialogDismiss) {
|
||||
@ -25,6 +35,8 @@ public class InputQuantityToReturnDialog {
|
||||
}
|
||||
|
||||
private InputQuantityToReturnDialog(Context context, MtbAart mtbAart, BigDecimal minQuantity, BigDecimal maxQuantity, RunnableArgs<BigDecimal> onDialogDismiss) {
|
||||
this.mContext = context;
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
DialogInputQuantityToReturnBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_to_return, null, false);
|
||||
|
||||
@ -55,7 +67,6 @@ public class InputQuantityToReturnDialog {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class InputQuantityToReturnViewModel {
|
||||
|
||||
public MtbAart mtbAart;
|
||||
|
||||
@ -77,7 +77,7 @@ public class VenditaOrdineInevasoHelper {
|
||||
if(tmpList.get(i).isHidden() == null || forceHiddenCheck) {
|
||||
PickingObjectDTO tmpItem = tmpList.get(i);
|
||||
|
||||
tmpItem.setHidden(tmpItem.getQtaCollo().floatValue() < 0);
|
||||
tmpItem.setHidden(tmpItem.getQtaCollo().compareTo(BigDecimal.ZERO) <= 0 || (!tmpItem.getMtbAart().isFlagQtaCnfFissa() && tmpItem.getNumCnfCollo().compareTo(BigDecimal.ZERO) <= 0));
|
||||
tmpItem.setTempHidden(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,6 +69,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt;
|
||||
@ -357,18 +358,18 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
//invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
|
||||
//dell'etichetta anonima
|
||||
this.executeEtichettaAnonimaNotOpenedLU(data, progressDialog);
|
||||
} else if(UtilityBarcode.isEtichetta128(data)) {
|
||||
|
||||
//Creo una nuova ul e cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
||||
this.createNewUL(null, null, progressDialog, false, false, () -> {
|
||||
this.executeEtichettaEan128(data, progressDialog);
|
||||
});
|
||||
} else if(UtilityBarcode.isEanPeso(data)) {
|
||||
|
||||
//Creo una nuova ul e cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
||||
this.createNewUL(null, null, progressDialog, false, false, () -> {
|
||||
this.executeEtichettaEanPeso(data, progressDialog);
|
||||
});
|
||||
} else if(UtilityBarcode.isEtichetta128(data)) {
|
||||
|
||||
//Creo una nuova ul e cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
||||
this.createNewUL(null, null, progressDialog, false, false, () -> {
|
||||
this.executeEtichettaEan128(data, progressDialog);
|
||||
});
|
||||
} else {
|
||||
this.createNewUL(null, null, progressDialog, false, false, () -> {
|
||||
this.loadArticolo(data.getStringValue(), null, progressDialog);
|
||||
@ -380,16 +381,16 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
this.executeEtichettaLU(data.getStringValue(), progressDialog);
|
||||
|
||||
|
||||
} else if(UtilityBarcode.isEtichetta128(data)) {
|
||||
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
||||
this.executeEtichettaEan128(data, progressDialog);
|
||||
|
||||
|
||||
} else if(UtilityBarcode.isEanPeso(data)) {
|
||||
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
||||
this.executeEtichettaEanPeso(data, progressDialog);
|
||||
|
||||
|
||||
} else if(UtilityBarcode.isEtichetta128(data)) {
|
||||
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
|
||||
this.executeEtichettaEan128(data, progressDialog);
|
||||
|
||||
|
||||
} else if(UtilityBarcode.isEtichettaPosizione(data)) {
|
||||
//Cerco l'UL presente all'interno della posizione
|
||||
this.executeEtichettaPosizione(data.getStringValue(), progressDialog);
|
||||
@ -867,6 +868,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
ColliMagazzinoRESTConsumer.doesColloContainsAnyRow(currentMtbColt, containRows -> {
|
||||
|
||||
if(containRows) {
|
||||
DialogInputPeso.make(mActivity, currentMtbColt.getCodTcol(), currentMtbColt.getPesoNettoKg(), currentMtbColt.getPesoKg(), (newCodTcol, newNetWeight, newGrossWeight) -> {
|
||||
|
||||
currentMtbColt.setCodTcol(newCodTcol);
|
||||
currentMtbColt.setPesoNettoKg(newNetWeight);
|
||||
currentMtbColt.setPesoKg(newGrossWeight);
|
||||
|
||||
ColliMagazzinoRESTConsumer.updateDataFine(
|
||||
mActivity,
|
||||
progress,
|
||||
@ -878,6 +885,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
progress.dismiss();
|
||||
}
|
||||
}));
|
||||
}).show();
|
||||
} else {
|
||||
if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID);
|
||||
deleteCollo(progress, onComplete);
|
||||
@ -1045,6 +1053,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
public void onOrdineRowDispatch(final PickingObjectDTO item) {
|
||||
if(mArticoliInColloBottomSheetViewModel.mtbColt.get() != null){
|
||||
|
||||
|
||||
List<MtbColr> currentMtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr();
|
||||
|
||||
List<MtbColr> filteredMtbColrs = Stream.of(currentMtbColrs).filter(
|
||||
@ -1115,6 +1124,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
if(item.getTempPickData() != null) {
|
||||
PickingObjectDTO.PickData tmpPickData = item.getTempPickData();
|
||||
|
||||
if(tmpPickData.getQtaCnf() == null && tmpPickData.getNumCnf() != null && tmpPickData.getQtaTot() != null) {
|
||||
tmpPickData.setQtaCnf(tmpPickData.getQtaTot().divide(tmpPickData.getNumCnf(), 3, RoundingMode.HALF_EVEN));
|
||||
}
|
||||
|
||||
boolean isTakenFromUL = tmpPickData.getSourceMtbColt() != null;
|
||||
|
||||
if(tmpPickData.getMtbPartitaMag() != null) {
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(tmpPickData.getMtbPartitaMag().getPartitaMag())) {
|
||||
@ -1132,16 +1147,21 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
boolean useQtaDaEvadere = false;
|
||||
|
||||
if(tmpPickData.getQtaTot() != null) {
|
||||
useQtaDaEvadere = qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && item.getMtbAart().isFlagQtaCnfFissa();
|
||||
useQtaDaEvadere = isTakenFromUL || (qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && item.getMtbAart().isFlagQtaCnfFissa());
|
||||
if (useQtaDaEvadere) {
|
||||
dto.setQtaTot(qtaDaEvadere);
|
||||
dto.setMaxQta(qtaDaEvadere);
|
||||
|
||||
if(isTakenFromUL) {
|
||||
dto.setNumCnf(qtaDaEvadere.divide(tmpPickData.getQtaCnf(), 0, RoundingMode.HALF_UP).intValue());
|
||||
}
|
||||
|
||||
} else {
|
||||
dto.setQtaTot(tmpPickData.getQtaTot());
|
||||
dto.setMaxQta(tmpPickData.getQtaTot());
|
||||
|
||||
if(tmpPickData.getNumCnf() != null) {
|
||||
dto.setQtaCnf(tmpPickData.getQtaTot().divide(tmpPickData.getNumCnf()));
|
||||
dto.setQtaCnf(tmpPickData.getQtaTot().divide(tmpPickData.getNumCnf(), 3, RoundingMode.HALF_UP));
|
||||
} else {
|
||||
dto.setQtaCnf(tmpPickData.getQtaTot());
|
||||
}
|
||||
@ -1206,6 +1226,18 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
.setNumColloRif(sourceMtbColt.getNumCollo())
|
||||
.setGestioneRif(UtilityString.empty2null(sourceMtbColt.getGestione()))
|
||||
.setDataColloRif(UtilityString.empty2null(sourceMtbColt.getDataColloS()));
|
||||
|
||||
MtbColt currentOpenedMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
|
||||
|
||||
if( currentOpenedMtbColt.getCodTcol() == null &&
|
||||
currentOpenedMtbColt.getPesoKg() == null &&
|
||||
currentOpenedMtbColt.getPesoNettoKg() == null) {
|
||||
|
||||
currentOpenedMtbColt.setCodTcol(sourceMtbColt.getCodTcol());
|
||||
currentOpenedMtbColt.setPesoKg(sourceMtbColt.getPesoKg());
|
||||
currentOpenedMtbColt.setPesoNettoKg(sourceMtbColt.getPesoNettoKg());
|
||||
}
|
||||
|
||||
} else if(item.getNumCollo() != null) {
|
||||
mtbColr
|
||||
.setCodJcom(UtilityString.empty2null(item.getCodJcom()))
|
||||
@ -1219,7 +1251,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||
|
||||
cloneMtbColt.setMtbColr(new ObservableArrayList());
|
||||
cloneMtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
@ -0,0 +1,136 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.input_peso_lu;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.di.BindableString;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
|
||||
import it.integry.integrywmsnative.core.model.MtbTCol;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.DialogInputPesoLuBinding;
|
||||
|
||||
public class DialogInputPeso {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
private DialogInputPesoLuBinding mBindings;
|
||||
private DialogInputPesoViewModel mViewModel;
|
||||
private Dialog currentDialog;
|
||||
|
||||
private List<MtbTCol> codTcolList = null;
|
||||
private ArrayAdapter<String> codTcolArrayAdapter = null;
|
||||
|
||||
public static Dialog make(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
|
||||
return new DialogInputPeso(context, codTcol, netWeight, grossWeight, onDialogDismiss).currentDialog;
|
||||
}
|
||||
|
||||
|
||||
private DialogInputPeso(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
|
||||
this.mContext = context;
|
||||
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_peso_lu, null, false);
|
||||
|
||||
currentDialog = new Dialog(context);
|
||||
currentDialog.setContentView(mBindings.getRoot());
|
||||
|
||||
currentDialog.setCanceledOnTouchOutside(false);
|
||||
currentDialog.setCancelable(false);
|
||||
currentDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
|
||||
mViewModel = new DialogInputPesoViewModel();
|
||||
mViewModel.codTcol.set(codTcol);
|
||||
mViewModel.netWeight.set(UtilityNumber.decimalToString(netWeight));
|
||||
mViewModel.grossWeight.set(UtilityNumber.decimalToString(grossWeight));
|
||||
|
||||
mBindings.setViewModel(mViewModel);
|
||||
|
||||
mBindings.buttonConfirm.setOnClickListener(v -> {
|
||||
currentDialog.dismiss();
|
||||
|
||||
String newCodTcol = null;
|
||||
|
||||
if(mViewModel.codTcol.get() != null) {
|
||||
Optional<MtbTCol> newCodTcolOptional = Stream.of(codTcolList)
|
||||
.filter(x -> (x.getCodTcol() + " - " + x.getDescrizione()).equalsIgnoreCase(mViewModel.codTcol.get()))
|
||||
.findSingle();
|
||||
|
||||
if(newCodTcolOptional.isPresent()) newCodTcol = newCodTcolOptional.get().getCodTcol();
|
||||
}
|
||||
|
||||
|
||||
BigDecimal netWeightDecimal = new BigDecimal(mViewModel.netWeight.get());
|
||||
BigDecimal grossWeightDecimal = new BigDecimal(mViewModel.grossWeight.get());
|
||||
|
||||
onDialogDismiss.run(newCodTcol, netWeightDecimal, grossWeightDecimal);
|
||||
});
|
||||
|
||||
|
||||
this.init();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void init() {
|
||||
|
||||
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
MagazzinoRESTConsumer.getTipiCollo(codTcols -> {
|
||||
this.codTcolList = codTcols;
|
||||
|
||||
List<String> codTcolDescriptions = Stream.of(codTcols)
|
||||
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
|
||||
.toList();
|
||||
|
||||
if(mViewModel.codTcol.get() != null) {
|
||||
Optional<String> newCodTcol = Stream.of(codTcols)
|
||||
.filter(x -> x.getCodTcol().equalsIgnoreCase(mViewModel.codTcol.get()))
|
||||
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
|
||||
.findSingle();
|
||||
|
||||
if(newCodTcol.isPresent()) mViewModel.codTcol.set(newCodTcol.get());
|
||||
}
|
||||
|
||||
codTcolArrayAdapter = new ArrayAdapter(mContext, R.layout.array_adapter_single_item);
|
||||
codTcolArrayAdapter.addAll(codTcolDescriptions);
|
||||
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
|
||||
|
||||
progressDialog.dismiss();
|
||||
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class DialogInputPesoViewModel {
|
||||
public BindableString codTcol = new BindableString();
|
||||
public BindableString netWeight = new BindableString();
|
||||
public BindableString grossWeight = new BindableString();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
8
app/src/main/res/layout/array_adapter_single_item.xml
Normal file
8
app/src/main/res/layout/array_adapter_single_item.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<androidx.appcompat.widget.AppCompatTextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="?attr/textAppearanceSubtitle1"
|
||||
style="@style/AppTheme.NewMaterial.Text"/>
|
||||
190
app/src/main/res/layout/dialog_input_peso_lu.xml
Normal file
190
app/src/main/res/layout/dialog_input_peso_lu.xml
Normal file
@ -0,0 +1,190 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<data>
|
||||
<import type="android.text.Html" />
|
||||
<import type="it.integry.integrywmsnative.R" />
|
||||
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
||||
<variable
|
||||
name="mContext"
|
||||
type="android.content.Context" />
|
||||
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso.DialogInputPesoViewModel" />
|
||||
</data>
|
||||
|
||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
app:cardCornerRadius="12dp"
|
||||
app:cardElevation="0dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/light_blue_300"
|
||||
android:gravity="center_horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_error_white_24dp"
|
||||
android:layout_margin="24dp"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="24dp"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/TextViewMaterial.DialogTitle"
|
||||
android:text="@string/action_insert_weight"
|
||||
android:gravity="center_horizontal"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/TextViewMaterial"
|
||||
android:text="@string/dialog_input_peso_lu_description"
|
||||
android:gravity="center"
|
||||
android:layout_marginTop="16dp" />
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_cod_tcol"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/lu_type">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown_cod_tcol"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textNoSuggestions"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:imeOptions="actionNext"
|
||||
android:nextFocusForward="@id/filled_exposed_dropdown_vettore"
|
||||
app:binding="@{viewModel.codTcol}"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guide_center_1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.49"/>
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guide_center_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.51"/>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@id/guide_center_1"
|
||||
android:layout_marginBottom="16dp"
|
||||
style="@style/TextInputLayout.OutlinePrimary">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/gross_weight"
|
||||
android:inputType="numberDecimal"
|
||||
app:binding="@{viewModel.grossWeight}"
|
||||
style="@style/TextInputEditText.OutlinePrimary"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@id/guide_center_2"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginBottom="16dp"
|
||||
style="@style/TextInputLayout.OutlinePrimary">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/net_weight"
|
||||
android:inputType="numberDecimal"
|
||||
app:binding="@{viewModel.netWeight}"
|
||||
style="@style/TextInputEditText.OutlinePrimary"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:gravity="bottom|center_horizontal">
|
||||
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/button_confirm"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Button.PrimaryFull"
|
||||
app:icon="@drawable/ic_save_24dp"
|
||||
android:text="@string/confirm"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
</layout>
|
||||
@ -45,6 +45,8 @@
|
||||
<string name="action_orderBy">Ordina</string>
|
||||
<string name="action_create_ul">Crea nuova UL</string>
|
||||
<string name="action_insert_quantity">Inserisci quantità</string>
|
||||
<string name="action_insert_weight">Inserisci peso</string>
|
||||
<string name="dialog_input_peso_lu_description">Inserisci le informazioni del TIPO UL e il peso NETTO e LORDO</string>
|
||||
<string name="action_show_created_ul">Mostra UL già create</string>
|
||||
<string name="action_recover_ul">Recupera UL</string>
|
||||
<string name="action_print_ul">Stampa UL</string>
|
||||
@ -119,6 +121,9 @@
|
||||
<string name="quantity">Quantità</string>
|
||||
<string name="packages">Confezioni</string>
|
||||
<string name="quantity_short">Qtà</string>
|
||||
<string name="net_weight">Peso netto (KG)</string>
|
||||
<string name="gross_weight">Peso lordo (KG)</string>
|
||||
<string name="lu_type">Tipo pedana</string>
|
||||
|
||||
<string name="ordered_abbr">Ord</string>
|
||||
<string name="to_dispatch_abbr">Da ev</string>
|
||||
|
||||
@ -71,7 +71,9 @@
|
||||
<string name="action_orderBy">Order</string>
|
||||
<string name="action_create_ul">Create new LU</string>
|
||||
<string name="action_insert_quantity">Insert quantity</string>
|
||||
<string name="action_insert_weight">Insert weight</string>
|
||||
<string name="action_show_created_ul">Show already created LU</string>
|
||||
<string name="dialog_input_peso_lu_description">Insert info about LU TYPE and NET / GROSS weight</string>
|
||||
|
||||
|
||||
<!-- SETTINGS -->
|
||||
@ -116,6 +118,9 @@
|
||||
<string name="quantity">Quantity</string>
|
||||
<string name="packages">Packages</string>
|
||||
<string name="quantity_short">Qty</string>
|
||||
<string name="net_weight">Net weight (KG)</string>
|
||||
<string name="gross_weight">Gross weight (KG)</string>
|
||||
<string name="lu_type">LU type</string>
|
||||
|
||||
<string name="ordered_abbr">Ord</string>
|
||||
<string name="to_dispatch_abbr">To disp</string>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user