In picking libero è stata aggiunta la possibilità di scansionare un barcode che indichi un cliente o una commessa.
This commit is contained in:
parent
1440c52322
commit
65532a3185
@ -54,6 +54,7 @@ public class MtbColt extends EntityBase {
|
||||
private BigDecimal lunghezzaCm;
|
||||
private BigDecimal larghezzaCm;
|
||||
private BigDecimal altezzaCm;
|
||||
private String codJcom;
|
||||
|
||||
private List<MtbCols> mtbCols;
|
||||
|
||||
@ -500,6 +501,15 @@ public class MtbColt extends EntityBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodJcom() {
|
||||
return codJcom;
|
||||
}
|
||||
|
||||
public MtbColt setCodJcom(String codJcom) {
|
||||
this.codJcom = codJcom;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void generaFiltroOrdineFromDTO(List<FiltroOrdineDTO> filtroOrdineDtos) {
|
||||
|
||||
String xmlPrefix = "{\"whereCond\": \"";
|
||||
|
||||
@ -309,10 +309,10 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort) {
|
||||
DialogAskCliente.makeBase(getActivity(), (status, result) -> {
|
||||
public void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
|
||||
DialogAskCliente.makeBase(getActivity(), (status, result, codJcom) -> {
|
||||
if (status == DialogConsts.Results.YES) {
|
||||
onComplete.run(result);
|
||||
onComplete.run(result, codJcom);
|
||||
} else {
|
||||
onAbort.run();
|
||||
}
|
||||
@ -401,7 +401,8 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
@Override
|
||||
public void onPreDestroy(Runnable onComplete) {
|
||||
if(thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
if(thereIsAnOpenedUL.get()) mViewModel.closeLU(onComplete);
|
||||
else onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,9 +6,7 @@ import com.annimon.stream.Stream;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
@ -181,15 +179,15 @@ public class PickingLiberoViewModel {
|
||||
|
||||
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||
if (this.mFlagAskCliente) {
|
||||
this.sendLUClienteRequired(vtbDest -> {
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete);
|
||||
this.sendLUClienteRequired((vtbDest, codJcom) -> {
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete);
|
||||
}, onComplete);
|
||||
} else {
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, onComplete);
|
||||
createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, null, onComplete);
|
||||
}
|
||||
}
|
||||
|
||||
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) {
|
||||
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJcom, Runnable onComplete) {
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields();
|
||||
mtbColt.setGestione(mDefaultGestione)
|
||||
@ -211,6 +209,10 @@ public class PickingLiberoViewModel {
|
||||
mtbColt.setCodVdes(vtbDest.getCodVdes());
|
||||
}
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(codJcom)) {
|
||||
mtbColt.setCodJcom(codJcom);
|
||||
}
|
||||
|
||||
mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
|
||||
mtbColt
|
||||
.setNumCollo(value.getNumCollo())
|
||||
@ -233,9 +235,9 @@ public class PickingLiberoViewModel {
|
||||
BigDecimal qtaColDaPrelevare = null;
|
||||
BigDecimal qtaCnfDaPrelevare = null;
|
||||
|
||||
BigDecimal initialNumCnf = null;
|
||||
BigDecimal initialQtaCnf = null;
|
||||
BigDecimal initialQtaTot = null;
|
||||
BigDecimal initialNumCnf;
|
||||
BigDecimal initialQtaCnf;
|
||||
BigDecimal initialQtaTot;
|
||||
|
||||
String partitaMag = null;
|
||||
Date dataScad = null;
|
||||
@ -758,7 +760,7 @@ public class PickingLiberoViewModel {
|
||||
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
|
||||
}
|
||||
|
||||
private void sendLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort) {
|
||||
private void sendLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort) {
|
||||
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
|
||||
}
|
||||
|
||||
@ -816,7 +818,7 @@ public class PickingLiberoViewModel {
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void onLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort);
|
||||
void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort);
|
||||
|
||||
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
|
||||
import it.integry.integrywmsnative.core.model.VtbDest;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDialog;
|
||||
import it.integry.integrywmsnative.databinding.DialogAskClienteBinding;
|
||||
@ -32,11 +32,11 @@ public class DialogAskCliente {
|
||||
private DialogAskClienteBinding mBinding;
|
||||
|
||||
|
||||
public static Dialog makeBase(final Context context, RunnableArgss<DialogConsts.Results, VtbDest> onComplete) {
|
||||
public static Dialog makeBase(final Context context, RunnableArgsss<DialogConsts.Results, VtbDest, String> onComplete) {
|
||||
return new DialogAskCliente(context, onComplete).mDialog;
|
||||
}
|
||||
|
||||
public DialogAskCliente(Context context, RunnableArgss<DialogConsts.Results, VtbDest> onComplete) {
|
||||
public DialogAskCliente(Context context, RunnableArgsss<DialogConsts.Results, VtbDest, String> onComplete) {
|
||||
mContext = context;
|
||||
|
||||
|
||||
@ -72,25 +72,24 @@ public class DialogAskCliente {
|
||||
|
||||
viewModel1
|
||||
.setOnConfirmClickListener(() -> {
|
||||
|
||||
viewModel2.setCodAnag(viewModel1.getCurrentCliente().getCodAnag());
|
||||
viewModel2.setCodAnag(viewModel1.getCurrentCliente());
|
||||
|
||||
mBinding.viewpager.setCurrentItem(mBinding.viewpager.getCurrentItem() + 1, true);
|
||||
});
|
||||
|
||||
viewModel1.setOnAbortClickListener(() -> {
|
||||
mDialog.dismiss();
|
||||
onComplete.run(DialogConsts.Results.ABORT, null);
|
||||
onComplete.run(DialogConsts.Results.ABORT, null, null);
|
||||
});
|
||||
|
||||
viewModel2.setOnConfirmClickListener(() -> {
|
||||
onComplete.run(DialogConsts.Results.YES, viewModel2.getCurrentDestinatario().toVtbDestModel());
|
||||
onComplete.run(DialogConsts.Results.YES, viewModel2.getCurrentDestinatario().toVtbDestModel(), viewModel1.getCurrentCommessa());
|
||||
mDialog.dismiss();
|
||||
});
|
||||
|
||||
viewModel2.setOnAbortClickListener(() -> {
|
||||
mDialog.dismiss();
|
||||
onComplete.run(DialogConsts.Results.ABORT, null);
|
||||
onComplete.run(DialogConsts.Results.ABORT, null, null);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.ask_cliente.dto;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class DialogAskClienteClienteDTO {
|
||||
|
||||
private String codAnag;
|
||||
|
||||
private String ragSoc;
|
||||
private ArrayList<String> codJcoms = new ArrayList<>();
|
||||
|
||||
public String getCodAnag() {
|
||||
return codAnag;
|
||||
@ -24,6 +26,14 @@ public class DialogAskClienteClienteDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArrayList<String> getCodJcoms() {
|
||||
return codJcoms;
|
||||
}
|
||||
|
||||
public DialogAskClienteClienteDTO setCodJcoms(ArrayList<String> codJcoms) {
|
||||
this.codJcoms = codJcoms;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@ -2,18 +2,32 @@ package it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.databinding.ViewDataBinding;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.tfb.fbtoast.FBToast;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
|
||||
import it.integry.integrywmsnative.databinding.DialogAskClientePage1Binding;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteClienteDTO;
|
||||
|
||||
@ -22,7 +36,10 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
||||
private Context mContext;
|
||||
private DialogAskClientePage1Binding mBinding;
|
||||
|
||||
private List<DialogAskClienteClienteDTO> availableClienti;
|
||||
private int mBarcodeScannerInstanceID;
|
||||
|
||||
private ArrayList<DialogAskClienteClienteDTO> availableClienti;
|
||||
private ObservableArrayList<String> codJcoms = new ObservableArrayList<>();
|
||||
|
||||
public DialogAskCliente_Page1ViewModel() {
|
||||
|
||||
@ -41,18 +58,43 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
||||
@Override
|
||||
public void onShow() {
|
||||
|
||||
String sql = "SELECT gtb_anag.cod_anag, rag_soc " +
|
||||
String sql = "SELECT gtb_anag.cod_anag, rag_soc, jtb_comt.cod_jcom " +
|
||||
"FROM gtb_anag " +
|
||||
"LEFT OUTER JOIN jtb_comt ON gtb_anag.cod_anag = jtb_comt.cod_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.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteClienteDTO>>() {
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<HashMap<String, Object>>>() {
|
||||
}.getType();
|
||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<HashMap<String, Object>>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<DialogAskClienteClienteDTO> value) {
|
||||
availableClienti = value;
|
||||
initializeAdapter(value);
|
||||
public void onSuccess(ArrayList<HashMap<String, Object>> value) {
|
||||
|
||||
availableClienti = new ArrayList<>();
|
||||
|
||||
Stream.of(value)
|
||||
.groupBy(x -> x.get("codAnag").toString() + " " + x.get("ragSoc").toString())
|
||||
.forEach(x -> {
|
||||
DialogAskClienteClienteDTO dialogAskClienteClienteDTO = new DialogAskClienteClienteDTO();
|
||||
dialogAskClienteClienteDTO.setCodAnag(UtilityHashMap.getValueIfExists(x.getValue().get(0), "codAnag"));
|
||||
dialogAskClienteClienteDTO.setRagSoc(UtilityHashMap.getValueIfExists(x.getValue().get(0), "ragSoc"));
|
||||
|
||||
for (HashMap<String, Object> group : x.getValue()) {
|
||||
if (group.containsKey("codJcom")) {
|
||||
dialogAskClienteClienteDTO.getCodJcoms().add(UtilityHashMap.getValueIfExists(group, "codJcom"));
|
||||
}
|
||||
}
|
||||
|
||||
availableClienti.add(dialogAskClienteClienteDTO);
|
||||
});
|
||||
|
||||
initializeAdapter(availableClienti);
|
||||
|
||||
mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessful)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -66,9 +108,10 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
||||
@Override
|
||||
public void setOnConfirmClickListener(Runnable onConfirm) {
|
||||
this.mBinding.buttonYes.setOnClickListener(v -> {
|
||||
if(validateCliente()) {
|
||||
if (validateCliente()) {
|
||||
this.resetClienteError();
|
||||
if(onConfirm != null) onConfirm.run();
|
||||
BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
|
||||
if (onConfirm != null) onConfirm.run();
|
||||
} else {
|
||||
this.setClienteError(mContext.getResources().getText(R.string.not_valid_customer_error).toString());
|
||||
}
|
||||
@ -76,22 +119,90 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
String barcode = data.getStringValue();
|
||||
|
||||
DialogAskClienteClienteDTO resultCodAnag = searchBarcodeInCodAnag(barcode);
|
||||
|
||||
if (resultCodAnag != null) {
|
||||
mBinding.dropdownCliente.setText(resultCodAnag.toString());
|
||||
refreshCodJcoms(resultCodAnag);
|
||||
} else {
|
||||
DialogAskClienteClienteDTO resultCodJcom = searchBarcodeInCodJcom(barcode);
|
||||
|
||||
if(resultCodJcom != null) {
|
||||
mBinding.dropdownCliente.setText(resultCodJcom.toString());
|
||||
refreshCodJcoms(resultCodJcom);
|
||||
mBinding.dropdownCommessa.setText(barcode);
|
||||
} else {
|
||||
FBToast.errorToast(mContext, "Nessun risultato trovato", Toast.LENGTH_LONG);
|
||||
mBinding.dropdownCliente.setText("");
|
||||
mBinding.dropdownCommessa.setText("");
|
||||
}
|
||||
}
|
||||
|
||||
BarcodeManager.enable();
|
||||
};
|
||||
|
||||
|
||||
private DialogAskClienteClienteDTO searchBarcodeInCodAnag(String barcode) {
|
||||
List<DialogAskClienteClienteDTO> resultCodAnag = Stream.of(availableClienti)
|
||||
.filter(x -> barcode.equalsIgnoreCase(x.getCodAnag()))
|
||||
.toList();
|
||||
if (resultCodAnag.size() > 0) {
|
||||
return resultCodAnag.get(0);
|
||||
} else return null;
|
||||
}
|
||||
|
||||
private DialogAskClienteClienteDTO searchBarcodeInCodJcom(String barcode) {
|
||||
List<DialogAskClienteClienteDTO> resultCodJcom = Stream.of(availableClienti)
|
||||
.filter(x -> x.getCodJcoms().contains(barcode))
|
||||
.toList();
|
||||
if (resultCodJcom.size() > 0) {
|
||||
return resultCodJcom.get(0);
|
||||
} else return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnAbortClickListener(Runnable onAbort) {
|
||||
this.mBinding.buttonNo.setOnClickListener(v -> {
|
||||
if(onAbort != null) onAbort.run();
|
||||
if (onAbort != null) onAbort.run();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void initializeAdapter(ArrayList<DialogAskClienteClienteDTO> items) {
|
||||
DialogAskCliente_Page1_Cliente_ArrayAdapter adapter = new DialogAskCliente_Page1_Cliente_ArrayAdapter(mContext, items);
|
||||
|
||||
DialogAskCliente_Page1_ArrayAdapter adapter = new DialogAskCliente_Page1_ArrayAdapter(mContext, items);
|
||||
AutoCompleteTextView editTextDropdownCliente = mBinding.dropdownCliente;
|
||||
editTextDropdownCliente.setThreshold(0);
|
||||
editTextDropdownCliente.setAdapter(adapter);
|
||||
editTextDropdownCliente.setOnItemClickListener((parent, view, position, id) -> {
|
||||
refreshCodJcoms(items.get(position));
|
||||
});
|
||||
|
||||
|
||||
AutoCompleteTextView editTextFilledExposedDropdown = mBinding.filledExposedDropdown;
|
||||
editTextFilledExposedDropdown.setThreshold(0);
|
||||
editTextFilledExposedDropdown.setAdapter(adapter);
|
||||
DialogAskCliente_Page1_Commessa_ArrayAdapter commessaAdapter = new DialogAskCliente_Page1_Commessa_ArrayAdapter(mContext);
|
||||
|
||||
AutoCompleteTextView editTextDropdownCommessa = mBinding.dropdownCommessa;
|
||||
editTextDropdownCommessa.setThreshold(0);
|
||||
editTextDropdownCommessa.setAdapter(commessaAdapter);
|
||||
|
||||
codJcoms.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||
@Override
|
||||
public void onChanged(ObservableList sender) {
|
||||
commessaAdapter.clear();
|
||||
commessaAdapter.addAll(codJcoms);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshCodJcoms(DialogAskClienteClienteDTO item) {
|
||||
codJcoms.clear();
|
||||
codJcoms.addAll(item.getCodJcoms());
|
||||
}
|
||||
|
||||
|
||||
@ -99,22 +210,34 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
|
||||
return getCurrentCliente() != null;
|
||||
}
|
||||
|
||||
public DialogAskClienteClienteDTO getCurrentCliente() {
|
||||
for (DialogAskClienteClienteDTO cliente : availableClienti) {
|
||||
if(cliente.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString())) {
|
||||
return cliente;
|
||||
}
|
||||
public String getCurrentCliente() {
|
||||
Optional<DialogAskClienteClienteDTO> result = Stream.of(availableClienti)
|
||||
.filter(x -> x.getRagSoc().equalsIgnoreCase(mBinding.inputCliente.getEditText().getText().toString()))
|
||||
.findFirst();
|
||||
|
||||
if(result.isPresent()) return result.get().getCodAnag();
|
||||
else return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
public String getCurrentCommessa() {
|
||||
String codAnag = getCurrentCliente();
|
||||
Optional<ArrayList<String>> result = Stream.of(availableClienti)
|
||||
.filter(x -> x.getCodAnag().equalsIgnoreCase(codAnag))
|
||||
.map(DialogAskClienteClienteDTO::getCodJcoms)
|
||||
.findFirst();
|
||||
|
||||
if(result.isPresent() && Stream.of(result.get()).anyMatch(x -> x.equalsIgnoreCase(mBinding.inputCommessa.getEditText().getText().toString()))) {
|
||||
return mBinding.inputCommessa.getEditText().getText().toString();
|
||||
} else return null;
|
||||
}
|
||||
|
||||
|
||||
private void setClienteError(String message){
|
||||
private void setClienteError(String message) {
|
||||
mBinding.inputCliente.setErrorEnabled(true);
|
||||
mBinding.inputCliente.setError(message);
|
||||
mBinding.inputCliente.setErrorIconDrawable(null);
|
||||
}
|
||||
|
||||
private void resetClienteError() {
|
||||
mBinding.inputCliente.setError(null);
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
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;
|
||||
@ -9,7 +8,6 @@ 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;
|
||||
@ -20,7 +18,7 @@ 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 {
|
||||
public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<DialogAskClienteClienteDTO> implements Filterable {
|
||||
|
||||
private Context mContext;
|
||||
private List<DialogAskClienteClienteDTO> mDataset;
|
||||
@ -28,7 +26,7 @@ public class DialogAskCliente_Page1_ArrayAdapter extends ArrayAdapter<DialogAskC
|
||||
|
||||
private ListFilter listFilter = new ListFilter();
|
||||
|
||||
public DialogAskCliente_Page1_ArrayAdapter(@NonNull Context context, @NonNull ArrayList<DialogAskClienteClienteDTO> list) {
|
||||
public DialogAskCliente_Page1_Cliente_ArrayAdapter(@NonNull Context context, @NonNull ArrayList<DialogAskClienteClienteDTO> list) {
|
||||
super(context, 0 , list);
|
||||
mContext = context;
|
||||
mDataset = list;
|
||||
@ -43,13 +41,13 @@ public class DialogAskCliente_Page1_ArrayAdapter extends ArrayAdapter<DialogAskC
|
||||
}
|
||||
|
||||
if(position < mDataset.size()) {
|
||||
|
||||
AppCompatTextView textView = listItem.findViewById(R.id.text);
|
||||
|
||||
textView.setText(mDataset.get(position).getRagSoc());
|
||||
|
||||
return listItem;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -0,0 +1,110 @@
|
||||
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;
|
||||
|
||||
public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter<String> implements Filterable {
|
||||
|
||||
private Context mContext;
|
||||
private List<String> mDataset = new ArrayList<>();
|
||||
private List<String> mDatasetAllItems;
|
||||
|
||||
private DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter listFilter = new DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter();
|
||||
|
||||
public DialogAskCliente_Page1_Commessa_ArrayAdapter(@NonNull Context context) {
|
||||
super(context, 0);
|
||||
mContext = context;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@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 < getCount()) {
|
||||
AppCompatTextView textView = listItem.findViewById(R.id.text);
|
||||
textView.setText(getItem(position));
|
||||
return listItem;
|
||||
}
|
||||
return convertView;
|
||||
}
|
||||
|
||||
|
||||
@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<String> matchValues = new ArrayList<>();
|
||||
|
||||
for (String dataItem : mDatasetAllItems) {
|
||||
if (dataItem.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<String>) results.values);
|
||||
} else {
|
||||
mDataset.clear();
|
||||
}
|
||||
if (results.count > 0) {
|
||||
notifyDataSetChanged();
|
||||
} else {
|
||||
notifyDataSetInvalidated();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -44,12 +44,12 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
||||
|
||||
@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();
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteDestinatarioDTO>>() {
|
||||
}.getType();
|
||||
SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteDestinatarioDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<DialogAskClienteDestinatarioDTO> value) {
|
||||
@ -67,9 +67,9 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
||||
@Override
|
||||
public void setOnConfirmClickListener(Runnable onConfirm) {
|
||||
this.mBinding.buttonYes.setOnClickListener(v -> {
|
||||
if(validateDestinatario()) {
|
||||
if (validateDestinatario()) {
|
||||
this.resetClienteError();
|
||||
if(onConfirm != null) onConfirm.run();
|
||||
if (onConfirm != null) onConfirm.run();
|
||||
} else {
|
||||
this.setClienteError(mContext.getResources().getText(R.string.not_valid_recipient_error).toString());
|
||||
}
|
||||
@ -80,7 +80,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
||||
@Override
|
||||
public void setOnAbortClickListener(Runnable onAbort) {
|
||||
this.mBinding.buttonNo.setOnClickListener(v -> {
|
||||
if(onAbort != null) onAbort.run();
|
||||
if (onAbort != null) onAbort.run();
|
||||
});
|
||||
}
|
||||
|
||||
@ -88,12 +88,13 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
||||
this.mCodAnag = codAnag;
|
||||
}
|
||||
|
||||
|
||||
private void initializeAdapter(ArrayList<DialogAskClienteDestinatarioDTO> items) {
|
||||
|
||||
DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items);
|
||||
|
||||
|
||||
AutoCompleteTextView editTextFilledExposedDropdown = mBinding.filledExposedDropdown;
|
||||
AutoCompleteTextView editTextFilledExposedDropdown = mBinding.dropdownDestinatario;
|
||||
editTextFilledExposedDropdown.setThreshold(0);
|
||||
editTextFilledExposedDropdown.setAdapter(adapter);
|
||||
}
|
||||
@ -105,7 +106,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
||||
|
||||
public DialogAskClienteDestinatarioDTO getCurrentDestinatario() {
|
||||
for (DialogAskClienteDestinatarioDTO destinatarioDTO : availableDestinatari) {
|
||||
if(destinatarioDTO.toString().equalsIgnoreCase(mBinding.inputDestinatario.getEditText().getText().toString())) {
|
||||
if (destinatarioDTO.toString().equalsIgnoreCase(mBinding.inputDestinatario.getEditText().getText().toString())) {
|
||||
return destinatarioDTO;
|
||||
}
|
||||
}
|
||||
@ -114,11 +115,12 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
|
||||
}
|
||||
|
||||
|
||||
private void setClienteError(String message){
|
||||
private void setClienteError(String message) {
|
||||
mBinding.inputDestinatario.setErrorEnabled(true);
|
||||
mBinding.inputDestinatario.setError(message);
|
||||
mBinding.inputDestinatario.setErrorIconDrawable(null);
|
||||
}
|
||||
|
||||
private void resetClienteError() {
|
||||
mBinding.inputDestinatario.setError(null);
|
||||
}
|
||||
|
||||
@ -34,9 +34,10 @@
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
|
||||
<RelativeLayout
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_cliente"
|
||||
@ -46,14 +47,30 @@
|
||||
android:hint="@string/customer">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown"
|
||||
android:id="@+id/dropdown_cliente"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_commessa"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/job">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/dropdown_commessa"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
android:hint="@string/recipient">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
|
||||
android:id="@+id/filled_exposed_dropdown"
|
||||
android:id="@+id/dropdown_destinatario"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
|
||||
@ -200,6 +200,7 @@
|
||||
<string name="num_ords">Numero ordine</string>
|
||||
<string name="order_cod_jcoms">Commessa</string>
|
||||
<string name="customer">Cliente</string>
|
||||
<string name="job">Commessa</string>
|
||||
<string name="recipient">Destinatario</string>
|
||||
<string name="ship_date">Data consegna</string>
|
||||
<string name="document_date">Data documento</string>
|
||||
|
||||
@ -203,6 +203,7 @@
|
||||
<string name="num_ords">Orders number</string>
|
||||
<string name="order_cod_jcoms">Orders job</string>
|
||||
<string name="customer">Customer</string>
|
||||
<string name="job">Job</string>
|
||||
<string name="recipient">Recipient</string>
|
||||
<string name="ship_date">Ship date</string>
|
||||
<string name="document_date">Document date</string>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user