From 438e9ca73c22abbd9498ea9f9aff942a192535df Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 11 Dec 2019 18:08:16 +0100 Subject: [PATCH 1/6] Refactoring ID su recover colli --- .../core/data_recover/ColliDataRecover.java | 53 +++++++++++++++---- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java index 09880de7..d8e564ed 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java @@ -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; } @@ -105,13 +118,9 @@ public class ColliDataRecover { public static List getAllSessionIDs() { if(thereIsAnExistantSession()) { - List 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 +129,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 +139,27 @@ public class ColliDataRecover { .setFiltroOrdini(dto.getFiltro()); } + private static RecoverDTO getIfExists(int id) { + Optional 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,12 +168,16 @@ public class ColliDataRecover { mtbColtsSessions.add(recoverDTO); updateLocalFile(); - return mtbColtsSessions.indexOf(recoverDTO); + return newId; } public static void closeSession(int ID) { - mtbColtsSessions.remove(ID); - updateLocalFile(); + RecoverDTO dto = getIfExists(ID); + + if(dto != null) { + mtbColtsSessions.remove(dto); + updateLocalFile(); + } } From a18a755f0a8bef2b3b822d6455648e490d31379a Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 12 Dec 2019 15:38:53 +0100 Subject: [PATCH 2/6] Prime modifiche --- .../core/settings/DBSettingsModel.java | 10 +++++++ .../core/settings/SettingsManager.java | 5 ++++ .../core/utility/UtilityBarcode.java | 2 +- .../core/VenditaOrdineInevasoHelper.java | 2 +- .../VenditaOrdineInevasoViewModel.java | 29 +++++++++++-------- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 8cd781ee..ad60d10f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -26,6 +26,7 @@ public class DBSettingsModel { private boolean flagCanAutoOpenNewULAccettazione; private boolean flagCanAddExtraQuantitySpedizione; private boolean flagEnableCheckDepositoSpedizione; + private boolean flagForceAllToColli; public List 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; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index e4b4a43d..bf64b2a7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -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); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java index c87ce266..e6203668 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java @@ -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) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java index 39273041..f560a325 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java @@ -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); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index aea24f2c..67c7861e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -357,18 +357,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 +380,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); @@ -1045,6 +1045,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO public void onOrdineRowDispatch(final PickingObjectDTO item) { if(mArticoliInColloBottomSheetViewModel.mtbColt.get() != null){ + List currentMtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr(); List filteredMtbColrs = Stream.of(currentMtbColrs).filter( @@ -1115,6 +1116,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO if(item.getTempPickData() != null) { PickingObjectDTO.PickData tmpPickData = item.getTempPickData(); + boolean isTakenFromUL = tmpPickData.getSourceMtbColt() != null; + if(tmpPickData.getMtbPartitaMag() != null) { if (!UtilityString.isNullOrEmpty(tmpPickData.getMtbPartitaMag().getPartitaMag())) { @@ -1132,10 +1135,12 @@ 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); + + //Aggiungere calcolo } else { dto.setQtaTot(tmpPickData.getQtaTot()); dto.setMaxQta(tmpPickData.getQtaTot()); From eb87785fca758a0f3f309430b1bb192e9dce16c2 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 12 Dec 2019 17:42:46 +0100 Subject: [PATCH 3/6] Corretto calcolo delle qta_cnf --- .../viewmodel/VenditaOrdineInevasoViewModel.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index 67c7861e..3f844932 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -1116,6 +1116,10 @@ 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) { @@ -1140,13 +1144,16 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO dto.setQtaTot(qtaDaEvadere); dto.setMaxQta(qtaDaEvadere); - //Aggiungere calcolo + 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()); } From 2d0bbf4b5340e9100949fce25d3d8e8774650501 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 12 Dec 2019 17:47:26 +0100 Subject: [PATCH 4/6] Fix cancellazione colli in fase di recupero non andato a buon fine --- .../core/data_recover/ColliDataRecover.java | 10 ---------- .../integrywmsnative/gest/main/MainFragment.java | 3 ++- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java index d8e564ed..41f64833 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecover.java @@ -105,16 +105,6 @@ public class ColliDataRecover { return mtbColtsSessions.size() > 0; } - public static Integer getFirstSessionID() { - - if(thereIsAnExistantSession()){ - return 0; - - - } else return null; - - } - public static List getAllSessionIDs() { if(thereIsAnExistantSession()) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index 91f42d91..45a0e153 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -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); } From 0b7fd2ac9407faaed202de2465a9eeac787824f4 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 12 Dec 2019 20:03:07 +0100 Subject: [PATCH 5/6] Completato dialog a finbe picking di richiesta peso netto/lordo e tipo pedana --- .../integrywmsnative/core/model/MtbColt.java | 10 + .../rest/consumers/MagazzinoRESTConsumer.java | 20 ++ .../views/InputQuantityToReturnDialog.java | 13 +- .../VenditaOrdineInevasoViewModel.java | 24 ++- .../input_peso_lu/DialogInputPeso.java | 136 +++++++++++++ .../res/layout/array_adapter_single_item.xml | 8 + .../main/res/layout/dialog_input_peso_lu.xml | 190 ++++++++++++++++++ app/src/main/res/values-it/strings.xml | 5 + app/src/main/res/values/strings.xml | 5 + 9 files changed, 408 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java create mode 100644 app/src/main/res/layout/array_adapter_single_item.xml create mode 100644 app/src/main/res/layout/dialog_input_peso_lu.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index 721e00d6..9b44e455 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -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; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index 8f98dff1..d8b5cf92 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -36,4 +36,24 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { } }); } + + public static void getTipiCollo(RunnableArgs> onComplete, RunnableArgs onFailed) { + String baseSql = "SELECT * " + + "FROM mtb_tcol "; + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(List values) { + if(onComplete != null) { + onComplete.run(values); + } + } + + @Override + public void onFailed(Exception ex) { + if(onFailed != null) onFailed.run(ex); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/views/InputQuantityToReturnDialog.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/views/InputQuantityToReturnDialog.java index 85aa887b..ffa07c66 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/views/InputQuantityToReturnDialog.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/views/InputQuantityToReturnDialog.java @@ -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 onDialogDismiss) { @@ -25,6 +35,8 @@ public class InputQuantityToReturnDialog { } private InputQuantityToReturnDialog(Context context, MtbAart mtbAart, BigDecimal minQuantity, BigDecimal maxQuantity, RunnableArgs 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; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index 3f844932..09006753 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -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; @@ -867,7 +868,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO ColliMagazzinoRESTConsumer.doesColloContainsAnyRow(currentMtbColt, containRows -> { if(containRows) { - ColliMagazzinoRESTConsumer.updateDataFine( + 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, currentMtbColt, @@ -878,6 +885,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO progress.dismiss(); } })); + }).show(); } else { if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID); deleteCollo(progress, onComplete); @@ -1218,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())) @@ -1231,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); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java new file mode 100644 index 00000000..0857cc1c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java @@ -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 codTcolList = null; + private ArrayAdapter codTcolArrayAdapter = null; + + public static Dialog make(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { + return new DialogInputPeso(context, codTcol, netWeight, grossWeight, onDialogDismiss).currentDialog; + } + + + private DialogInputPeso(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss 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 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 codTcolDescriptions = Stream.of(codTcols) + .map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione()) + .toList(); + + if(mViewModel.codTcol.get() != null) { + Optional 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(); + + } + + +} diff --git a/app/src/main/res/layout/array_adapter_single_item.xml b/app/src/main/res/layout/array_adapter_single_item.xml new file mode 100644 index 00000000..d0736805 --- /dev/null +++ b/app/src/main/res/layout/array_adapter_single_item.xml @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input_peso_lu.xml b/app/src/main/res/layout/dialog_input_peso_lu.xml new file mode 100644 index 00000000..74872b7e --- /dev/null +++ b/app/src/main/res/layout/dialog_input_peso_lu.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 393004ce..6d7f1962 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -45,6 +45,8 @@ Ordina Crea nuova UL Inserisci quantità + Inserisci peso + Inserisci le informazioni del TIPO UL e il peso NETTO e LORDO Mostra UL già create Recupera UL Stampa UL @@ -119,6 +121,9 @@ Quantità Confezioni Qtà + Peso netto (KG) + Peso lordo (KG) + Tipo pedana Ord Da ev diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32ec6adb..dc2cdbba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -71,7 +71,9 @@ Order Create new LU Insert quantity + Insert weight Show already created LU + Insert info about LU TYPE and NET / GROSS weight @@ -116,6 +118,9 @@ Quantity Packages Qty + Net weight (KG) + Gross weight (KG) + LU type Ord To disp From 669e8bbc3b97bd4a83256cd1f59cc92bd5b07e27 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Fri, 13 Dec 2019 09:18:39 +0100 Subject: [PATCH 6/6] -> v1.10.6 (109) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6da19e10..80c3ff9f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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 {