From e5a4113968ac86fe12461ccb0f00a7b911e466c3 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 25 Mar 2020 12:40:57 +0100 Subject: [PATCH] Vario --- app/build.gradle | 3 +- .../integrywmsnative/core/di/Converters.java | 9 +- .../integrywmsnative/core/model/MtbAart.java | 214 ++---------------- .../core/model/MtbUntMis.java | 75 ++++++ .../core/rest/model/SitArtOrdDTO.java | 10 + .../core/utility/UtilityBigDecimal.java | 7 + .../core/utility/UtilityLogger.java | 66 +++--- ...oneOrdineAccettazioneInevasoViewModel.java | 4 +- .../core/ContenutoBancaleListAdapter.java | 4 +- .../core/PickingLiberoListAdapter.java | 2 +- .../core/PickingResiListAdapter.java | 2 +- .../core/ChooseOrdsLavFromListAdapter.java | 6 +- .../ProdVersamentoMaterialViewModel.java | 2 +- .../RettificaGiacenzeMainListAdapter.java | 2 +- .../core/VenditaOrdineInevasoHelper.java | 4 +- .../VenditaOrdineInevasoViewModel.java | 4 +- .../spedizione_new/SpedizioneActivity.java | 80 +++++-- .../spedizione_new/SpedizioneViewModel.java | 152 +++++++------ .../spedizione_new/model/PickDataDTO.java | 90 ++++++++ ...icoliInColloBottomSheetMtbColrAdapter.java | 2 +- .../ArticoliInColloBottomSheetViewModel.java | 2 +- .../DialogBasketLU_Page2_ListAdapter.java | 2 +- .../DialogChooseArtsFromListaArtsAdapter.java | 2 +- .../input_quantity/DialogInputQuantity.java | 2 +- .../DialogInputQuantityV2.java | 41 ++-- .../DialogInputQuantityV2DTO.java | 31 +++ .../DialogInputQuantityV2ViewModel.java | 62 ++++- .../drawable/ic_photo_camera_black_24dp.xml | 12 + .../main/res/layout/activity_spedizione.xml | 13 ++ .../res/layout/dialog_input_quantity_v2.xml | 6 +- 30 files changed, 548 insertions(+), 363 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java create mode 100644 app/src/main/res/drawable/ic_photo_camera_black_24dp.xml diff --git a/app/build.gradle b/app/build.gradle index 8bc11156..767d608d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -91,7 +91,7 @@ dependencies { implementation 'com.google.firebase:firebase-core:17.2.3' implementation 'com.google.firebase:firebase-crash:16.2.1' implementation 'com.google.firebase:firebase-perf:19.0.5' - implementation 'com.google.firebase:firebase-crashlytics:17.0.0-beta01' + implementation 'com.google.firebase:firebase-crashlytics:17.0.0-beta02' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.google.android.material:material:1.1.0' @@ -145,6 +145,7 @@ dependencies { implementation project(':barcode_base_android_library') implementation project(':honeywellscannerlibrary') implementation project(':keyobardemulatorscannerlibrary') + implementation 'com.kroegerama:barcode-kaiteki:1.1.1' androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' androidTestImplementation 'org.testng:testng:7.1.0' } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java index 4b549e11..72b6f831 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java @@ -38,6 +38,7 @@ import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityNumber; +import it.integry.integrywmsnative.core.utility.UtilityString; public class Converters { @@ -105,14 +106,18 @@ public class Converters { TextWatcherAdapter watcher = new TextWatcherAdapter() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - observableBigDecimal.set(new BigDecimal(s.toString())); + BigDecimal value = null; + if(!UtilityString.isNullOrEmpty(s.toString())) value = new BigDecimal(s.toString()); + observableBigDecimal.set(value); } }; view.setTag(R.id.bound_observable, new Pair<>(observableBigDecimal, watcher)); view.addTextChangedListener(watcher); } BigDecimal newValue = observableBigDecimal.get(); - if(view.getText().toString().trim().length() > 0 && !UtilityBigDecimal.equalsTo(new BigDecimal(view.getText().toString()), newValue)) { + BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : BigDecimal.ZERO; + + if(!UtilityBigDecimal.equalsTo(viewValue, newValue)) { view.setText(UtilityNumber.decimalToString(newValue)); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java index d50e24da..f8af41e4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java @@ -5,6 +5,7 @@ import android.os.Parcelable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -12,7 +13,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString; * Created by GiuseppeS on 06/03/2018. */ -public class MtbAart implements Parcelable{ +public class MtbAart extends EntityBase{ private String codMart; private String descrizione; @@ -91,102 +92,22 @@ public class MtbAart implements Parcelable{ private String marchio; private Integer sezione; + private List mtbUntMis; - public MtbAart(){} - + public MtbAart() { + this.type = "mtb_aart"; + } public boolean isFlagTracciabilita() { return flagTracciabilita != null && flagTracciabilita.equalsIgnoreCase("S"); } - - - - - - protected MtbAart(Parcel in) { - codMart = in.readString(); - descrizione = in.readString(); - untMis = in.readString(); - barCode = in.readString(); - pesoKg = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - qtaCnf = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - codAliq = in.readString(); - codScoArt = in.readString(); - codTcolUi = in.readString(); - codTcolUl = in.readString(); - articoloComposto = in.readString(); - esposizioneComp = in.readString(); - descrizioneEstesa = in.readString(); - codUltForn = in.readString(); - dataUltCar = in.readString(); - valUltCar = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - codUltClie = in.readString(); - dataUltScar = in.readString(); - valUltScar = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - tipoCodice = in.readString(); - note = in.readString(); - posizione = in.readString(); - colliPedana = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - untMis2 = in.readString(); - rapConv2 = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - flagInclListino = in.readString(); - untMis3 = in.readString(); - rapConv3 = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - codMartStat = in.readString(); - codMcon = in.readString(); - codMgrp = in.readString(); - codMsfa = in.readString(); - codMsgr = in.readString(); - codMstp = in.readString(); - codMtip = in.readString(); - descrizioneStat = in.readString(); - flagStato = in.readString(); - cambioDiviCar = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - cambioDiviScar = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - ggScadPartita = in.readByte() == 0x00 ? null : in.readInt(); - volumeMc = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - flagEsponiPrz = in.readString(); - dataUltVar = in.readString(); - percSfrido = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - codBarreImb = in.readString(); - flagCalcPrz = in.readString(); - esposizioneCompAcq = in.readString(); - flagCalcPrzAcq = in.readString(); - diacod = in.readString(); - plu = in.readString(); - partIvaProd = in.readString(); - ragSocProd = in.readString(); - flagRapConvVariabile = in.readString(); - flagMovArtMag = in.readString(); - flagTracciabilita = in.readString(); - taraKg = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - colliStrato = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader()); - flagQtaCnfFissa = in.readString(); - flagColliPedanaFisso = in.readString(); - codCconCosti = in.readString(); - codCconRicavi = in.readString(); - codDgrpArt = in.readString(); - codDiviCar = in.readString(); - codDiviScar = in.readString(); - codEcrCat = in.readString(); - codEcrMcat = in.readString(); - codEcrRep = in.readString(); - codEcrStipo = in.readString(); - codEcrTipo = in.readString(); - codGrpBolla = in.readString(); - ingredienti = in.readString(); - idArtEqui = in.readString(); - descrCassa = in.readString(); - codNcIntracee = in.readString(); - marchio = in.readString(); - sezione = in.readByte() == 0x00 ? null : in.readInt(); + public boolean isFlagQtaCnfFissaBoolean() { + return "S".equalsIgnoreCase(flagQtaCnfFissa); } - @Override - public int describeContents() { - return 0; - } + + public String getCodMart() { return codMart; @@ -709,10 +630,6 @@ public class MtbAart implements Parcelable{ return flagQtaCnfFissa; } - public boolean getFlagQtaCnfFissaBoolean() { - return "S".equalsIgnoreCase(flagQtaCnfFissa); - } - public MtbAart setFlagQtaCnfFissa(String flagQtaCnfFissa) { this.flagQtaCnfFissa = flagQtaCnfFissa; return this; @@ -880,111 +797,12 @@ public class MtbAart implements Parcelable{ return this; } - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeString(codMart); - dest.writeString(descrizione); - dest.writeString(untMis); - dest.writeString(barCode); - dest.writeValue(pesoKg); - dest.writeValue(qtaCnf); - dest.writeString(codAliq); - dest.writeString(codScoArt); - dest.writeString(codTcolUi); - dest.writeString(codTcolUl); - dest.writeString(articoloComposto); - dest.writeString(esposizioneComp); - dest.writeString(descrizioneEstesa); - dest.writeString(codUltForn); - dest.writeString(dataUltCar); - dest.writeValue(valUltCar); - dest.writeString(codUltClie); - dest.writeString(dataUltScar); - dest.writeValue(valUltScar); - dest.writeString(tipoCodice); - dest.writeString(note); - dest.writeString(posizione); - dest.writeValue(colliPedana); - dest.writeString(untMis2); - dest.writeValue(rapConv2); - dest.writeString(flagInclListino); - dest.writeString(untMis3); - dest.writeValue(rapConv3); - dest.writeString(codMartStat); - dest.writeString(codMcon); - dest.writeString(codMgrp); - dest.writeString(codMsfa); - dest.writeString(codMsgr); - dest.writeString(codMstp); - dest.writeString(codMtip); - dest.writeString(descrizioneStat); - dest.writeString(flagStato); - dest.writeValue(cambioDiviCar); - dest.writeValue(cambioDiviScar); - if (ggScadPartita == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeInt(ggScadPartita); - } - dest.writeValue(volumeMc); - dest.writeString(flagEsponiPrz); - dest.writeString(dataUltVar); - dest.writeValue(percSfrido); - dest.writeString(codBarreImb); - dest.writeString(flagCalcPrz); - dest.writeString(esposizioneCompAcq); - dest.writeString(flagCalcPrzAcq); - dest.writeString(diacod); - dest.writeString(plu); - dest.writeString(partIvaProd); - dest.writeString(ragSocProd); - dest.writeString(flagRapConvVariabile); - dest.writeString(flagMovArtMag); - dest.writeString(flagTracciabilita); - dest.writeValue(taraKg); - dest.writeValue(colliStrato); - dest.writeString(flagQtaCnfFissa); - dest.writeString(flagColliPedanaFisso); - dest.writeString(codCconCosti); - dest.writeString(codCconRicavi); - dest.writeString(codDgrpArt); - dest.writeString(codDiviCar); - dest.writeString(codDiviScar); - dest.writeString(codEcrCat); - dest.writeString(codEcrMcat); - dest.writeString(codEcrRep); - dest.writeString(codEcrStipo); - dest.writeString(codEcrTipo); - dest.writeString(codGrpBolla); - dest.writeString(ingredienti); - dest.writeString(idArtEqui); - dest.writeString(descrCassa); - dest.writeString(codNcIntracee); - dest.writeString(marchio); - if (sezione == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeInt(sezione); - } - - - - + public List getMtbUntMis() { + return mtbUntMis; } - @SuppressWarnings("unused") - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public MtbAart createFromParcel(Parcel in) { - return new MtbAart(in); - } - - @Override - public MtbAart[] newArray(int size) { - return new MtbAart[size]; - } - }; - + public MtbAart setMtbUntMis(List mtbUntMis) { + this.mtbUntMis = mtbUntMis; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java new file mode 100644 index 00000000..89f8c0e4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java @@ -0,0 +1,75 @@ +package it.integry.integrywmsnative.core.model; + +import java.math.BigDecimal; + +public class MtbUntMis extends EntityBase { + + private String untMis; + private String flagDig; + private BigDecimal cifreDec; + private String tipoUm; + private String flagUnitaKg; + private String flagAttivo; + + public MtbUntMis() { + this.type = "mtb_unt_mis"; + } + + public String getUntMis() { + return untMis; + } + + public MtbUntMis setUntMis(String untMis) { + this.untMis = untMis; + return this; + } + + public boolean isFlagDig() { + return "S".equalsIgnoreCase(flagDig); + } + + public String getFlagDig() { + return flagDig; + } + + public MtbUntMis setFlagDig(String flagDig) { + this.flagDig = flagDig; + return this; + } + + public BigDecimal getCifreDec() { + return cifreDec; + } + + public MtbUntMis setCifreDec(BigDecimal cifreDec) { + this.cifreDec = cifreDec; + return this; + } + + public String getTipoUm() { + return tipoUm; + } + + public MtbUntMis setTipoUm(String tipoUm) { + this.tipoUm = tipoUm; + return this; + } + + public String getFlagUnitaKg() { + return flagUnitaKg; + } + + public MtbUntMis setFlagUnitaKg(String flagUnitaKg) { + this.flagUnitaKg = flagUnitaKg; + return this; + } + + public String getFlagAttivo() { + return flagAttivo; + } + + public MtbUntMis setFlagAttivo(String flagAttivo) { + this.flagAttivo = flagAttivo; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java index d5ce3cc5..e70a1942 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java @@ -14,6 +14,7 @@ public class SitArtOrdDTO { private String partitaMag; private BigDecimal qtaOrd; private BigDecimal numCnfOrd; + private BigDecimal qtaCnfOrd; private String idViaggio; private String codMdep; @@ -98,6 +99,15 @@ public class SitArtOrdDTO { return this; } + public BigDecimal getQtaCnfOrd() { + return qtaCnfOrd; + } + + public SitArtOrdDTO setQtaCnfOrd(BigDecimal qtaCnfOrd) { + this.qtaCnfOrd = qtaCnfOrd; + return this; + } + public String getIdViaggio() { return idViaggio; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java index 7404d353..bc381f23 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java @@ -25,4 +25,11 @@ public class UtilityBigDecimal { return input.compareTo(toCompareWith) < 0; } + public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) { + if(input1 == null) return input2; + if(input2 == null) return input1; + + return lowerThan(input1, input2) ? input1 : input2; + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java index ea1656d8..aff17de4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.core.utility; +import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.orhanobut.logger.Logger; import java.io.IOException; @@ -40,37 +41,42 @@ public class UtilityLogger { } public static void errorMe(Exception ex, String additionalText, Runnable onComplete, RunnableArgs onFailed) { - if ((!(ex instanceof SocketTimeoutException) && !(ex.getCause() instanceof SocketTimeoutException)) || - (!(ex instanceof SocketException) && !(ex.getCause() instanceof SocketException)) || - (!(ex instanceof IOException) && !(ex.getCause() instanceof IOException))) { + FirebaseCrashlytics.getInstance().recordException(ex); - String message = UtilityResources.readRawTextFile(R.raw.error_mail); - - message = message.replace("__APP_NAME__", UtilityResources.getString(R.string.app_name)); - message = message.replace("__APP_PACKAGE__", UtilityResources.getPackageName()); - - String appVersion = UtilityResources.getAppVersion(); - message = message.replace("__APP_VERSION__", appVersion == null ? "" : appVersion); - message = message.replace("__APP_VERSION_CODE__", "" + UtilityResources.getAppVersionCode()); - - - message = message.replaceAll("__ERROR_TITLE__", ex.getMessage()); - - message = message.replaceAll("__ERROR_DETAIL__", additionalText == null ? "" : additionalText); - - - StringWriter sw = new StringWriter(); - ex.printStackTrace(new PrintWriter(sw)); - - message = message.replace("__ERROR_STACKTRACE__", sw.toString()); - - String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB) ? "" : SettingsManager.i().userSession.profileDB; - message = message.replace("__CUSTOMER_NAME__", currentAzienda); - - message = message.replace("__ERROR_DATE__", UtilityDate.formatDate(UtilityDate.getDateInstance(), UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); - - SystemRESTConsumer.sendErrorLogMail(message, onComplete, onFailed); - } +// if ((!(ex instanceof SocketTimeoutException) && !(ex.getCause() instanceof SocketTimeoutException)) || +// (!(ex instanceof SocketException) && !(ex.getCause() instanceof SocketException)) || +// (!(ex instanceof IOException) && !(ex.getCause() instanceof IOException))) { +// +// if(ex.getMessage().contains("SocketTimeoutException")) return; +// +// +// String message = UtilityResources.readRawTextFile(R.raw.error_mail); +// +// message = message.replace("__APP_NAME__", UtilityResources.getString(R.string.app_name)); +// message = message.replace("__APP_PACKAGE__", UtilityResources.getPackageName()); +// +// String appVersion = UtilityResources.getAppVersion(); +// message = message.replace("__APP_VERSION__", appVersion == null ? "" : appVersion); +// message = message.replace("__APP_VERSION_CODE__", "" + UtilityResources.getAppVersionCode()); +// +// +// message = message.replaceAll("__ERROR_TITLE__", ex.getMessage()); +// +// message = message.replaceAll("__ERROR_DETAIL__", additionalText == null ? "" : additionalText); +// +// +// StringWriter sw = new StringWriter(); +// ex.printStackTrace(new PrintWriter(sw)); +// +// message = message.replace("__ERROR_STACKTRACE__", sw.toString()); +// +// String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB) ? "" : SettingsManager.i().userSession.profileDB; +// message = message.replace("__CUSTOMER_NAME__", currentAzienda); +// +// message = message.replace("__ERROR_DATE__", UtilityDate.formatDate(UtilityDate.getDateInstance(), UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH)); +// +// SystemRESTConsumer.sendErrorLogMail(message, onComplete, onFailed); +// } } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java index 91cd1c50..b0a156d9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java @@ -784,7 +784,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC //if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { dto.setQtaTot(new BigDecimal(ean128Model.Count)); - if (!item.getMtbAart().getFlagQtaCnfFissaBoolean()) { + if (!item.getMtbAart().isFlagQtaCnfFissaBoolean()) { dto.setQtaCnf(new BigDecimal(ean128Model.Count)); } //} else { @@ -827,7 +827,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC .setCodJcom(item.getCodJcom()) .setRigaOrd(item.getRigaOrd()); - if (!item.getMtbAart().getFlagQtaCnfFissaBoolean()) { + if (!item.getMtbAart().isFlagQtaCnfFissaBoolean()) { mtbColr.setQtaCnf(quantityDTO.qtaCnf.getBigDecimal()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java index d07564d5..cd23aae4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java @@ -39,7 +39,7 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter 0){ usedCnf = BigDecimal.ONE; @@ -127,7 +127,7 @@ public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter 0 && !mtbAart.getFlagQtaCnfFissaBoolean()) { + if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0 && !mtbAart.isFlagQtaCnfFissaBoolean()) { qtaDto.setQtaTot(new BigDecimal(ean128Model.NetWeightKg)); } else { qtaDto.setQtaTot(qtaDto.getQtaCnf().multiply(new BigDecimal(qtaDto.getNumCnf()))); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java index c2e5013a..6799dbca 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java @@ -9,8 +9,14 @@ import android.app.Dialog; import android.os.Bundle; import com.annimon.stream.Stream; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.kroegerama.kaiteki.bcode.BarcodeResultListener; +import com.kroegerama.kaiteki.bcode.ui.BarcodeBottomSheet; import com.tfb.fbtoast.FBToast; +import org.jetbrains.annotations.NotNull; + import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -43,12 +49,11 @@ import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListAdapte import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListModel; import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTOOld; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; -public class SpedizioneActivity extends AppCompatActivity implements SpedizioneViewModel.Listeners { +public class SpedizioneActivity extends AppCompatActivity implements SpedizioneViewModel.Listeners, BarcodeResultListener { private ActivitySpedizioneBinding mBindings; @@ -63,6 +68,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV public BindableBoolean noLUPresent = new BindableBoolean(true); + private boolean mEnableGiacenza; private boolean mFlagShowCodForn; private int barcodeScannerIstanceID = -1; @@ -105,11 +111,12 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); - boolean enableGiacenza = !SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza(); + mEnableGiacenza = !SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza(); boolean enableCheckPartitaMag = SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV(); + boolean canOverflowOrderQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione(); - if(enableGiacenza) mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); - mViewmodel.loadDataset(codMdep, enableGiacenza, enableCheckPartitaMag, mSitArtOrd, mTestateOrdini); + if (mEnableGiacenza) mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); + mViewmodel.init(codMdep, mEnableGiacenza, enableCheckPartitaMag, mSitArtOrd, mTestateOrdini, canOverflowOrderQuantity); } @Override @@ -136,7 +143,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); spedizioneListAdapter.setOnItemClicked(clickedItem -> { - if(!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick()) { + if (!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick()) { this.mViewmodel.dispatchOrdineRow(clickedItem); } }); @@ -177,12 +184,12 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV boolean anyLUPresent = x.getMtbColts() != null && x.getMtbColts().size() > 0; - spedizioneListModel.setActive(anyLUPresent); + spedizioneListModel.setActive(!mEnableGiacenza || anyLUPresent); if (!anyLUPresent) { - spedizioneListModel.setGroupTitle(getString(R.string.picking_not_available)); + spedizioneListModel.setGroupTitle(mEnableGiacenza ? getString(R.string.picking_not_available) : ""); - if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().getFlagQtaCnfFissaBoolean())) { + if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { spedizioneListModel.setUntMis("col"); spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd()); } else { @@ -208,7 +215,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); - if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().getFlagQtaCnfFissaBoolean())) { + if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { cloneModel.setUntMis("col"); cloneModel.setQtaTot(mtbColrToDispatch != null ? mtbColrToDispatch.getNumCnf() : x.getSitArtOrdDTO().getNumCnfOrd()); } else { @@ -273,6 +280,27 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV }, BarcodeManager::enable).show(); } + public void startCameraBarcode() { + List availableBarcodeFormats = new ArrayList<>(); + availableBarcodeFormats.add(BarcodeFormat.QR_CODE); + availableBarcodeFormats.add(BarcodeFormat.CODE_128); + availableBarcodeFormats.add(BarcodeFormat.UPC_E); + availableBarcodeFormats.add(BarcodeFormat.CODABAR); + availableBarcodeFormats.add(BarcodeFormat.EAN_8); + availableBarcodeFormats.add(BarcodeFormat.EAN_13); + availableBarcodeFormats.add(BarcodeFormat.ITF); + availableBarcodeFormats.add(BarcodeFormat.UPC_A); + + BarcodeBottomSheet bbs = BarcodeBottomSheet.Companion.show( + getSupportFragmentManager(), + availableBarcodeFormats, + false, + "tag" + ); + + + } + public void removeListFilter() { this.mViewmodel.resetMatchedRows(); } @@ -294,7 +322,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV @Override public void onDatasetLoaded() { - if(mCurrentProgress != null) { + if (mCurrentProgress != null) { mCurrentProgress.dismiss(); mCurrentProgress = null; } @@ -303,7 +331,6 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV @Override public void onLUCreated(MtbColt mtbColt) { noLUPresent.set(false); - FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); } @@ -331,19 +358,44 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV } @Override - public void onItemDispatched(MtbAart mtbAart, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable) { + public void onItemDispatched(MtbAart mtbAart, + BigDecimal totalQtaOrd, + BigDecimal totalNumCnfOrd, + BigDecimal qtaCnfOrd, + BigDecimal totalQtaToBeTaken, + BigDecimal totalNumCnfToBeTaken, + BigDecimal qtaCnfToBeTaken, + BigDecimal totalQtaAvailable, + BigDecimal totalNumCnfAvailable, + BigDecimal qtaCnfAvailable, + boolean canOverflowOrderQuantity) { DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() .setMtbAart(mtbAart) .setTotalQtaOrd(totalQtaOrd) .setTotalNumCnfOrd(totalNumCnfOrd) + .setQtaCnfOrd(qtaCnfOrd) .setTotalQtaToBeTaken(totalQtaToBeTaken) .setTotalNumCnfToBeTaken(totalNumCnfToBeTaken) .setQtaCnfToBeTaken(qtaCnfToBeTaken) .setTotalQtaAvailable(totalQtaAvailable) - .setTotalNumCnfAvailable(totalNumCnfAvailable); + .setTotalNumCnfAvailable(totalNumCnfAvailable) + .setQtaCnfAvailable(qtaCnfAvailable) + .setCanOverflowOrderQuantity(canOverflowOrderQuantity); DialogInputQuantityV2 .newInstance(dialogInputQuantityV2DTO) .show(getSupportFragmentManager(), "tag"); } + + @Override + public boolean onBarcodeResult(@NotNull Result result) { + String a = ""; + + return true; + } + + @Override + public void onBarcodeScanCancelled() { + + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java index 9310762a..55fea5e9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java @@ -25,6 +25,7 @@ import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @@ -48,7 +49,6 @@ import it.integry.integrywmsnative.gest.spedizione_new.exceptions.ScannedPositio import it.integry.integrywmsnative.gest.spedizione_new.model.PickDataDTO; import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTOOld; public class SpedizioneViewModel { @@ -69,6 +69,7 @@ public class SpedizioneViewModel { private boolean mEnableGiacenza; private boolean mEnableCheckPartitaMag; + private boolean mCanOverflowOrderQuantity; private MtbColt mCurrentMtbColt = null; @@ -83,11 +84,12 @@ public class SpedizioneViewModel { } - public void loadDataset(String codMdep, boolean enableGiacenza, boolean enableCheckPartitaMag, List pickingList, List testateOrdini) { + public void init(String codMdep, boolean enableGiacenza, boolean enableCheckPartitaMag, List pickingList, List testateOrdini, boolean canOverflowOrderQuantity) { this.mDefaultCodMdep = codMdep; this.mTestateOrdini = testateOrdini; this.mEnableGiacenza = enableGiacenza; this.mEnableCheckPartitaMag = enableCheckPartitaMag; + this.mCanOverflowOrderQuantity = canOverflowOrderQuantity; if (enableGiacenza) { mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> { @@ -253,9 +255,19 @@ public class SpedizioneViewModel { for (Listeners listener : mListeners) listener.onFilterRemoved(); } - private void sendOnItemDispatched(MtbAart mtbAart, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable) { + private void sendOnItemDispatched(MtbAart mtbAart, + BigDecimal totalQtaOrd, + BigDecimal totalNumCnfOrd, + BigDecimal qtaCnfOrd, + BigDecimal totalQtaToBeTaken, + BigDecimal totalNumCnfToBeTaken, + BigDecimal qtaCnfToBeTaken, + BigDecimal totalQtaAvailable, + BigDecimal totalNumCnfAvailable, + BigDecimal qtaCnfAvailable, + boolean canOverflowOrderQuantity) { for (Listeners listener : mListeners) - listener.onItemDispatched(mtbAart, totalQtaOrd, totalNumCnfOrd, totalQtaToBeTaken, totalNumCnfToBeTaken, qtaCnfToBeTaken, totalQtaAvailable, totalNumCnfAvailable); + listener.onItemDispatched(mtbAart, totalQtaOrd, totalNumCnfOrd, qtaCnfOrd, totalQtaToBeTaken, totalNumCnfToBeTaken, qtaCnfToBeTaken, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, canOverflowOrderQuantity); } public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { @@ -405,16 +417,12 @@ public class SpedizioneViewModel { if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { this.executeEtichettaLU(ean128Model.Sscc, onComplete); } else { - if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) { barcodeProd = barcodeProd.substring(1); } - this.loadArticolo(barcodeProd, PickingObjectDTOOld.PickData.fromEan128(ean128Model), onComplete); - + this.loadArticolo(barcodeProd, PickDataDTO.fromEan128(ean128Model), onComplete); } - - } else { //EAN 128 non completo o comunque mancano i riferimenti al prodotto onComplete.run(); @@ -427,13 +435,13 @@ public class SpedizioneViewModel { try { Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue()); - this.loadArticolo(ean13PesoModel.getPrecode(), PickingObjectDTOOld.PickData.fromEan128(ean13PesoModel.toEan128()), onComplete); + this.loadArticolo(ean13PesoModel.getPrecode(), PickDataDTO.fromEan128(ean13PesoModel.toEan128()), onComplete); } catch (Exception ex) { this.sendError(ex); } } - private void loadArticolo(String barcodeProd, PickingObjectDTOOld.PickData pickData, Runnable onComplete) { + private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { if (barcodeProd.length() == 14) { barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); } @@ -447,8 +455,6 @@ public class SpedizioneViewModel { } }, this::sendError); - - } private void searchArtFromUL(MtbColt scannedUL, Runnable onComplete) { @@ -517,29 +523,22 @@ public class SpedizioneViewModel { } - private void searchArtFromAnag(MtbAart mtbAart, PickingObjectDTOOld.PickData pickData, Runnable onComplete) { - + private void searchArtFromAnag(MtbAart mtbAart, PickDataDTO pickData, Runnable onComplete) { final List pickingList = mPickingList.getValue(); -// List matchPickingObject = Stream.of(pickingList) -// .filter(x -> x.getNumCollo() == null && -// (mtbAart.getCodMart().equalsIgnoreCase(x.getCodMart()))) -// .toList(); -// -// -// if (SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV()) { -// matchPickingObject = Stream.of(matchPickingObject) -// .filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()) && -// (pickData != null && pickData.getMtbPartitaMag() != null && Objects.equals(x.getPartitaMag(), pickData.getMtbPartitaMag().getPartitaMag()))).toList(); -// -// } -// -// if (matchPickingObject.size() == 1) { -// matchPickingObject.get(0).setTempPickData(pickData); -// } -// -// this.loadMatchedRows(matchPickingObject); + List matchPickingObject = Stream.of(pickingList) + .filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitArtOrdDTO().getCodMart())) + .filter(x -> { + MtbPartitaMag mtbPartitaMag = pickData != null && pickData.getManualPickDTO() != null && pickData.getManualPickDTO().getMtbPartitaMag() != null ? pickData.getManualPickDTO().getMtbPartitaMag() : null; + return !mEnableCheckPartitaMag || (mtbPartitaMag != null && UtilityString.equalsIgnoreCase(x.getSitArtOrdDTO().getPartitaMag(), mtbPartitaMag.getPartitaMag())); + }) + .toList(); + for(PickingObjectDTO pickingObjectDTO : matchPickingObject) { + pickingObjectDTO.setTempPickData(pickData); + } + + this.loadMatchedRows(matchPickingObject); onComplete.run(); } @@ -547,6 +546,8 @@ public class SpedizioneViewModel { private void loadMatchedRows(List matchedRows) { if (matchedRows == null || matchedRows.size() == 0) { this.sendError(new NoArtsFoundException()); + } else if (matchedRows.size() == 1) { + this.dispatchOrdineRow(matchedRows.get(0)); } else { List pickingList = mPickingList.getValue(); @@ -559,38 +560,6 @@ public class SpedizioneViewModel { this.sendFilterApplied(null); this.getPickingList().postValue(pickingList); -// if (matchedRows.size() == 1) { -// -// if (matchedRows.get(0).getTempPickData() != null && -// matchedRows.get(0).getTempPickData().getSourceMtbColt() != null) { -// -//// MtbColt tempSourceMtbColt = matchedRows.get(0).getTempPickData().getSourceMtbColt(); -// -//// if (tempSourceMtbColt.getGestione().equals(matchedRows.get(0).getGestione()) && -//// tempSourceMtbColt.getNumCollo() == matchedRows.get(0).getNumCollo() && -//// tempSourceMtbColt.getSerCollo().equals(matchedRows.get(0).getSerCollo()) && -//// tempSourceMtbColt.getDataColloS().equals(matchedRows.get(0).getDataColloS())) { -// -// dispatchOrdineRow(matchedRows.get(0)); -//// } else { -//// //Se sto pickando da una UL diversa da quella suggerita allora non te la apro in -//// //automatico ma ti mostro il filtro -//// applyFilter(""); -//// refreshOrderBy(false); -//// } -// -// } else if (matchedRows.get(0).isDeactivated()) { -// this.sendFilterChanged(""); -//// applyFilter(""); -//// refreshOrderBy(false); -// } else { -// dispatchOrdineRow(matchedRows.get(0)); -// } -// } else { -// this.sendFilterChanged(""); -//// applyFilter(""); -//// refreshOrderBy(false); -// } } } @@ -599,6 +568,7 @@ public class SpedizioneViewModel { BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd(); + BigDecimal qtaCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd(); AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(); @@ -609,6 +579,9 @@ public class SpedizioneViewModel { qtaColWithdrawRows.addAndGet(row.getQtaCol()); }); + BigDecimal numCnfDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(numCnfWithdrawRows.getBigDecimalValue()); + BigDecimal qtaDaEvadere = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(qtaColWithdrawRows.getBigDecimalValue()); + BigDecimal qtaCnfDaEvadere = qtaCnfOrd; BigDecimal numCnfDaPrelevare = null; BigDecimal qtaColDaPrelevare = null; @@ -617,21 +590,32 @@ public class SpedizioneViewModel { BigDecimal totalQtaAvailable = null; BigDecimal totalNumCnfAvailable = null; + BigDecimal qtaCnfAvailable = null; + //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta MtbColr mtbColrToDispatch = pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ? pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null; + if (mtbColrToDispatch != null) { - numCnfDaPrelevare = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(numCnfWithdrawRows.getBigDecimalValue()); - qtaColDaPrelevare = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(qtaColWithdrawRows.getBigDecimalValue()); -// qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnfCollo(); + if(UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) { + numCnfDaPrelevare = mtbColrToDispatch.getNumCnf(); + qtaColDaPrelevare = mtbColrToDispatch.getQtaCol(); + qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf(); + } else { + numCnfDaPrelevare = numCnfDaEvadere; + qtaColDaPrelevare = qtaDaEvadere; + qtaCnfDaPrelevare = qtaCnfDaEvadere; + } + totalQtaAvailable = mtbColrToDispatch.getQtaCol(); totalNumCnfAvailable = mtbColrToDispatch.getNumCnf(); + qtaCnfAvailable = mtbColrToDispatch.getQtaCnf(); if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO)) @@ -640,9 +624,20 @@ public class SpedizioneViewModel { if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO)) qtaColDaPrelevare = BigDecimal.ZERO; - } + } //Oppure le info del barcode scansionato - this.sendOnItemDispatched(pickingObjectDTO.getMtbAart(), totalQtaOrd, totalNumCnfOrd, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable); + this.sendOnItemDispatched( + pickingObjectDTO.getMtbAart(), + totalQtaOrd, + totalNumCnfOrd, + qtaCnfOrd, + qtaColDaPrelevare, + numCnfDaPrelevare, + qtaCnfDaPrelevare, + totalQtaAvailable, + totalNumCnfAvailable, + qtaCnfAvailable, + mCanOverflowOrderQuantity); } @@ -667,16 +662,13 @@ public class SpedizioneViewModel { mtbColt.generaFiltroOrdineFromDTO(mDefaultFiltroOrdine); ColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { - mtbColt .setNumCollo(value.getNumCollo()) .setDataCollo(value.getDataColloS()) .setMtbColr(new ObservableArrayList<>()); - this.mCurrentMtbColt = mtbColt; - mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini); if (onComplete != null) onComplete.run(); @@ -686,7 +678,7 @@ public class SpedizioneViewModel { } public void resetMatchedRows() { - for(PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) { + for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) { pickingObjectDTO .setTempPickData(null) .setHidden(false); @@ -718,7 +710,17 @@ public class SpedizioneViewModel { void onError(Exception ex); - void onItemDispatched(MtbAart mtbAart, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable); + void onItemDispatched(MtbAart mtbAart, + BigDecimal totalQtaOrd, + BigDecimal totalNumCnfOrd, + BigDecimal qtaCnfOrd, + BigDecimal totalQtaToBeTaken, + BigDecimal totalNumCnfToBeTaken, + BigDecimal qtaCnfToBeTaken, + BigDecimal totalQtaAvailable, + BigDecimal totalNumCnfAvailable, + BigDecimal qtaCnfAvailable, + boolean canOverflowOrderQuantity); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/model/PickDataDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/model/PickDataDTO.java index 77f3c79f..c75088df 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/model/PickDataDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/model/PickDataDTO.java @@ -1,10 +1,17 @@ package it.integry.integrywmsnative.gest.spedizione_new.model; +import java.math.BigDecimal; + import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; +import it.integry.integrywmsnative.core.rest.model.Ean128Model; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityString; public class PickDataDTO { private MtbColt sourceMtbColt; + private ManualPickDTO manualPickDTO; public MtbColt getSourceMtbColt() { return sourceMtbColt; @@ -14,4 +21,87 @@ public class PickDataDTO { this.sourceMtbColt = sourceMtbColt; return this; } + + public ManualPickDTO getManualPickDTO() { + return manualPickDTO; + } + + public PickDataDTO setManualPickDTO(ManualPickDTO manualPickDTO) { + this.manualPickDTO = manualPickDTO; + return this; + } + + public static PickDataDTO fromEan128(Ean128Model ean128Model) { + if (ean128Model == null) return null; + + PickDataDTO pickDataDTO = new PickDataDTO(); + ManualPickDTO manualPickDTO = new ManualPickDTO(); + pickDataDTO.setManualPickDTO(manualPickDTO); + + String partitaMag = ean128Model.BatchLot; + String dataScad = !UtilityString.isNullOrEmpty(ean128Model.BestBefore) ? ean128Model.BestBefore : ean128Model.Expiry; + + if (!UtilityString.isNullOrEmpty(partitaMag)) { + MtbPartitaMag mtbPartitaMag = new MtbPartitaMag() + .setPartitaMag(partitaMag) + .setDataScad(UtilityDate.recognizeDateWithExceptionHandler(dataScad)); + + manualPickDTO.setMtbPartitaMag(mtbPartitaMag); + } + + if (ean128Model.Count != null && ean128Model.Count > 0) { + manualPickDTO.setNumCnf(new BigDecimal(ean128Model.Count)); + } + + if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) { + manualPickDTO.setQtaTot(new BigDecimal(ean128Model.NetWeightKg)); + manualPickDTO.setEanPeso(true); + } + + return pickDataDTO; + } + + public static class ManualPickDTO { + + private MtbPartitaMag mtbPartitaMag; + private BigDecimal numCnf; + private BigDecimal qtaTot; + private boolean eanPeso; + + public MtbPartitaMag getMtbPartitaMag() { + return mtbPartitaMag; + } + + public ManualPickDTO setMtbPartitaMag(MtbPartitaMag mtbPartitaMag) { + this.mtbPartitaMag = mtbPartitaMag; + return this; + } + + public BigDecimal getNumCnf() { + return numCnf; + } + + public ManualPickDTO setNumCnf(BigDecimal numCnf) { + this.numCnf = numCnf; + return this; + } + + public BigDecimal getQtaTot() { + return qtaTot; + } + + public ManualPickDTO setQtaTot(BigDecimal qtaTot) { + this.qtaTot = qtaTot; + return this; + } + + public boolean isEanPeso() { + return eanPeso; + } + + public ManualPickDTO setEanPeso(boolean eanPeso) { + this.eanPeso = eanPeso; + return this; + } + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/view/ArticoliInColloBottomSheetMtbColrAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/view/ArticoliInColloBottomSheetMtbColrAdapter.java index bc9df9cf..72a1abe0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/view/ArticoliInColloBottomSheetMtbColrAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/view/ArticoliInColloBottomSheetMtbColrAdapter.java @@ -49,7 +49,7 @@ public class ArticoliInColloBottomSheetMtbColrAdapter extends BaseAdapter { binding.setMtbColr(mtbColr); //Setting qty with unt_mis - if(!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().getFlagQtaCnfFissaBoolean())){ + if(!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())){ String text = UtilityNumber.decimalToString(mtbColr.getQtaCol()); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java index 0dcd2d11..37d9bbff 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java @@ -149,7 +149,7 @@ public class ArticoliInColloBottomSheetViewModel { //Setting qty with unt_mis if(clickedItem.getMtbAart() != null) { - if (clickedItem.getMtbAart().getFlagQtaCnfFissaBoolean()) { + if (clickedItem.getMtbAart().isFlagQtaCnfFissaBoolean()) { mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + (!UtilityString.isNullOrEmpty(clickedItem.getMtbAart().getUntMis()) ? ("" + clickedItem.getMtbAart().getUntMis()) : "")); } else { mBindings.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getNumCnf()) + " " + mContext.getString(R.string.unt_mis_col)); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ListAdapter.java index 8a5e8474..e13651ba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ListAdapter.java @@ -57,7 +57,7 @@ public class DialogBasketLU_Page2_ListAdapter extends RecyclerView.Adapter 0 ? mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis().get(0) : null; + if(!(mtbUntMis != null && mtbUntMis.isFlagDig())) { + bindings.inputQtaTotText.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL); + } + return bindings.getRoot(); } + @Override + public void onStart() { + super.onStart(); + this.mViewModel.init(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java index 115a92fb..01da3a3e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -10,6 +10,7 @@ public class DialogInputQuantityV2DTO { private BigDecimal totalQtaOrd; private BigDecimal totalNumCnfOrd; + private BigDecimal qtaCnfOrd; private BigDecimal totalQtaToBeTaken; private BigDecimal totalNumCnfToBeTaken; @@ -17,6 +18,9 @@ public class DialogInputQuantityV2DTO { private BigDecimal totalQtaAvailable; private BigDecimal totalNumCnfAvailable; + private BigDecimal qtaCnfAvailable; + + private boolean canOverflowOrderQuantity; public MtbAart getMtbAart() { return mtbAart; @@ -45,6 +49,15 @@ public class DialogInputQuantityV2DTO { return this; } + public BigDecimal getQtaCnfOrd() { + return qtaCnfOrd; + } + + public DialogInputQuantityV2DTO setQtaCnfOrd(BigDecimal qtaCnfOrd) { + this.qtaCnfOrd = qtaCnfOrd; + return this; + } + public BigDecimal getTotalQtaToBeTaken() { return totalQtaToBeTaken; } @@ -89,4 +102,22 @@ public class DialogInputQuantityV2DTO { this.totalNumCnfAvailable = totalNumCnfAvailable; return this; } + + public BigDecimal getQtaCnfAvailable() { + return qtaCnfAvailable; + } + + public DialogInputQuantityV2DTO setQtaCnfAvailable(BigDecimal qtaCnfAvailable) { + this.qtaCnfAvailable = qtaCnfAvailable; + return this; + } + + public boolean isCanOverflowOrderQuantity() { + return canOverflowOrderQuantity; + } + + public DialogInputQuantityV2DTO setCanOverflowOrderQuantity(boolean canOverflowOrderQuantity) { + this.canOverflowOrderQuantity = canOverflowOrderQuantity; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 9bd4b29c..35318f87 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -1,11 +1,11 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; -import androidx.databinding.Observable; import androidx.databinding.ObservableField; import java.math.BigDecimal; import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityObservable; public class DialogInputQuantityV2ViewModel { @@ -14,6 +14,7 @@ public class DialogInputQuantityV2ViewModel { public BigDecimal totalQtaOrd; public BigDecimal totalNumCnfOrd; + public BigDecimal qtaCnfOrd; public BigDecimal totalQtaToBeTaken; public BigDecimal totalNumCnfToBeTaken; @@ -21,11 +22,13 @@ public class DialogInputQuantityV2ViewModel { public BigDecimal totalQtaAvailable; public BigDecimal totalNumCnfAvailable; + public BigDecimal qtaCnfAvailable; public ObservableField currentNumCnf = new ObservableField<>(); public ObservableField currentQtaCnf = new ObservableField<>(); public ObservableField currentQtaTot = new ObservableField<>(); + private boolean canOverflowOrderQuantity; public void init() { @@ -39,13 +42,16 @@ public class DialogInputQuantityV2ViewModel { this.currentQtaTot.set(totalQtaToBeTaken != null ? totalQtaToBeTaken : this.mtbAart.get().getQtaCnf()); UtilityObservable.addPropertyChanged(this.currentQtaTot, this::onCurrentQtaTotChanged); + + } - public void setMtbAart(MtbAart mtbAart) { + public DialogInputQuantityV2ViewModel setMtbAart(MtbAart mtbAart) { this.mtbAart.set(mtbAart); + return this; } public DialogInputQuantityV2ViewModel setTotalQtaOrd(BigDecimal totalQtaOrd) { @@ -58,6 +64,11 @@ public class DialogInputQuantityV2ViewModel { return this; } + public DialogInputQuantityV2ViewModel setQtaCnfOrd(BigDecimal qtaCnfOrd) { + this.qtaCnfOrd = qtaCnfOrd; + return this; + } + public DialogInputQuantityV2ViewModel setTotalQtaToBeTaken(BigDecimal totalQtaToBeTaken) { this.totalQtaToBeTaken = totalQtaToBeTaken; return this; @@ -83,11 +94,25 @@ public class DialogInputQuantityV2ViewModel { return this; } + public DialogInputQuantityV2ViewModel setQtaCnfAvailable(BigDecimal qtaCnfAvailable) { + this.qtaCnfAvailable = qtaCnfAvailable; + return this; + } + + public DialogInputQuantityV2ViewModel setCanOverflowOrderQuantity(boolean canOverflowOrderQuantity) { + this.canOverflowOrderQuantity = canOverflowOrderQuantity; + return this; + } + + private void onCurrentNumCnfChanged(BigDecimal newValue) { - String a = ""; + if(newValue == null) return; + + if(UtilityBigDecimal.greaterThan(newValue, totalNumCnfAvailable)) newValue = totalNumCnfAvailable; + this.currentQtaTot.set(newValue.multiply(this.currentQtaCnf.get())); } private void onCurrentQtaCnfChanged(BigDecimal newValue) { @@ -95,6 +120,35 @@ public class DialogInputQuantityV2ViewModel { } private void onCurrentQtaTotChanged(BigDecimal newValue) { - String a = ""; + if(newValue == null) return; + + newValue = UtilityBigDecimal.getLowerBetween(newValue, totalNumCnfAvailable); + + //Se è piu' grande della qta da prelevare e non posso aggiungere qta extra allora ricalcolo + if(UtilityBigDecimal.greaterThan(newValue, totalQtaOrd) && !canOverflowOrderQuantity) { + + if(mtbAart.get().isFlagQtaCnfFissaBoolean()) { + //Ricalcolo num cnf + + } else { + //Ricalcolo qta cnf + + } + + } else { + if(mtbAart.get().isFlagQtaCnfFissaBoolean()) { + //Ricalcolo num cnf + } else { + //Ricalcolo qta cnf + } + } } + + + +// private BigDecimal retrieveCorrectQtaCnf() { +// if(UtilityBigDecimal.greaterThan(totalNumCnfAvailable, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(totalQtaAvailable, BigDecimal.ZERO)) { +// +// } +// } } diff --git a/app/src/main/res/drawable/ic_photo_camera_black_24dp.xml b/app/src/main/res/drawable/ic_photo_camera_black_24dp.xml new file mode 100644 index 00000000..c872f167 --- /dev/null +++ b/app/src/main/res/drawable/ic_photo_camera_black_24dp.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/layout/activity_spedizione.xml b/app/src/main/res/layout/activity_spedizione.xml index 3541aa0a..9a50d023 100644 --- a/app/src/main/res/layout/activity_spedizione.xml +++ b/app/src/main/res/layout/activity_spedizione.xml @@ -73,6 +73,19 @@ android:tint="@color/colorPrimaryGray" android:visibility="@{BuildConfig.DEBUG ? View.VISIBLE : View.GONE}"/> + + + + diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index e31d0ef1..2b33108a 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -382,6 +382,7 @@ @@ -420,10 +421,11 @@ + android:inputType="numberDecimal" />