Implementata richiesta del cliente in PickingLibero

This commit is contained in:
2019-06-04 12:15:10 +02:00
parent 0b8ae302e6
commit 6f19a8b757
33 changed files with 1576 additions and 58 deletions

View File

@@ -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<VtbDest> CREATOR = new Creator<VtbDest>() {
@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;
}
}

View File

@@ -21,6 +21,7 @@ public class DBSettingsModel {
private String defaultCodAnag;
private String defaultCausaleRettificaGiacenze;
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
private boolean flagAskClienteInPickingLibero;
public List<String> 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;
}
}

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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();
}
}

View File

@@ -130,8 +130,13 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
helper.loadOrdini(new ILoadOrdiniCallback() {
@Override
public void onLoadSuccess(List<OrdineAccettazioneInevasoDTO> 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();
}

View File

@@ -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);

View File

@@ -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<MtbColr> {
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<MtbColr> {
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<MtbColr> {
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<MtbColr> {
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 -> {

View File

@@ -156,9 +156,14 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
mHelper.loadOrdini(new VenditaHelper.ILoadOrdiniCallback() {
@Override
public void onLoadSuccess(List<OrdineVenditaInevasoDTO> 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();

View File

@@ -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<DialogConsts.Results, VtbDest> onComplete) {
return new DialogAskCliente(context, onComplete).mDialog;
}
public DialogAskCliente(Context context, RunnableArgss<DialogConsts.Results, VtbDest> onComplete) {
mContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_cliente, null, false);
List<Map.Entry<Integer, Class>> 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);
});
});
}
}

View File

@@ -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<Map.Entry<Integer, Class>> mDatasetLayout;
private List<Map.Entry<ViewDataBinding, IDialogAskClienteViewModel>> mDatasetViews;
private DeactivatableViewPager viewPager;
public DialogAskClienteAdapter(Context context, List<Map.Entry<Integer, Class>> 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) {
}
}

View File

@@ -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();
}
}

View File

@@ -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());
}
}

View File

@@ -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<DialogAskClienteClienteDTO> 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<ArrayList<DialogAskClienteClienteDTO>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteClienteDTO>>() {
@Override
public void onSuccess(ArrayList<DialogAskClienteClienteDTO> 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<DialogAskClienteClienteDTO> 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);
}
}

View File

@@ -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<DialogAskClienteClienteDTO> implements Filterable {
private Context mContext;
private List<DialogAskClienteClienteDTO> mDataset;
private List<DialogAskClienteClienteDTO> mDatasetAllItems;
private ListFilter listFilter = new ListFilter();
public DialogAskCliente_Page1_ArrayAdapter(@NonNull Context context, @NonNull ArrayList<DialogAskClienteClienteDTO> 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<DialogAskClienteClienteDTO> 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<DialogAskClienteClienteDTO>) results.values);
} else {
mDataset.clear();
}
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}

View File

@@ -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<DialogAskClienteDestinatarioDTO> 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<ArrayList<DialogAskClienteDestinatarioDTO>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteDestinatarioDTO>>() {
@Override
public void onSuccess(ArrayList<DialogAskClienteDestinatarioDTO> 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<DialogAskClienteDestinatarioDTO> 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);
}
}

View File

@@ -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<DialogAskClienteDestinatarioDTO> implements Filterable {
private Context mContext;
private List<DialogAskClienteDestinatarioDTO> mDataset;
private List<DialogAskClienteDestinatarioDTO> mDatasetAllItems;
private ListFilter listFilter = new ListFilter();
public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull ArrayList<DialogAskClienteDestinatarioDTO> 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<DialogAskClienteDestinatarioDTO> 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<DialogAskClienteDestinatarioDTO>) results.values);
} else {
mDataset.clear();
}
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
}
}

View File

@@ -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);
}

View File

@@ -55,7 +55,7 @@ public class DialogAskPositionOfLU {
return new DialogAskPositionOfLU(context, mtbColtToUpdate, onComplete, onFailed).mDialog;
}
public DialogAskPositionOfLU(Context context, MtbColt mtbColtToUpdate, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
private DialogAskPositionOfLU(Context context, MtbColt mtbColtToUpdate, RunnableArgss<DialogConsts.Results, MtbDepoPosizione> onComplete, RunnableArgs<Exception> onFailed) {
mContext = context;
mtbColt = mtbColtToUpdate;