diff --git a/app/build.gradle b/app/build.gradle index c27b4447..618cf942 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 161 - def appVersionName = '1.13.15' + def appVersionCode = 162 + def appVersionName = '1.13.16' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 9a38315f..4e2d206f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -18,6 +18,8 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComp import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule; import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module; // Definition of the Application graph @Singleton @@ -31,7 +33,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; RettificaGiacenzeModule.class, SpedizioneModule.class, AccettazionePickingModule.class, - PickingResiModule.class}) + PickingResiModule.class, + DialogInputQuantityV2Module.class}) public interface MainApplicationComponent { MainActivityComponent.Factory mainActivityComponent(); @@ -42,5 +45,6 @@ public interface MainApplicationComponent { SpedizioneComponent.Factory spedizioneComponent(); AccettazionePickingComponent.Factory accettazionePickingComponent(); PickingResiComponent.Factory pickingResiComponent(); + DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); } 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 dd96450d..495e0ea1 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 @@ -1,23 +1,6 @@ package it.integry.integrywmsnative.core.di; -import androidx.annotation.ColorRes; -import androidx.annotation.IdRes; -import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView; -import androidx.appcompat.widget.LinearLayoutCompat; -import androidx.core.content.res.ResourcesCompat; -import androidx.databinding.BindingAdapter; -import androidx.databinding.BindingConversion; -import androidx.constraintlayout.widget.Guideline; - -import com.google.android.material.textfield.TextInputEditText; -import com.google.android.material.textfield.TextInputLayout; - -import androidx.core.util.Pair; -import androidx.appcompat.widget.AppCompatCheckBox; -import androidx.appcompat.widget.AppCompatTextView; - import android.app.DatePickerDialog; -import android.content.Context; import android.content.res.ColorStateList; import android.util.Log; import android.view.View; @@ -25,10 +8,25 @@ import android.widget.AutoCompleteTextView; import android.widget.CheckBox; import android.widget.EditText; import android.widget.FrameLayout; -import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; +import androidx.annotation.ColorRes; +import androidx.appcompat.widget.AppCompatCheckBox; +import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.appcompat.widget.LinearLayoutCompat; +import androidx.constraintlayout.widget.Guideline; +import androidx.core.content.res.ResourcesCompat; +import androidx.core.util.Pair; +import androidx.databinding.BindingAdapter; +import androidx.databinding.BindingConversion; +import androidx.databinding.Observable; +import androidx.databinding.ObservableField; + +import com.google.android.material.textfield.TextInputEditText; +import com.google.android.material.textfield.TextInputLayout; + import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -37,15 +35,10 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; -import androidx.databinding.Observable; -import androidx.databinding.ObservableField; -import androidx.lifecycle.MutableLiveData; - import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; -import it.integry.integrywmsnative.core.utility.UtilityContext; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -386,7 +379,7 @@ public class Converters { } - @BindingAdapter({"app:visibility"}) + @BindingAdapter({"visibility"}) public static void bindViewVisibility(View view, final BindableBoolean bindableBoolean) { if (view.getTag(R.id.bound_observable) != bindableBoolean) { view.setTag(R.id.bound_observable, bindableBoolean); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean13PesoModel.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean13PesoModel.java index 3263a3d7..2677d166 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean13PesoModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean13PesoModel.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.model; public class Ean13PesoModel { private String precode; + //TODO: Change to bigdecimal private Float peso; public String getPrecode() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java index 12fed48c..a026c015 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java @@ -412,7 +412,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta .anyMatch(x -> !x.isHidden()); } - private RunnableArgs onScanSuccessful = data -> { + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); this.openProgress(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java index cdc4fa7b..d929e473 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java @@ -2,18 +2,18 @@ package it.integry.integrywmsnative.gest.lista_bancali; import android.content.Context; import android.content.Intent; -import androidx.databinding.DataBindingUtil; -import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; +import androidx.databinding.DataBindingUtil; + import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.BaseActivity; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.data_cache.DataCache; +import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity; import it.integry.integrywmsnative.gest.lista_bancali.viewmodel.ListaBancaliViewModel; @@ -25,6 +25,7 @@ public class ListaBancaliActivity extends BaseActivity { private static final String CanRecoverUL = "canRecoverUL"; private static final String PrinterType = "printerType"; private static final String ReportName = "reportName"; + private static final String FlagOnlyResiduo = "flagOnlyResiduo"; } public ActivityListaBancaliBinding bindings; @@ -34,6 +35,7 @@ public class ListaBancaliActivity extends BaseActivity { private boolean mCanRecoverUl; private PrinterRESTConsumer.Type mPrinterType; private String mReportName; + private boolean mFlagOnlyResiduo; private static final int PICK_UL_REQUEST = 1; // The request code @@ -54,10 +56,13 @@ public class ListaBancaliActivity extends BaseActivity { String reportNameKey = DataCache.addItem(reportName); myIntent.putExtra(Key.ReportName, reportNameKey); + String flagOnlyResiduoKey = DataCache.addItem(true); + myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey); + return myIntent; } - public static Intent createIntent(Context context, ArrayList items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType) { + public static Intent createIntent(Context context, ArrayList items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) { Intent myIntent = new Intent(context, ListaBancaliActivity.class); String mtbColtsKey = DataCache.addItem(items); @@ -69,6 +74,9 @@ public class ListaBancaliActivity extends BaseActivity { String printerTypeKey = DataCache.addItem(printerType); myIntent.putExtra(Key.PrinterType, printerTypeKey); + String flagOnlyResiduoKey = DataCache.addItem(onlyResiduo); + myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey); + return myIntent; } @@ -81,9 +89,10 @@ public class ListaBancaliActivity extends BaseActivity { mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); + mFlagOnlyResiduo = DataCache.retrieveItem(getIntent().getStringExtra(Key.FlagOnlyResiduo)); List mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey)); - mViewModel = new ListaBancaliViewModel(this, mtbColts); + mViewModel = new ListaBancaliViewModel(this, mtbColts, mFlagOnlyResiduo); setSupportActionBar(this.bindings.toolbar); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java index adb0fb3f..f43c2757 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java @@ -26,11 +26,15 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked { private MainListListaColliAdapter mAdapter; - public ListaBancaliViewModel(ListaBancaliActivity context, List mtbColts){ + private boolean mLoadOnlyResiduo; + + public ListaBancaliViewModel(ListaBancaliActivity context, List mtbColts, boolean loadOnlyResiduo){ mContext = context; mMtbColts = new ObservableArrayList<>(); mMtbColts.addAll(mtbColts); + this.mLoadOnlyResiduo = loadOnlyResiduo; + initRecyclerView(); } @@ -56,7 +60,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked { final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); try { - ColliMagazzinoRESTConsumer.getByTestataStatic(item, true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getByTestataStatic(item, mLoadOnlyResiduo, false, mtbColt -> { ObservableArrayList mtbColrObservableArrayList = new ObservableArrayList<>(); mtbColrObservableArrayList.addAll(mtbColt.getMtbColr()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index a00205cb..ed26ed57 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -191,7 +191,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, mAdapter = null; } - private RunnableArgs onScanSuccessful = data -> { + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); this.openProgress(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java index 77d1d350..7c78b0d1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java @@ -98,7 +98,7 @@ public class ProdRecuperoMaterialeViewModel { - private RunnableArgs onScanSuccessful = data -> { + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index e10d66bf..2f3872e1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -75,7 +75,7 @@ public class DialogScanLisA { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 58b72f48..4e8f5fca 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -545,7 +545,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo } - private RunnableArgs onScanSuccessful = data -> { + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); this.openProgress(); @@ -601,7 +601,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo ArrayList createdMtbColts = this.mViewmodel.getCreatedMtbColts(); - Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, PrinterRESTConsumer.Type.PRIMARIA); + Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, PrinterRESTConsumer.Type.PRIMARIA, false); this.startActivityForResult(myIntent, PICK_UL_REQUEST); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index a52f1252..0d6b94d3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -103,12 +103,12 @@ public class SpedizioneViewModel { private final PrinterRESTConsumer mPrinterRESTConsumer; @Inject - public SpedizioneViewModel( ArticoloRESTConsumer articoloRESTConsumer, - BarcodeRESTConsumer barcodeRESTConsumer, - ColliDataRecoverService colliDataRecoverService, - OrdiniRESTConsumer ordiniRESTConsumer, - ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - PrinterRESTConsumer printerRESTConsumer) { + public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + ColliDataRecoverService colliDataRecoverService, + OrdiniRESTConsumer ordiniRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, + PrinterRESTConsumer printerRESTConsumer) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliDataRecoverService = colliDataRecoverService; @@ -298,7 +298,8 @@ public class SpedizioneViewModel { } private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete) { - if (this.mListener != null) mListener.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete); + if (this.mListener != null) + mListener.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete); } private void sendLUPrintRequest(RunnableArgs onComplete) { @@ -489,7 +490,7 @@ public class SpedizioneViewModel { mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { - if(mtbColt.getSegno() != -1) { + if (mtbColt.getSegno() != -1) { searchArtFromUL(mtbColt, onComplete); } else this.sendError(new InvalidLUException()); } else { @@ -606,7 +607,7 @@ public class SpedizioneViewModel { .filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) && - (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag())))) + (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag())))) .forEach(cloneMtbColrs::remove); cloneMtbColt.setMtbColr(cloneMtbColrs); @@ -708,13 +709,14 @@ public class SpedizioneViewModel { if (mtbColrToDispatch != null) { - if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) { + if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere) || UtilityBigDecimal.equalsTo(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) { numCnfDaPrelevare = mtbColrToDispatch.getNumCnf(); qtaColDaPrelevare = mtbColrToDispatch.getQtaCol(); } else { numCnfDaPrelevare = numCnfDaEvadere; qtaColDaPrelevare = qtaDaEvadere; } + qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf(); @@ -744,8 +746,8 @@ public class SpedizioneViewModel { if (mtbAart.isFlagQtaCnfFissaBoolean()) { qtaCnfDaPrelevare = mtbAart.getQtaCnf(); - if(manualPickDTO.isEanPeso()) { - if(mtbAart.getUntMisRifPeso() == MtbAart.UntMisRifPesoEnum.M) { + if (manualPickDTO.isEanPeso()) { + if (mtbAart.getUntMisRifPeso() == MtbAart.UntMisRifPesoEnum.M) { if (UtilityBigDecimal.equalsTo(mtbAart.getPesoKg(), BigDecimal.ZERO)) { this.sendError(new InvalidPesoKGException()); } else { @@ -761,8 +763,9 @@ public class SpedizioneViewModel { if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) { numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); - if(!mtbAart.isFlagQtaCnfFissaBoolean()) { - if(UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO)) numCnfDaPrelevare = BigDecimal.ONE; + if (!mtbAart.isFlagQtaCnfFissaBoolean()) { + if (UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO)) + numCnfDaPrelevare = BigDecimal.ONE; qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); } } else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) { @@ -853,7 +856,7 @@ public class SpedizioneViewModel { initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf); } - if(numCnfDaPrelevare == null && qtaColDaPrelevare == null && initialNumCnf == null && initialQtaTot == null) { + if (numCnfDaPrelevare == null && qtaColDaPrelevare == null && initialNumCnf == null && initialQtaTot == null) { initialNumCnf = BigDecimal.ONE; initialQtaCnf = mtbAart.getQtaCnf(); initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf); @@ -899,7 +902,7 @@ public class SpedizioneViewModel { PickingObjectDTO pickingObjectDTO = null; - if(optionalPickingObjectDTO.isPresent()) { + if (optionalPickingObjectDTO.isPresent()) { pickingObjectDTO = optionalPickingObjectDTO.get(); } @@ -915,7 +918,7 @@ public class SpedizioneViewModel { BigDecimal qtaDaEvadere = null; BigDecimal qtaCnfDaEvadere = null; - if(finalPickingObjectDTO != null) { + if (finalPickingObjectDTO != null) { totalQtaOrd = finalPickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); totalNumCnfOrd = finalPickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd(); qtaCnfOrd = finalPickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd(); @@ -954,12 +957,14 @@ public class SpedizioneViewModel { if (mtbColrRifs != null && mtbColrRifs.size() > 0) { //TODO: Da capire se รจ necessario controllare anche il cod_jcom - mtbColrRif = Stream.of(mtbColrRifs) + Optional optionalMtbColr = Stream.of(mtbColrRifs) .filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToEdit.getCodMart()) && UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToEdit.getCodCol()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToEdit.getCodTagl()) && UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToEdit.getPartitaMag())) - .single(); + .findSingle(); + + mtbColrRif = optionalMtbColr.isPresent() ? optionalMtbColr.get() : null; } @@ -969,6 +974,9 @@ public class SpedizioneViewModel { totalNumCnfAvailable = mtbColrRif.getNumCnf(); qtaCnfAvailable = mtbColrRif.getQtaCnf(); + totalNumCnfAvailable = totalNumCnfAvailable.add(mtbColrToEdit.getNumCnf()); + totalQtaAvailable = totalQtaAvailable.add(mtbColrToEdit.getQtaCol()); + } else { totalQtaAvailable = mtbColrToEdit.getQtaCol(); @@ -977,9 +985,6 @@ public class SpedizioneViewModel { } - totalNumCnfAvailable = totalNumCnfAvailable.add(mtbColrToEdit.getNumCnf()); - totalQtaAvailable = totalQtaAvailable.add(mtbColrToEdit.getQtaCol()); - if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO)) numCnfDaPrelevare = BigDecimal.ZERO; @@ -1103,7 +1108,7 @@ public class SpedizioneViewModel { pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null; if (mtbColrToDispatch != null) { - if(UtilityString.isNullOrEmpty(mCurrentMtbColt.getCodTcol())) + if (UtilityString.isNullOrEmpty(mCurrentMtbColt.getCodTcol())) mCurrentMtbColt.setCodTcol(UtilityString.empty2null(pickingObjectDTO.getTempPickData().getSourceMtbColt().getCodTcol())); mtbColr @@ -1114,13 +1119,13 @@ public class SpedizioneViewModel { .setDataColloRif(UtilityString.empty2null(mtbColrToDispatch.getDataColloS())); - if(mtbColrToDispatch.getPesoNettoKg() != null) { + if (mtbColrToDispatch.getPesoNettoKg() != null) { //Proporzione BigDecimal pesoNettoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoNettoKg()), mtbColrToDispatch.getQtaCol()); mtbColr.setPesoNettoKg(pesoNettoKg); } - if(mtbColrToDispatch.getPesoLordoKg() != null) { + if (mtbColrToDispatch.getPesoLordoKg() != null) { //Proporzione BigDecimal pesoLordoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoLordoKg()), mtbColrToDispatch.getQtaCol()); mtbColr.setPesoLordoKg(pesoLordoKg); @@ -1157,7 +1162,7 @@ public class SpedizioneViewModel { } - if(UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { + if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { resetMatchedRows(); this.sendOnLoadingEnded(); @@ -1226,7 +1231,7 @@ public class SpedizioneViewModel { .filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate)) .findSingle(); - if(pickingObjectDTO.isPresent()) { + if (pickingObjectDTO.isPresent()) { pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate); pickingObjectDTO.get().getWithdrawMtbColrs().add(mtbColr); } @@ -1270,7 +1275,7 @@ public class SpedizioneViewModel { .filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete)) .findSingle(); - if(pickingObjectDTO.isPresent()) { + if (pickingObjectDTO.isPresent()) { pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete); } @@ -1401,9 +1406,11 @@ public class SpedizioneViewModel { } private void postCloseOperations(List mtbColtList) { - this.mColliRegistrati.addAll(mtbColtList); + Stream.of(mtbColtList) + .filter(x -> !this.mColliRegistrati.contains(x)) + .forEach(x -> this.mColliRegistrati.add(x)); - for(MtbColt mtbColt : mtbColtList) { + for (MtbColt mtbColt : mtbColtList) { Stream.of(mTestateOrdini) .filter(x -> x.getNumOrd().equals(mtbColt.getNumOrd()) && x.getDataOrdD().equals(mtbColt.getDataOrdD()) && x.getGestioneEnum() == mtbColt.getGestioneEnum()) .forEach(x -> x.setExistColloBoolean(true)); @@ -1437,7 +1444,7 @@ public class SpedizioneViewModel { .findFirst(); - if(optionalMtbColrReference.isPresent()) { + if (optionalMtbColrReference.isPresent()) { //looking for real refMtbColr instance MtbColr mtbColr = optionalMtbColrReference.get(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java index db114b7b..d1068e4b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java @@ -101,6 +101,10 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size())); } + public void collapseMtbColrActionSheet(){ + this.mBinding.bottomSheetMtbColrEdit.collapse(); + } + public BottomSheetFragmentLUContentView setListener(Listener listener) { this.mListener = listener; return this; diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java index 44f2f38e..9438d19e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java @@ -146,7 +146,7 @@ public class DialogAskPositionOfLU { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java index de1e8a77..6d09ccba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java @@ -138,7 +138,7 @@ public class DialogChooseArtsFromListaArts { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java index 9936b842..88560468 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java @@ -409,7 +409,7 @@ public class DialogInputQuantity { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); if(UtilityBarcode.isEanPeso(data)){ diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java index 9035a88b..50776e4b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; +import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.res.ColorStateList; @@ -27,16 +28,26 @@ import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; import java.util.Date; +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbUntMis; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityObservable; +import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener { - private DialogInputQuantityV2ViewModel mViewModel; + @Inject + DialogInputQuantityV2ViewModel mViewModel; private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; private RunnableArgss mOnComplete; private Runnable mOnAbort; @@ -60,6 +71,9 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput private DialogInputQuantityV2Binding mBindings; private boolean mEnableDataCallback = true; + private int mBarcodeScannerIstanceID; + private Dialog mCurrentProgress; + public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete, onAbort); } @@ -74,6 +88,8 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog); + + this.initBarcode(); } @Nullable @@ -85,7 +101,12 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput mBindings.toolbar.setTitle("Inserimento articolo"); - this.mViewModel = new DialogInputQuantityV2ViewModel() + MainApplication.appComponent + .dialogInputQuantityV2Component() + .create() + .inject(this); + + this.mViewModel .setMtbAart(mDialogInputQuantityV2DTO.getMtbAart()) .setInitialNumCnf(mDialogInputQuantityV2DTO.getInitialNumCnf()) .setInitialQtaCnf(mDialogInputQuantityV2DTO.getInitialQtaCnf()) @@ -114,6 +135,35 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput return mBindings.getRoot(); } + private void initBarcode() { + mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessful) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(this.context, ex, false))); + } + + private final RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); + + this.openProgress(); + + this.mViewModel.processBarcodeDTO(data, () -> { + BarcodeManager.enable(); + this.closeProgress(); + }); + }; + + private void openProgress() { + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + } + } + + private void closeProgress() { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + } public void save() { if (this.mViewModel.validate()) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Component.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Component.java new file mode 100644 index 00000000..79e617d0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Component.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogInputQuantityV2Component { + + @Subcomponent.Factory + interface Factory { + DialogInputQuantityV2Component create(); + } + + void inject(DialogInputQuantityV2 dialogInputQuantityV2); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java new file mode 100644 index 00000000..2c3133d3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; + +@Module(subcomponents = DialogInputQuantityV2Component.class) +public class DialogInputQuantityV2Module { + + @Provides + DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { + return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer); + } + +} 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 d544eb4c..5c18c0d1 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 @@ -5,8 +5,15 @@ import androidx.databinding.ObservableField; import java.math.BigDecimal; import java.util.Date; +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidBatchLotException; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidExpireDateException; @@ -55,6 +62,13 @@ public class DialogInputQuantityV2ViewModel { private Listener mListener; + private final BarcodeRESTConsumer mBarcodeRESTConsumer; + + @Inject + public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { + this.mBarcodeRESTConsumer = barcodeRESTConsumer; + } + public void init() { if(this.initialNumCnf != null && this.initialQtaTot != null && this.initialQtaCnf != null) { this.internalNumCnf = this.initialNumCnf; @@ -87,6 +101,61 @@ public class DialogInputQuantityV2ViewModel { this.mListener.onDataChanged(); } + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + if(UtilityBarcode.isEanPeso(barcodeScanDTO)) { + Ean13PesoModel ean13PesoModel; + + try { + ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue()); + } catch (Exception ex) { + this.mListener.onError(ex); + onComplete.run(); + return; + } + + if(this.mtbAart.get() != null && this.mtbAart.get().getBarCode() != null && ean13PesoModel.getPrecode().contains(this.mtbAart.get().getBarCode())) { + this.setQtaTot(BigDecimal.valueOf(ean13PesoModel.getPeso())); + } + + onComplete.run(); + } else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + + if(ean128Model == null) { + onComplete.run(); + return; + } + + if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) { + this.setPartitaMag(ean128Model.BatchLot); + } + + try { + if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){ + this.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore)); + } else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) { + this.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry)); + } + } catch (Exception ex) { + this.mListener.onError(ex); + } + + if(ean128Model.Count != null && ean128Model.Count > 0) { + this.setNumCnf(BigDecimal.valueOf(ean128Model.Count)); + } else if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) { + this.setQtaTot(BigDecimal.valueOf(ean128Model.NetWeightKg)); + } + + this.mListener.onDataChanged(); + onComplete.run(); + + }, ex -> { + this.mListener.onError(ex); + onComplete.run(); + }); + } + } + public String getPartitaMag() { return internalPartitaMag; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java index 6cefad70..2e20c562 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java @@ -82,7 +82,7 @@ public class DialogScanArt { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java index 23e8b32f..192f2bf2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java @@ -126,7 +126,7 @@ public class DialogScanOrCreateLU { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); diff --git a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml index 05bfb19f..1ffdffb4 100644 --- a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml +++ b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml @@ -390,7 +390,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="#99000000" - android:visibility="gone" /> + android:visibility="gone" + singleClick="@{() -> view.collapseMtbColrActionSheet()}"/> - + + + + + + + + + + + type="it.integry.integrywmsnative.core.model.MtbColr" /> - - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + - - - - - - - - - - - + android:paddingStart="12dp" + android:paddingEnd="12dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"> - + + + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/art_detail"> - + android:backgroundTint="@color/green_600" + android:orientation="horizontal" + android:padding="2dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/lista_contenuto_bancale_list_model.xml b/app/src/main/res/layout/lista_contenuto_bancale_list_model.xml index d8fb6884..89751e87 100644 --- a/app/src/main/res/layout/lista_contenuto_bancale_list_model.xml +++ b/app/src/main/res/layout/lista_contenuto_bancale_list_model.xml @@ -1,131 +1,329 @@ - + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + android:paddingStart="12dp" + android:paddingEnd="12dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"> - - - - - - + android:textSize="16sp" + android:textStyle="bold" + tools:text="280.45\nCONF" /> - - - - - - - - + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/art_detail"> - + android:backgroundTint="@color/green_600" + android:orientation="horizontal" + android:padding="2dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +