From e67356c01ffee74b201538e56f42e44b8d99900e Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 6 Jun 2019 10:39:53 +0200 Subject: [PATCH] Implementata lettura articoli in Picking Libero --- .../integrywmsnative/core/di/Converters.java | 44 +++ .../viewmodel/PickingLiberoViewModel.java | 119 +++++++- .../dialogs/DialogVenditaFiltroAvanzato.java | 264 ++++++++++++++---- .../res/layout/dialog_ask_cliente__page1.xml | 2 +- .../res/layout/dialog_ask_cliente__page2.xml | 2 +- .../layout/dialog_vendita_filtro_avanzato.xml | 231 +++++++++------ ...g_vendita_filtro_avanzato__single_item.xml | 8 + .../fragment_main_rettifica_giacenze.xml | 2 +- 8 files changed, 533 insertions(+), 139 deletions(-) create mode 100644 app/src/main/res/layout/dialog_vendita_filtro_avanzato__single_item.xml 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 25e7fedd..2f9d866e 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 @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.di; import androidx.annotation.ColorRes; import androidx.annotation.IdRes; +import androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView; import androidx.core.content.res.ResourcesCompat; import androidx.databinding.BindingAdapter; import androidx.databinding.BindingConversion; @@ -14,6 +15,7 @@ import androidx.appcompat.widget.AppCompatTextView; import android.content.res.ColorStateList; import android.util.Log; import android.view.View; +import android.widget.AutoCompleteTextView; import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; @@ -82,6 +84,48 @@ public class Converters { } } + @BindingAdapter("app:binding") + public static void bindAutoCompleteTextView(AutoCompleteTextView view, final BindableString bindableString) { + Pair pair = (Pair) view.getTag(R.id.bound_observable); + if (pair == null || pair.first != bindableString) { + if (pair != null) { + view.removeTextChangedListener(pair.second); + } + TextWatcherAdapter watcher = new TextWatcherAdapter() { + @Override public void onTextChanged(CharSequence s, int start, int before, int count) { + bindableString.set(s.toString()); + } + }; + view.setTag(R.id.bound_observable, new Pair<>(bindableString, watcher)); + view.addTextChangedListener(watcher); + } + String newValue = bindableString.get(); + if (!view.getText().toString().equals(newValue)) { + view.setText(newValue); + } + } + + @BindingAdapter("app:binding") + public static void bindAutoCompleteTextView(AppCompatMultiAutoCompleteTextView view, final BindableString bindableString) { + Pair pair = (Pair) view.getTag(R.id.bound_observable); + if (pair == null || pair.first != bindableString) { + if (pair != null) { + view.removeTextChangedListener(pair.second); + } + TextWatcherAdapter watcher = new TextWatcherAdapter() { + @Override public void onTextChanged(CharSequence s, int start, int before, int count) { + bindableString.set(s.toString()); + } + }; + view.setTag(R.id.bound_observable, new Pair<>(bindableString, watcher)); + view.addTextChangedListener(watcher); + } + String newValue = bindableString.get(); + if (!view.getText().toString().equals(newValue)) { + view.setText(newValue); + } + } + @BindingAdapter("app:binding") public static void bindTextView(AppCompatTextView view, final BindableString bindableString) { Pair pair = (Pair) view.getTag(R.id.bound_observable); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java index 2817c6dd..3bf0288c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java @@ -25,21 +25,26 @@ import androidx.databinding.ObservableList; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.REST.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; +import it.integry.integrywmsnative.core.REST.model.Ean128Model; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; import it.integry.integrywmsnative.core.model.CommonModelConsts; +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.VtbDest; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -51,6 +56,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskCliente; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts; import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity; +import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO; import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; public class PickingLiberoViewModel implements IRecyclerItemClicked { @@ -243,8 +249,9 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { //Cerco tramite etichetta ean 128 (che può indicarmi una UL) this.executeEtichettaEan128(data, progressDialog); } else { - progressDialog.dismiss(); - BarcodeManager.enable(); + this.loadArticolo(data.getStringValue(), null, progressDialog); +// progressDialog.dismiss(); +// BarcodeManager.enable(); } } @@ -312,6 +319,114 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { } + private void loadArticolo(String barcodeProd, Ean128Model ean128Model, ProgressDialog progressDialog) { + if(barcodeProd.length() == 14) { +// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd); + barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); + } + + ArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + + if(mtbAartList != null && mtbAartList.size() > 0) { + + this.dispatchArt(mtbAartList.get(0), ean128Model); + + } else { + BarcodeManager.enable(); + progressDialog.dismiss(); + + DialogSimpleMessageHelper.makeWarningDialog(mContext, + new SpannableString(mContext.getResources().getText(R.string.no_result_from_barcode)), + null, null) + .show(); + } + + }, ex -> { + BarcodeManager.enable(); + UtilityExceptions.defaultException(mContext, ex, progressDialog); + }); + } + + + + + private void dispatchArt(MtbAart mtbAart, Ean128Model ean128Model){ + DialogInputQuantity.DTO qtaDto = new DialogInputQuantity.DTO(); + + qtaDto.setMtbAart(mtbAart); + + qtaDto.setQtaCnf(mtbAart.getQtaCnf()); + qtaDto.setNumCnf(1); + qtaDto.setQtaTot(mtbAart.getQtaCnf()); + + qtaDto.setQtaDaEvadere(new BigDecimal(-1)); + qtaDto.setQtaDisponibile(new BigDecimal(-1)); + + qtaDto.setCanPartitaMagBeChanged(true); + qtaDto.setCanDataScadBeChanged(true); + + + if(ean128Model != null){ + if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) { + qtaDto.setBatchLot(ean128Model.BatchLot); + qtaDto.setCanPartitaMagBeChanged(false); + } + + try { + if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){ + qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore)); + qtaDto.setCanDataScadBeChanged(false); + } else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) { + qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry)); + qtaDto.setCanDataScadBeChanged(false); + } + + } catch (Exception e) { + UtilityLogger.errorMe(e); + } + + + if(ean128Model.Count != null && ean128Model.Count > 0) { + qtaDto.setNumCnf(ean128Model.Count); + } + + if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) { + qtaDto.setQtaTot(new BigDecimal(ean128Model.NetWeightKg)); + } else { + qtaDto.setQtaTot(qtaDto.getQtaCnf().multiply(new BigDecimal(qtaDto.getNumCnf()))); + } + + + qtaDto.setShouldAskDataScad(true); + } + + + DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> { + onPostDispatch(mtbAart, quantityDTO); + }, null).show(); + } + + + private void onPostDispatch(MtbAart mtbAart, QuantityDTO quantityDTO) { + + final MtbColr mtbColr = new MtbColr() + .setCodMart(mtbAart.getCodMart()) + .setPartitaMag(quantityDTO.batchLot.get()) + .setDataScadPartita(quantityDTO.expireDate) + .setQtaCol(quantityDTO.qtaTot.getBigDecimal()) + .setDescrizione(mtbAart.getDescrizioneEstesa()); + + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + MtbColt cloneMtbColt = (MtbColt) mtbColt.get().clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); + + cloneMtbColt.setMtbColr(new ObservableArrayList()); + cloneMtbColt.getMtbColr().add(mtbColr); + + saveLU(cloneMtbColt); + } + private void pickMerceULtoUL(MtbColt sourceMtbColt, MtbColt destMtbColt, ProgressDialog progressDialog) { List mtbColrsToPick = Stream.of(sourceMtbColt.getMtbColr()) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java index 10ca712a..71a07e74 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java @@ -10,6 +10,7 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.MultiAutoCompleteTextView; import com.annimon.stream.Stream; import com.annimon.stream.function.Predicate; @@ -40,6 +41,13 @@ public class DialogVenditaFiltroAvanzato { private List currentOrderList; private List currentFilteredOrderList; + private ArrayAdapter arrayAdapterCodMdep; + private ArrayAdapter arrayAdapterNumOrds; + private ArrayAdapter arrayAdapterCliente; + private ArrayAdapter arrayAdapterTermCons; + private ArrayAdapter arrayAdapterVettore; + private ArrayAdapter arrayAdapterAutomezzo; + private Predicate currentDepositoPredicate = null; private Predicate currentNumOrdsPredicate = null; private Predicate currentClientePredicate = null; @@ -79,7 +87,8 @@ public class DialogVenditaFiltroAvanzato { .setNeutralButton(context.getText(R.string.reset), null); contentView.setViewmodel(viewModel); - initViewModel(viewModel, contentView); + // initViewModel(viewModel, contentView); + initViewModelNew(viewModel, contentView); initView(contentView, viewModel); currentAlert = alertDialog.create(); @@ -137,69 +146,177 @@ public class DialogVenditaFiltroAvanzato { datePickerDialog.show(); }); - bindings.inputCodMdep.setVisibility(filtroOrdiniVendita.shoudShowCodMdepFilter() ? View.VISIBLE : View.GONE); - bindings.inputCodMdep.setOnClickListener(view -> { - AlertDialog.Builder builderSingle = new AlertDialog.Builder(currentContext); - builderSingle.setTitle(R.string.deposit); + arrayAdapterCodMdep = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterCodMdep.addAll(getAvailableCodMdeps(false)); + bindings.inputCodMdepNew.setVisibility(filtroOrdiniVendita.shoudShowCodMdepFilter() ? View.VISIBLE : View.GONE); + bindings.filledExposedDropdownCodMdep.setAdapter(arrayAdapterCodMdep); - final ArrayAdapter arrayAdapter = new ArrayAdapter(currentContext, android.R.layout.select_dialog_singlechoice); - arrayAdapter.addAll(getAvailableCodMdeps()); + arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(false)); + bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds); + bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); - builderSingle.setAdapter(arrayAdapter, (dialogInterface, i) -> { - viewModel.deposito.set(arrayAdapter.getItem(i)); - }); - builderSingle.show(); + arrayAdapterCliente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterCliente.addAll(getAvailableCliente(false)); + bindings.filledExposedDropdownCliente.setAdapter(arrayAdapterCliente); + arrayAdapterTermCons = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterTermCons.addAll(getAvailableTermCons(false)); + bindings.filledExposedDropdownTermCons.setAdapter(arrayAdapterTermCons); + + arrayAdapterVettore = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterVettore.addAll(getAvailableVettori(false)); + bindings.filledExposedDropdownVettore.setAdapter(arrayAdapterVettore); + + arrayAdapterAutomezzo = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(false)); + bindings.filledExposedDropdownAutomezzo.setAdapter(arrayAdapterAutomezzo); + + + viewModel.deposito.refresh(); + viewModel.numOrds.refresh(); + viewModel.cliente.refresh(); + viewModel.terminiConsegna.refresh(); + viewModel.vettore.refresh(); + viewModel.automezzo.refresh(); + + + } + private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel, DialogVenditaFiltroAvanzatoBinding bindings) { + BindableString.registerListener(viewModel.deposito, value -> { + if(UtilityString.isNullOrEmpty(value)) currentDepositoPredicate = null; + else { + currentDepositoPredicate = o -> o.getCodMdep().toLowerCase().equalsIgnoreCase(value); + } + + refreshList(); + + arrayAdapterNumOrds.clear(); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); + arrayAdapterCliente.clear(); + arrayAdapterCliente.addAll(getAvailableCliente(true)); + arrayAdapterTermCons.clear(); + arrayAdapterTermCons.addAll(getAvailableTermCons(true)); + arrayAdapterVettore.clear(); + arrayAdapterVettore.addAll(getAvailableVettori(true)); + arrayAdapterAutomezzo.clear(); + arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); }); - bindings.inputTermCons.setOnClickListener(view -> { + BindableString.registerListener(viewModel.numOrds, value -> { + if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null; + else { + String[] numOrdsSplitted = value.split("[,\\ ]"); - AlertDialog.Builder builderSingle = new AlertDialog.Builder(currentContext); - builderSingle.setTitle(R.string.terms_of_delivery); + try{ + List numOrdsInteger = Stream.of(numOrdsSplitted) + .filter(x -> !UtilityString.isNullOrEmpty(x)) + .map(Integer::parseInt).toList(); - final ArrayAdapter arrayAdapter = new ArrayAdapter(currentContext, android.R.layout.select_dialog_singlechoice); - arrayAdapter.addAll(getAvailableTermCons()); + currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd()); + } catch (NumberFormatException ex) { + currentNumOrdsPredicate = null; + } + } - builderSingle.setAdapter(arrayAdapter, (dialogInterface, i) -> { - viewModel.terminiConsegna.set(arrayAdapter.getItem(i)); - }); - builderSingle.show(); + refreshList(); + arrayAdapterCodMdep.clear(); + arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); + arrayAdapterCliente.clear(); + arrayAdapterCliente.addAll(getAvailableCliente(true)); + arrayAdapterTermCons.clear(); + arrayAdapterTermCons.addAll(getAvailableTermCons(true)); + arrayAdapterVettore.clear(); + arrayAdapterVettore.addAll(getAvailableVettori(true)); + arrayAdapterAutomezzo.clear(); + arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); }); - bindings.inputVettore.setOnClickListener(view -> { + BindableString.registerListener(viewModel.cliente, value -> { + if(UtilityString.isNullOrEmpty(value)) currentClientePredicate = null; + else { + currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(value.toLowerCase()); + } - AlertDialog.Builder builderSingle = new AlertDialog.Builder(currentContext); - builderSingle.setTitle(R.string.carrier); - - final ArrayAdapter arrayAdapter = new ArrayAdapter(currentContext, android.R.layout.select_dialog_singlechoice); - arrayAdapter.addAll(getAvailableVettori()); - - builderSingle.setAdapter(arrayAdapter, (dialogInterface, i) -> { - viewModel.vettore.set(arrayAdapter.getItem(i)); - }); - builderSingle.show(); + refreshList(); + arrayAdapterCodMdep.clear(); + arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); + arrayAdapterNumOrds.clear(); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); + arrayAdapterTermCons.clear(); + arrayAdapterTermCons.addAll(getAvailableTermCons(true)); + arrayAdapterVettore.clear(); + arrayAdapterVettore.addAll(getAvailableVettori(true)); + arrayAdapterAutomezzo.clear(); + arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); }); - bindings.inputAutomezzo.setOnClickListener(view -> { + BindableString.registerListener(viewModel.terminiConsegna, value -> { + if(UtilityString.isNullOrEmpty(value)) currentTermConsPredicate = null; + else { + currentTermConsPredicate = o -> !UtilityString.isNullOrEmpty(o.getTermCons()) && o.getTermCons().equalsIgnoreCase(value); + } - AlertDialog.Builder builderSingle = new AlertDialog.Builder(currentContext); - builderSingle.setTitle(R.string.vehicle); + refreshList(); - final ArrayAdapter arrayAdapter = new ArrayAdapter(currentContext, android.R.layout.select_dialog_singlechoice); - arrayAdapter.addAll(getAvailableAutomezzi()); + arrayAdapterCodMdep.clear(); + arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); + arrayAdapterNumOrds.clear(); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); + arrayAdapterCliente.clear(); + arrayAdapterCliente.addAll(getAvailableCliente(true)); + arrayAdapterVettore.clear(); + arrayAdapterVettore.addAll(getAvailableVettori(true)); + arrayAdapterAutomezzo.clear(); + arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); + }); - builderSingle.setAdapter(arrayAdapter, (dialogInterface, i) -> { - viewModel.automezzo.set(arrayAdapter.getItem(i)); - }); - builderSingle.show(); + BindableString.registerListener(viewModel.vettore, value -> { + if(UtilityString.isNullOrEmpty(value)) currentVettorePredicate = null; + else { + currentVettorePredicate = o -> (o.getCodVvet() + " - " + o.getDescrizioneVettore()).equalsIgnoreCase(value); + } + refreshList(); + + arrayAdapterCodMdep.clear(); + arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); + arrayAdapterNumOrds.clear(); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); + arrayAdapterCliente.clear(); + arrayAdapterCliente.addAll(getAvailableCliente(true)); + arrayAdapterTermCons.clear(); + arrayAdapterTermCons.addAll(getAvailableTermCons(true)); + arrayAdapterAutomezzo.clear(); + arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); + }); + + BindableString.registerListener(viewModel.automezzo, value -> { + if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null; + else { + currentAutomezzoPredicate = o -> !UtilityString.isNullOrEmpty(o.getDescrizioneAuto()) && o.getDescrizioneAuto().toLowerCase().contains(value); + } + + refreshList(); + + arrayAdapterCodMdep.clear(); + arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); + arrayAdapterNumOrds.clear(); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); + arrayAdapterCliente.clear(); + arrayAdapterCliente.addAll(getAvailableCliente(true)); + arrayAdapterTermCons.clear(); + arrayAdapterTermCons.addAll(getAvailableTermCons(true)); + arrayAdapterVettore.clear(); + arrayAdapterVettore.addAll(getAvailableVettori(true)); }); } + private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel, DialogVenditaFiltroAvanzatoBinding bindings) { firstInit = true; @@ -210,7 +327,6 @@ public class DialogVenditaFiltroAvanzato { else { String[] numOrdsSplitted = value.split("[,\\ ]"); - try{ List numOrdsInteger = Stream.of(numOrdsSplitted) .filter(x -> !UtilityString.isNullOrEmpty(x)) @@ -316,18 +432,18 @@ public class DialogVenditaFiltroAvanzato { } - private List getAvailableCodMdeps() { + private List getAvailableCodMdeps(boolean skipRecalc) { if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){ currentFilteredOrderList = currentOrderList; - } else { + } else if(!skipRecalc){ Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate != null && currentVettorePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) + (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && + (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && + (currentVettorePredicate == null || (currentVettorePredicate != null && currentVettorePredicate.test(x))) && + (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x))) && + (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) ); currentFilteredOrderList = tmpStream.toList(); @@ -336,10 +452,50 @@ public class DialogVenditaFiltroAvanzato { return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getCodMdep).distinct().withoutNulls().toList(); } - private List getAvailableTermCons() { + private List getAvailableCliente(boolean skipRecalc) { + if(currentNumOrdsPredicate == null && currentDepositoPredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){ + currentFilteredOrderList = currentOrderList; + } else if(!skipRecalc){ + Stream tmpStream = Stream.of(currentOrderList) + .filter(x -> + (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && + (currentDepositoPredicate == null || (currentDepositoPredicate != null && currentDepositoPredicate.test(x))) && + (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && + (currentVettorePredicate == null || (currentVettorePredicate != null && currentVettorePredicate.test(x))) && + (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x))) && + (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) + ); + + currentFilteredOrderList = tmpStream.toList(); + } + + return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getRagSocOrd).distinct().withoutNulls().toList(); + } + + private List getAvailableNumOrds(boolean skipRecalc) { + if(currentDepositoPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentTermConsPredicate == null){ + currentFilteredOrderList = currentOrderList; + } else if(!skipRecalc){ + Stream tmpStream = Stream.of(currentOrderList) + .filter(x -> + (currentDepositoPredicate == null || (currentDepositoPredicate != null && currentDepositoPredicate.test(x))) && + (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && + (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && + (currentVettorePredicate == null || (currentVettorePredicate != null && currentVettorePredicate.test(x))) && + (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x))) && + (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) + ); + + currentFilteredOrderList = tmpStream.toList(); + } + + return Stream.of(currentFilteredOrderList).map(x -> x.getNumOrd().toString()).distinct().withoutNulls().toList(); + } + + private List getAvailableTermCons(boolean skipRecalc) { if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null && currentDepositoPredicate == null){ currentFilteredOrderList = currentOrderList; - } else { + } else if(!skipRecalc){ Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && @@ -356,10 +512,10 @@ public class DialogVenditaFiltroAvanzato { return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getTermCons).distinct().withoutNulls().toList(); } - private List getAvailableVettori() { + private List getAvailableVettori(boolean skipRecalc) { if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentAutomezzoPredicate == null && currentDepositoPredicate == null){ currentFilteredOrderList = currentOrderList; - } else { + } else if(!skipRecalc){ Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && @@ -376,10 +532,10 @@ public class DialogVenditaFiltroAvanzato { return Stream.of(currentFilteredOrderList).filter(x -> x.getCodVvet() != null).map(x -> x.getCodVvet() + " - " + x.getDescrizioneVettore()).distinct().withoutNulls().toList(); } - private List getAvailableAutomezzi() { + private List getAvailableAutomezzi(boolean skipRecalc) { if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentVettorePredicate == null && currentDepositoPredicate == null){ currentFilteredOrderList = currentOrderList; - } else { + } else if(!skipRecalc){ Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && diff --git a/app/src/main/res/layout/dialog_ask_cliente__page1.xml b/app/src/main/res/layout/dialog_ask_cliente__page1.xml index 624cac08..ab8ba6cc 100644 --- a/app/src/main/res/layout/dialog_ask_cliente__page1.xml +++ b/app/src/main/res/layout/dialog_ask_cliente__page1.xml @@ -45,7 +45,7 @@ android:layout_height="wrap_content" android:hint="@string/customer"> - - + android:layout_height="wrap_content" + app:cardCornerRadius="12dp" + app:cardElevation="0dp"> + - - - - - + android:hint="@string/deposit"> - + - + + + + - + + + + - + + - - + - + + + + + + + + + + + + + + + + + + - + + + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + - + + - + + + + - + + - + - + + + - + + + + - + + - + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_vendita_filtro_avanzato__single_item.xml b/app/src/main/res/layout/dialog_vendita_filtro_avanzato__single_item.xml new file mode 100644 index 00000000..d0736805 --- /dev/null +++ b/app/src/main/res/layout/dialog_vendita_filtro_avanzato__single_item.xml @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml b/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml index c0e4a9a6..a4f1b772 100644 --- a/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml +++ b/app/src/main/res/layout/fragment_main_rettifica_giacenze.xml @@ -117,7 +117,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/guide_line_fornitore"> -