From 6f19a8b757afb4d0a4904d8ba37b40e06ff4e8d0 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 4 Jun 2019 12:15:10 +0200 Subject: [PATCH] Implementata richiesta del cliente in PickingLibero --- .../integrywmsnative/core/model/VtbDest.java | 141 ++++++++++++++++++ .../core/settings/DBSettingsModel.java | 10 ++ .../core/settings/SettingsManager.java | 9 +- .../core/utility/UtilityDialog.java | 16 ++ .../core/utility/UtilityString.java | 12 ++ .../MainAccettazioneFragment.java | 9 +- .../picking_libero/PickingLiberoFragment.java | 5 +- .../viewmodel/PickingLiberoViewModel.java | 36 +++-- .../gest/vendita/MainVenditaFragment.java | 11 +- .../dialogs/ask_cliente/DialogAskCliente.java | 107 +++++++++++++ .../ask_cliente/DialogAskClienteAdapter.java | 120 +++++++++++++++ .../dto/DialogAskClienteClienteDTO.java | 32 ++++ .../dto/DialogAskClienteDestinatarioDTO.java | 111 ++++++++++++++ .../DialogAskCliente_Page1ViewModel.java | 120 +++++++++++++++ .../DialogAskCliente_Page1_ArrayAdapter.java | 115 ++++++++++++++ .../DialogAskCliente_Page2ViewModel.java | 125 ++++++++++++++++ .../DialogAskCliente_Page2_ArrayAdapter.java | 127 ++++++++++++++++ .../viewmodel/IDialogAskClienteViewModel.java | 18 +++ .../DialogAskPositionOfLU.java | 2 +- app/src/main/res/layout/activity_login.xml | 28 ---- .../main/res/layout/dialog_ask_cliente.xml | 63 ++++++++ .../dialog_ask_cliente__dropdown_item.xml | 9 ++ ...sk_cliente__dropdown_item_destinatario.xml | 38 +++++ .../res/layout/dialog_ask_cliente__page1.xml | 106 +++++++++++++ .../res/layout/dialog_ask_cliente__page2.xml | 106 +++++++++++++ .../res/layout/dialog_ask_position_of_lu.xml | 1 - app/src/main/res/layout/fragment_main.xml | 16 +- .../res/layout/fragment_main_accettazione.xml | 54 +++++++ .../main/res/layout/fragment_main_vendita.xml | 53 +++++++ app/src/main/res/values-it/strings.xml | 7 + app/src/main/res/values/colors.xml | 7 +- app/src/main/res/values/strings.xml | 8 + app/src/main/res/values/styles.xml | 12 +- 33 files changed, 1576 insertions(+), 58 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/model/VtbDest.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskCliente.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteClienteDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteDestinatarioDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_ArrayAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/IDialogAskClienteViewModel.java create mode 100644 app/src/main/res/layout/dialog_ask_cliente.xml create mode 100644 app/src/main/res/layout/dialog_ask_cliente__dropdown_item.xml create mode 100644 app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml create mode 100644 app/src/main/res/layout/dialog_ask_cliente__page1.xml create mode 100644 app/src/main/res/layout/dialog_ask_cliente__page2.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/VtbDest.java b/app/src/main/java/it/integry/integrywmsnative/core/model/VtbDest.java new file mode 100644 index 00000000..45efd882 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/VtbDest.java @@ -0,0 +1,141 @@ +package it.integry.integrywmsnative.core.model; + +import android.os.Parcel; +import android.os.Parcelable; + +public class VtbDest extends EntityBase implements Parcelable { + + + public VtbDest() { + type = "vtb_dest"; + } + + private String codAnag; + + private String codVdes; + + private String destinatario; + + private String indirizzo; + + private String cap; + + private String citta; + + private String prov; + + private String nazione; + + + protected VtbDest(Parcel in) { + codAnag = in.readString(); + codVdes = in.readString(); + destinatario = in.readString(); + indirizzo = in.readString(); + cap = in.readString(); + citta = in.readString(); + prov = in.readString(); + nazione = in.readString(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(codAnag); + dest.writeString(codVdes); + dest.writeString(destinatario); + dest.writeString(indirizzo); + dest.writeString(cap); + dest.writeString(citta); + dest.writeString(prov); + dest.writeString(nazione); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public VtbDest createFromParcel(Parcel in) { + return new VtbDest(in); + } + + @Override + public VtbDest[] newArray(int size) { + return new VtbDest[size]; + } + }; + + public String getCodAnag() { + return codAnag; + } + + public VtbDest setCodAnag(String codAnag) { + this.codAnag = codAnag; + return this; + } + + public String getCodVdes() { + return codVdes; + } + + public VtbDest setCodVdes(String codVdes) { + this.codVdes = codVdes; + return this; + } + + public String getDestinatario() { + return destinatario; + } + + public VtbDest setDestinatario(String destinatario) { + this.destinatario = destinatario; + return this; + } + + public String getIndirizzo() { + return indirizzo; + } + + public VtbDest setIndirizzo(String indirizzo) { + this.indirizzo = indirizzo; + return this; + } + + public String getCap() { + return cap; + } + + public VtbDest setCap(String cap) { + this.cap = cap; + return this; + } + + public String getCitta() { + return citta; + } + + public VtbDest setCitta(String citta) { + this.citta = citta; + return this; + } + + public String getProv() { + return prov; + } + + public VtbDest setProv(String prov) { + this.prov = prov; + return this; + } + + public String getNazione() { + return nazione; + } + + public VtbDest setNazione(String nazione) { + this.nazione = nazione; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 34c64775..a8167f64 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -21,6 +21,7 @@ public class DBSettingsModel { private String defaultCodAnag; private String defaultCausaleRettificaGiacenze; private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione; + private boolean flagAskClienteInPickingLibero; public List getAvailableProfiles() { return availableProfiles; @@ -99,4 +100,13 @@ public class DBSettingsModel { this.defaultCriterioDistribuzione = DistribuzioneColloDTO.CriterioDistribuzione.fromString(defaultCriterioDistribuzione); return this; } + + public boolean isFlagAskClienteInPickingLibero() { + return flagAskClienteInPickingLibero; + } + + public DBSettingsModel setFlagAskClienteInPickingLibero(boolean flagAskClienteInPickingLibero) { + this.flagAskClienteInPickingLibero = flagAskClienteInPickingLibero; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 04fdaffa..fb0b331b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -189,7 +189,14 @@ public class SettingsManager { GestSetupRESTConsumer.getValue("PICKING", "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", valueDefaultCriterioDistribuzione -> { dbSettingsModelIstance.setDefaultCriterioDistribuzione(valueDefaultCriterioDistribuzione.value); - if(onComplete != null) onComplete.run(); + GestSetupRESTConsumer.getBooleanValue("PICKING", "PICKING_LIBERO", "FLAG_ASK_CLIENTE", valueAskClientePickingLibero -> { + dbSettingsModelIstance.setFlagAskClienteInPickingLibero(valueAskClientePickingLibero); + + if(onComplete != null) onComplete.run(); + + }, ex -> { + if(onFailed != null) onFailed.run(ex); + }); }, ex -> { if(onFailed != null) onFailed.run(ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java new file mode 100644 index 00000000..7c7bc2e4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDialog.java @@ -0,0 +1,16 @@ +package it.integry.integrywmsnative.core.utility; + +import android.app.Dialog; +import android.content.Context; +import android.widget.LinearLayout; + +public class UtilityDialog { + + public static void setTo90PercentSize(Context context, Dialog dialog) { + int width = (int)(context.getResources().getDisplayMetrics().widthPixels*0.90); + //int height = (int)(context.getResources().getDisplayMetrics().heightPixels*0.90); + + dialog.getWindow().setLayout(width, LinearLayout.LayoutParams.WRAP_CONTENT); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java index eabd9478..fde33e5c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java @@ -1,5 +1,8 @@ package it.integry.integrywmsnative.core.utility; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Created by GiuseppeS on 07/03/2018. */ @@ -14,4 +17,13 @@ public class UtilityString { return (stringToCheck != null && stringToCheck.trim().length() == 0 || stringToCheck == null) ? null : stringToCheck.trim(); } + public static String capitalizeWords(String capString){ + StringBuffer capBuffer = new StringBuffer(); + Matcher capMatcher = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(capString); + while (capMatcher.find()){ + capMatcher.appendReplacement(capBuffer, capMatcher.group(1).toUpperCase() + capMatcher.group(2).toLowerCase()); + } + + return capMatcher.appendTail(capBuffer).toString(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java index e2d91441..82434428 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java @@ -130,8 +130,13 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag helper.loadOrdini(new ILoadOrdiniCallback() { @Override public void onLoadSuccess(List ordini) { - Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show(); - groupOrdiniAndMakeRecycler(ordini); + if(ordini != null) { + Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show(); + groupOrdiniAndMakeRecycler(ordini); + } + + mBinding.ordiniAccettazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.VISIBLE : View.GONE); + progress.dismiss(); } 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 a95a9027..ecafcc2c 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 @@ -16,6 +16,7 @@ import it.integry.integrywmsnative.BuildConfig; 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.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding; @@ -68,7 +69,9 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment { mHelper = new PickingLiberoHelper(getActivity()); mViewModel = new PickingLiberoViewModel(); - mViewModel.init(getActivity(), mBindings, mHelper, mAppCompatActionBar); + mViewModel.init(getActivity(), mBindings, mHelper, mAppCompatActionBar, () -> { + ((IPoppableActivity) getActivity()).pop(); + }); mBindings.setViewmodel(mViewModel); 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 3df7a429..2817c6dd 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 @@ -35,7 +35,9 @@ import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; import it.integry.integrywmsnative.core.model.CommonModelConsts; 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.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityNumber; @@ -44,6 +46,8 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding; import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper; import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoListAdapter; +import it.integry.integrywmsnative.view.dialogs.DialogConsts; +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; @@ -68,7 +72,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { private PickingLiberoListAdapter mAdapter; - public void init(Activity context, FragmentPickingLiberoBinding binding, PickingLiberoHelper helper, AppCompatTextView titleText) { + public void init(Activity context, FragmentPickingLiberoBinding binding, PickingLiberoHelper helper, AppCompatTextView titleText, Runnable onComplete) { mContext = context; mBinding = binding; mHelper = helper; @@ -460,6 +464,22 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { private void createNewLU(Integer customNumCollo, String customSerCollo, ProgressDialog progressDialog, Runnable onComplete, Runnable onFailed) { + if(SettingsManager.iDB().isFlagAskClienteInPickingLibero()){ + + DialogAskCliente.makeBase(mContext, (status, result) -> { + if(status == DialogConsts.Results.YES) { + createNewLUInternal(customNumCollo, customSerCollo, result, progressDialog, onComplete, onFailed); + } + }).show(); + } else { + createNewLUInternal(customNumCollo, customSerCollo, null, progressDialog, onComplete, onFailed); + } + + + } + + private void createNewLUInternal(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, ProgressDialog progressDialog, Runnable onComplete, Runnable onFailed) { + boolean shouldCloseProgress = progressDialog == null; final ProgressDialog progressDialogFinal = progressDialog == null ? UtilityProgress.createDefaultProgressDialog(mContext) : progressDialog; @@ -476,6 +496,11 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { mtbColt.setSerCollo(customSerCollo); } + if(vtbDest != null) { + mtbColt.setCodAnag(vtbDest.getCodAnag()); + mtbColt.setCodVdes(vtbDest.getCodVdes()); + } + ColliMagazzinoRESTConsumer.saveCollo(mtbColt, savedMtbColt -> { savedMtbColt.setMtbColr(new ObservableArrayList<>()); setULToCurrentContext(savedMtbColt); @@ -484,15 +509,6 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved) ,FBToast.LENGTH_SHORT); - -// new StatusBarAlert.Builder(mContext) -// .autoHide(true) -// .withDuration(2500) -// .showProgress(false) -// .withText(R.string.data_saved) -// .withAlertColor(R.color.mainGreen) -// .build(); - if(onComplete != null) onComplete.run(); }, ex -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java index 6f66e781..2d9469b3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java @@ -156,9 +156,14 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS mHelper.loadOrdini(new VenditaHelper.ILoadOrdiniCallback() { @Override public void onLoadSuccess(List ordini) { - UtilityToast.showToast("Caricati " + ordini.size() + " ordini"); - mOriginalOrderList = ordini; - mViewModel.setListOrder(ordini); + if(ordini != null) { + UtilityToast.showToast("Caricati " + ordini.size() + " ordini"); + mOriginalOrderList = ordini; + mViewModel.setListOrder(ordini); + } + + + mBinding.ordiniVenditaEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.VISIBLE : View.GONE); groupOrdini(ordini); initRecyclerView(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskCliente.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskCliente.java new file mode 100644 index 00000000..9378c821 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskCliente.java @@ -0,0 +1,107 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.view.LayoutInflater; +import android.view.WindowManager; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; +import android.widget.LinearLayout; + +import androidx.databinding.DataBindingUtil; + +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.model.VtbDest; +import it.integry.integrywmsnative.core.utility.UtilityDialog; +import it.integry.integrywmsnative.databinding.DialogAskClienteBinding; +import it.integry.integrywmsnative.view.dialogs.DialogConsts; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel; + +public class DialogAskCliente { + + private Context mContext; + + private Dialog mDialog; + + private DialogAskClienteBinding mBinding; + + + public static Dialog makeBase(final Context context, RunnableArgss onComplete) { + return new DialogAskCliente(context, onComplete).mDialog; + } + + public DialogAskCliente(Context context, RunnableArgss onComplete) { + mContext = context; + + + LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_cliente, null, false); + + List> views = new ArrayList<>(); + views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page1, DialogAskCliente_Page1ViewModel.class)); + views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_ask_cliente__page2, DialogAskCliente_Page2ViewModel.class)); + + + + DialogAskClienteAdapter adapter = new DialogAskClienteAdapter(mContext, views); + mBinding.viewpager.setAdapter(adapter); + mBinding.viewpager.beginFakeDrag(); + mBinding.viewpager.addOnPageChangeListener(adapter); + + + + mDialog = new Dialog(mContext); + mDialog.setContentView(mBinding.getRoot()); + mDialog.setCanceledOnTouchOutside(false); +// mDialog.setCancelable(false); + UtilityDialog.setTo90PercentSize(mContext, mDialog); + mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + mDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + + + mDialog.setOnShowListener(dialog -> { + + DialogAskCliente_Page1ViewModel viewModel1 = (DialogAskCliente_Page1ViewModel) adapter.getViewModel(R.layout.dialog_ask_cliente__page1); + DialogAskCliente_Page2ViewModel viewModel2 = (DialogAskCliente_Page2ViewModel) adapter.getViewModel(R.layout.dialog_ask_cliente__page2); + + viewModel1 + .setOnConfirmClickListener(() -> { + + viewModel2.setCodAnag(viewModel1.getCurrentCliente().getCodAnag()); + + mBinding.viewpager.setCurrentItem(mBinding.viewpager.getCurrentItem() + 1, true); + }); + + viewModel1.setOnAbortClickListener(() -> { + mDialog.dismiss(); + onComplete.run(DialogConsts.Results.ABORT, null); + }); + + viewModel2.setOnConfirmClickListener(() -> { + onComplete.run(DialogConsts.Results.YES, viewModel2.getCurrentDestinatario().toVtbDestModel()); + mDialog.dismiss(); + }); + + viewModel2.setOnAbortClickListener(() -> { + mDialog.dismiss(); + onComplete.run(DialogConsts.Results.ABORT, null); + }); + + }); + + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java new file mode 100644 index 00000000..184f454b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java @@ -0,0 +1,120 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +import androidx.annotation.NonNull; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ViewDataBinding; +import androidx.viewpager.widget.PagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.ui.DeactivatableViewPager; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAskClienteViewModel; + +public class DialogAskClienteAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener { + + private Context mContext; + + private List> mDatasetLayout; + private List> mDatasetViews; + + private DeactivatableViewPager viewPager; + + public DialogAskClienteAdapter(Context context, List> datasetLayouts) { + this.mContext = context; + this.mDatasetLayout = datasetLayouts; + this.mDatasetViews = new ArrayList<>(); + } + + + @Override + public View instantiateItem(ViewGroup container, int position) { + viewPager = (DeactivatableViewPager) container; + + Integer viewId = mDatasetLayout.get(position).getKey(); + + + LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + ViewDataBinding mBinding = DataBindingUtil.inflate(inflater, viewId, null, false); + + Class viewModelClass = mDatasetLayout.get(position).getValue(); + IDialogAskClienteViewModel viewModel = null; + + try { + viewModel = (IDialogAskClienteViewModel) viewModelClass.newInstance(); + viewModel.setBinding(mBinding); + viewModel.setContext(mContext); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } + + mBinding.setVariable(BR.viewmodel, viewModel); + + container.addView(mBinding.getRoot()); + this.mDatasetViews.add(new AbstractMap.SimpleEntry<>(mBinding, viewModel)); + + return mBinding.getRoot(); + } + + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + container.removeView((LinearLayout)object); + } + + @Override + public boolean isViewFromObject(@NonNull View view, @NonNull Object o) { + return view == o; + } + + + @Override + public int getCount() { + return mDatasetLayout.size(); + } + + public IDialogAskClienteViewModel getViewModel(@NonNull int layoutID) { + for(int i = 0; i < mDatasetLayout.size(); i++) { + if(mDatasetLayout.get(i).getKey() == layoutID) { + return this.mDatasetViews.get(i).getValue(); + } + } + return null; + } + + private int lastPage = -1; + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + if(position != lastPage) { + viewPager.measureCurrentView(mDatasetViews.get(position).getKey().getRoot()); + mDatasetViews.get(position).getValue().onShow(); + lastPage = position; + } + } + + @Override + public void onPageSelected(int position) { + // mDatasetViews.get(position).getValue().onShow(); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteClienteDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteClienteDTO.java new file mode 100644 index 00000000..4bbbe8d2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteClienteDTO.java @@ -0,0 +1,32 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente.dto; + +public class DialogAskClienteClienteDTO { + + private String codAnag; + + private String ragSoc; + + public String getCodAnag() { + return codAnag; + } + + public DialogAskClienteClienteDTO setCodAnag(String codAnag) { + this.codAnag = codAnag; + return this; + } + + public String getRagSoc() { + return ragSoc; + } + + public DialogAskClienteClienteDTO setRagSoc(String ragSoc) { + this.ragSoc = ragSoc; + return this; + } + + + @Override + public String toString() { + return getRagSoc(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteDestinatarioDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteDestinatarioDTO.java new file mode 100644 index 00000000..7ada1130 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/dto/DialogAskClienteDestinatarioDTO.java @@ -0,0 +1,111 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente.dto; + +import it.integry.integrywmsnative.core.model.VtbDest; + +public class DialogAskClienteDestinatarioDTO { + + private String codAnag; + + private String codVdes; + + private String destinatario; + + private String indirizzo; + + private String cap; + + private String citta; + + private String prov; + + private String nazione; + + public String getCodAnag() { + return codAnag; + } + + public DialogAskClienteDestinatarioDTO setCodAnag(String codAnag) { + this.codAnag = codAnag; + return this; + } + + public String getCodVdes() { + return codVdes; + } + + public DialogAskClienteDestinatarioDTO setCodVdes(String codVdes) { + this.codVdes = codVdes; + return this; + } + + public String getDestinatario() { + return destinatario; + } + + public DialogAskClienteDestinatarioDTO setDestinatario(String destinatario) { + this.destinatario = destinatario; + return this; + } + + public String getIndirizzo() { + return indirizzo; + } + + public DialogAskClienteDestinatarioDTO setIndirizzo(String indirizzo) { + this.indirizzo = indirizzo; + return this; + } + + public String getCap() { + return cap; + } + + public DialogAskClienteDestinatarioDTO setCap(String cap) { + this.cap = cap; + return this; + } + + public String getCitta() { + return citta; + } + + public DialogAskClienteDestinatarioDTO setCitta(String citta) { + this.citta = citta; + return this; + } + + public String getProv() { + return prov; + } + + public DialogAskClienteDestinatarioDTO setProv(String prov) { + this.prov = prov; + return this; + } + + public String getNazione() { + return nazione; + } + + public DialogAskClienteDestinatarioDTO setNazione(String nazione) { + this.nazione = nazione; + return this; + } + + @Override + public String toString() { + return String.format("%s (%s)", getDestinatario(), getCodVdes()); + } + + public VtbDest toVtbDestModel() { + return new VtbDest() + .setCap(getCap()) + .setCitta(getCitta()) + .setCodAnag(getCodAnag()) + .setCodVdes(getCodVdes()) + .setDestinatario(getDestinatario()) + .setProv(getProv()) + .setIndirizzo(getIndirizzo()) + .setNazione(getNazione()); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java new file mode 100644 index 00000000..304e7b77 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1ViewModel.java @@ -0,0 +1,120 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel; + +import android.content.Context; +import android.widget.AutoCompleteTextView; + +import androidx.databinding.ViewDataBinding; + +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; +import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.databinding.DialogAskClientePage1Binding; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO; + +public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewModel { + + private Context mContext; + private DialogAskClientePage1Binding mBinding; + + private List availableClienti; + + public DialogAskCliente_Page1ViewModel() { + + } + + @Override + public void setContext(Context context) { + this.mContext = context; + } + + @Override + public void setBinding(ViewDataBinding binding) { + this.mBinding = (DialogAskClientePage1Binding) binding; + } + + @Override + public void onShow() { + + String sql = "SELECT gtb_anag.cod_anag, rag_soc " + + "FROM gtb_anag " + + "INNER JOIN vtb_clie ON gtb_anag.cod_anag = vtb_clie.cod_anag " + + "WHERE vtb_clie.flag_stato = 'A' " + + "ORDER BY rag_soc"; + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(ArrayList value) { + availableClienti = value; + initializeAdapter(value); + } + + @Override + public void onFailed(Exception ex) { + + } + }); + + } + + @Override + public void setOnConfirmClickListener(Runnable onConfirm) { + this.mBinding.buttonYes.setOnClickListener(v -> { + if(validateCliente()) { + this.resetClienteError(); + if(onConfirm != null) onConfirm.run(); + } else { + this.setClienteError(mContext.getResources().getText(R.string.not_valid_customer_error).toString()); + } + + }); + } + + @Override + public void setOnAbortClickListener(Runnable onAbort) { + this.mBinding.buttonNo.setOnClickListener(v -> { + if(onAbort != null) onAbort.run(); + }); + } + + + private void initializeAdapter(ArrayList items) { + + DialogAskCliente_Page1_ArrayAdapter adapter = new DialogAskCliente_Page1_ArrayAdapter(mContext, items); + + + AutoCompleteTextView editTextFilledExposedDropdown = mBinding.filledExposedDropdown; + editTextFilledExposedDropdown.setThreshold(0); + editTextFilledExposedDropdown.setAdapter(adapter); + } + + + private boolean validateCliente() { + return getCurrentCliente() != null; + } + + public DialogAskClienteClienteDTO getCurrentCliente() { + for (DialogAskClienteClienteDTO cliente : availableClienti) { + if(cliente.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString())) { + return cliente; + } + } + + return null; + } + + + private void setClienteError(String message){ + mBinding.inputCliente.setErrorEnabled(true); + mBinding.inputCliente.setError(message); + } + private void resetClienteError() { + mBinding.inputCliente.setError(null); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_ArrayAdapter.java new file mode 100644 index 00000000..f591466d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_ArrayAdapter.java @@ -0,0 +1,115 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel; + +import android.content.Context; +import android.graphics.Movie; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatTextView; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO; + +public class DialogAskCliente_Page1_ArrayAdapter extends ArrayAdapter implements Filterable { + + private Context mContext; + private List mDataset; + private List mDatasetAllItems; + + private ListFilter listFilter = new ListFilter(); + + public DialogAskCliente_Page1_ArrayAdapter(@NonNull Context context, @NonNull ArrayList list) { + super(context, 0 , list); + mContext = context; + mDataset = list; + } + + @NonNull + @Override + public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + View listItem = convertView; + if(listItem == null) { + listItem = LayoutInflater.from(mContext).inflate(R.layout.dialog_ask_cliente__dropdown_item, parent, false); + } + + if(position < mDataset.size()) { + + AppCompatTextView textView = listItem.findViewById(R.id.text); + + textView.setText(mDataset.get(position).getRagSoc()); + + return listItem; + } + return null; + } + + + @NonNull + @Override + public Filter getFilter() { + return listFilter; + } + + public class ListFilter extends Filter { + private Object lock = new Object(); + + @Override + protected FilterResults performFiltering(CharSequence prefix) { + FilterResults results = new FilterResults(); + if (mDatasetAllItems == null) { + synchronized (lock) { + mDatasetAllItems = new ArrayList<>(mDataset); + } + } + + if (prefix == null || prefix.length() == 0) { + synchronized (lock) { + results.values = mDatasetAllItems; + results.count = mDatasetAllItems.size(); + } + } else { + final String searchStrLowerCase = prefix.toString().toLowerCase(); + + ArrayList matchValues = new ArrayList<>(); + + for (DialogAskClienteClienteDTO dataItem : mDatasetAllItems) { + if (dataItem.getRagSoc().toLowerCase().startsWith(searchStrLowerCase)) { + matchValues.add(dataItem); + } + } + + results.values = matchValues; + results.count = matchValues.size(); + } + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + if (results.values != null) { + mDataset.clear(); + mDataset.addAll((ArrayList) results.values); + } else { + mDataset.clear(); + } + if (results.count > 0) { + notifyDataSetChanged(); + } else { + notifyDataSetInvalidated(); + } + } + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java new file mode 100644 index 00000000..de88b82c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java @@ -0,0 +1,125 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel; + +import android.content.Context; +import android.widget.AutoCompleteTextView; + +import androidx.databinding.ViewDataBinding; + +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; +import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.core.utility.UtilityDB; +import it.integry.integrywmsnative.databinding.DialogAskClientePage2Binding; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO; + +public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewModel { + + + private DialogAskClientePage2Binding mBinding; + private Context mContext; + + private List availableDestinatari; + + private String mCodAnag; + + public DialogAskCliente_Page2ViewModel() { + + } + + @Override + public void setBinding(ViewDataBinding binding) { + this.mBinding = (DialogAskClientePage2Binding) binding; + } + + @Override + public void setContext(Context context) { + this.mContext = context; + } + + @Override + public void onShow() { + + String sql = "SELECT cod_anag, cod_vdes, destinatario, indirizzo, cap, citta, prov, nazione " + + "FROM vtb_dest " + + "WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag); + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(ArrayList value) { + availableDestinatari = value; + initializeAdapter(value); + } + + @Override + public void onFailed(Exception ex) { + + } + }); + } + + @Override + public void setOnConfirmClickListener(Runnable onConfirm) { + this.mBinding.buttonYes.setOnClickListener(v -> { + if(validateDestinatario()) { + this.resetClienteError(); + if(onConfirm != null) onConfirm.run(); + } else { + this.setClienteError(mContext.getResources().getText(R.string.not_valid_recipient_error).toString()); + } + + }); + } + + @Override + public void setOnAbortClickListener(Runnable onAbort) { + this.mBinding.buttonNo.setOnClickListener(v -> { + if(onAbort != null) onAbort.run(); + }); + } + + public void setCodAnag(String codAnag) { + this.mCodAnag = codAnag; + } + + private void initializeAdapter(ArrayList items) { + + DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items); + + + AutoCompleteTextView editTextFilledExposedDropdown = mBinding.filledExposedDropdown; + editTextFilledExposedDropdown.setThreshold(0); + editTextFilledExposedDropdown.setAdapter(adapter); + } + + + private boolean validateDestinatario() { + return getCurrentDestinatario() != null; + } + + public DialogAskClienteDestinatarioDTO getCurrentDestinatario() { + for (DialogAskClienteDestinatarioDTO destinatarioDTO : availableDestinatari) { + if(destinatarioDTO.toString().equalsIgnoreCase(mBinding.inputDestinatario.getEditText().getText().toString())) { + return destinatarioDTO; + } + } + + return null; + } + + + private void setClienteError(String message){ + mBinding.inputDestinatario.setErrorEnabled(true); + mBinding.inputDestinatario.setError(message); + } + private void resetClienteError() { + mBinding.inputDestinatario.setError(null); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java new file mode 100644 index 00000000..fc52aaf2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java @@ -0,0 +1,127 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.Filter; +import android.widget.Filterable; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatTextView; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO; + +public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter implements Filterable { + + private Context mContext; + private List mDataset; + private List mDatasetAllItems; + + private ListFilter listFilter = new ListFilter(); + + public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull ArrayList list) { + super(context, 0 , list); + mContext = context; + mDataset = list; + } + + @NonNull + @Override + public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { + View listItem = convertView; + if(listItem == null) { + listItem = LayoutInflater.from(mContext).inflate(R.layout.dialog_ask_cliente__dropdown_item_destinatario, parent, false); + } + + if(position < mDataset.size()) { + + AppCompatTextView destinatario = listItem.findViewById(R.id.destinatario); + destinatario.setText(UtilityString.capitalizeWords(mDataset.get(position).toString())); + + AppCompatTextView subtitle = listItem.findViewById(R.id.subtitle); + + StringBuilder subtitleStr = new StringBuilder(); + if(!UtilityString.isNullOrEmpty(mDataset.get(position).getCitta())) { + subtitleStr.append(UtilityString.capitalizeWords(mDataset.get(position).getCitta()) + " - "); + } + + if(!UtilityString.isNullOrEmpty(mDataset.get(position).getIndirizzo())) { + subtitleStr.append(UtilityString.capitalizeWords(mDataset.get(position).getIndirizzo())); + } + + subtitle.setText(subtitleStr); + + + return listItem; + } + return null; + } + + + @NonNull + @Override + public Filter getFilter() { + return listFilter; + } + + public class ListFilter extends Filter { + private Object lock = new Object(); + + @Override + protected FilterResults performFiltering(CharSequence prefix) { + FilterResults results = new FilterResults(); + if (mDatasetAllItems == null) { + synchronized (lock) { + mDatasetAllItems = new ArrayList<>(mDataset); + } + } + + if (prefix == null || prefix.length() == 0) { + synchronized (lock) { + results.values = mDatasetAllItems; + results.count = mDatasetAllItems.size(); + } + } else { + final String searchStrLowerCase = prefix.toString().toLowerCase(); + + ArrayList matchValues = new ArrayList<>(); + + for (DialogAskClienteDestinatarioDTO dataItem : mDatasetAllItems) { + if (dataItem.toString().toLowerCase().startsWith(searchStrLowerCase)) { + matchValues.add(dataItem); + } + } + + results.values = matchValues; + results.count = matchValues.size(); + } + + return results; + } + + @Override + protected void publishResults(CharSequence constraint, FilterResults results) { + if (results.values != null) { + mDataset.clear(); + mDataset.addAll((ArrayList) results.values); + } else { + mDataset.clear(); + } + if (results.count > 0) { + notifyDataSetChanged(); + } else { + notifyDataSetInvalidated(); + } + } + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/IDialogAskClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/IDialogAskClienteViewModel.java new file mode 100644 index 00000000..57271d6d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/IDialogAskClienteViewModel.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel; + +import android.content.Context; + +import androidx.databinding.ViewDataBinding; + +public interface IDialogAskClienteViewModel { + + void setContext(Context context); + + void setBinding(ViewDataBinding binding); + + void onShow(); + + void setOnConfirmClickListener(Runnable onConfirm); + + void setOnAbortClickListener(Runnable onAbort); +} 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 245fd0d8..3148c251 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 @@ -55,7 +55,7 @@ public class DialogAskPositionOfLU { return new DialogAskPositionOfLU(context, mtbColtToUpdate, onComplete, onFailed).mDialog; } - public DialogAskPositionOfLU(Context context, MtbColt mtbColtToUpdate, RunnableArgss onComplete, RunnableArgs onFailed) { + private DialogAskPositionOfLU(Context context, MtbColt mtbColtToUpdate, RunnableArgss onComplete, RunnableArgs onFailed) { mContext = context; mtbColt = mtbColtToUpdate; diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 44890cf1..d7703683 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -102,34 +102,6 @@ app:binding="@{loginViewModel.codAzienda}"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/dialog_ask_cliente.xml b/app/src/main/res/layout/dialog_ask_cliente.xml new file mode 100644 index 00000000..a98e4009 --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_cliente.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_cliente__dropdown_item.xml b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item.xml new file mode 100644 index 00000000..177f556b --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item.xml @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml new file mode 100644 index 00000000..e384cfd4 --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_cliente__page1.xml b/app/src/main/res/layout/dialog_ask_cliente__page1.xml new file mode 100644 index 00000000..624cac08 --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_cliente__page1.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_cliente__page2.xml b/app/src/main/res/layout/dialog_ask_cliente__page2.xml new file mode 100644 index 00000000..ade75caa --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_cliente__page2.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_ask_position_of_lu.xml b/app/src/main/res/layout/dialog_ask_position_of_lu.xml index 4c30f378..81eded53 100644 --- a/app/src/main/res/layout/dialog_ask_position_of_lu.xml +++ b/app/src/main/res/layout/dialog_ask_position_of_lu.xml @@ -55,7 +55,6 @@ android:gravity="center_horizontal"/> - @@ -286,7 +286,7 @@ android:layout_marginTop="16dp" android:text="@string/vendita_title_fragment" android:textAllCaps="true" - android:textColor="@color/grey_700" + android:textColor="@color/gray_700" android:textStyle="bold" /> @@ -330,7 +330,7 @@ android:gravity="center_horizontal" android:text="@string/rettifica_giacenze_fragment_title" android:textAllCaps="true" - android:textColor="@color/grey_700" + android:textColor="@color/gray_700" android:textStyle="bold" /> @@ -375,7 +375,7 @@ android:gravity="center_horizontal" android:text="@string/versamento_merce_fragment_title" android:textAllCaps="true" - android:textColor="@color/grey_700" + android:textColor="@color/gray_700" android:textStyle="bold" /> @@ -421,7 +421,7 @@ android:gravity="center_horizontal" android:text="@string/free_picking" android:textAllCaps="true" - android:textColor="@color/grey_700" + android:textColor="@color/gray_700" android:textStyle="bold" /> @@ -467,7 +467,7 @@ android:gravity="center_horizontal" android:text="@string/fragment_ultime_consegne_cliente_title" android:textAllCaps="true" - android:textColor="@color/grey_700" + android:textColor="@color/gray_700" android:textStyle="bold" /> @@ -538,7 +538,7 @@ android:gravity="center_horizontal" android:text="@string/prod_versamento_materiale_title_fragment" android:textAllCaps="true" - android:textColor="@color/grey_700" + android:textColor="@color/gray_700" android:textStyle="bold" /> @@ -583,7 +583,7 @@ android:gravity="center_horizontal" android:text="@string/prod_recupero_materiale_title_fragment" android:textAllCaps="true" - android:textColor="@color/grey_700" + android:textColor="@color/gray_700" android:textStyle="bold" /> diff --git a/app/src/main/res/layout/fragment_main_accettazione.xml b/app/src/main/res/layout/fragment_main_accettazione.xml index 084b0ba5..5a851576 100644 --- a/app/src/main/res/layout/fragment_main_accettazione.xml +++ b/app/src/main/res/layout/fragment_main_accettazione.xml @@ -25,6 +25,60 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nessuna UL registrata a magazzino Nessun articolo da prelevare + Nessun ordine da evadere Nessun articolo @@ -157,6 +158,7 @@ Numero ordine Cliente + Destinatario Data consegna Termini di consegna Automezzo @@ -209,4 +211,9 @@ Produzione Versamento materiale Recupero materiale + + Prima di procedere seleziona un cliente + Prima di procedere seleziona un destinatario + Cliente non valido + Destinatario non valido \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index ac7c680e..8d337f0c 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -42,8 +42,11 @@ #388E3C - #616161 - #424242 + #BDBDBD + #9E9E9E + #757575 + #616161 + #424242 #813f51b5 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 834d9100..ae3af675 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -142,6 +142,7 @@ No LU already registered No items to pick + No orders to dispatch No items The scanned label has already been used @@ -163,6 +164,7 @@ Orders number Customer + Recipient Ship date Terms of delivery Vehicle @@ -215,4 +217,10 @@ Recover raw material + Please, select a customer before proceeding + Please, select a recipient before proceeding + Invalid customer + Invalid recipient + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 954361d1..1c1d7141 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -24,6 +24,10 @@ @font/product_sans_regular normal + + + + + @@ -127,5 +138,4 @@ -