Implementato bottom sheet per le action di modifica/delete riga in collo.
Implementata data scad in DialogInputQuantity.
This commit is contained in:
@@ -4,6 +4,7 @@ import android.databinding.BindingAdapter;
|
||||
import android.databinding.BindingConversion;
|
||||
import android.support.design.widget.TextInputEditText;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.support.v7.widget.AppCompatTextView;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
@@ -73,6 +74,27 @@ public class Converters {
|
||||
}
|
||||
}
|
||||
|
||||
@BindingAdapter("app:binding")
|
||||
public static void bindTextView(AppCompatTextView view, final BindableString bindableString) {
|
||||
Pair<BindableString, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
|
||||
if (pair == null || pair.first != bindableString) {
|
||||
if (pair != null) {
|
||||
view.removeTextChangedListener(pair.second);
|
||||
}
|
||||
TextWatcherAdapter watcher = new TextWatcherAdapter() {
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
bindableString.set(s.toString());
|
||||
}
|
||||
};
|
||||
view.setTag(R.id.bound_observable, new Pair<>(bindableString, watcher));
|
||||
view.addTextChangedListener(watcher);
|
||||
}
|
||||
String newValue = bindableString.get();
|
||||
if (!view.getText().toString().equals(newValue)) {
|
||||
view.setText(newValue);
|
||||
}
|
||||
}
|
||||
|
||||
@BindingAdapter("app:binding")
|
||||
public static void bindTextInputEditText(TextInputEditText view, final BindableFloat bindableFloat) {
|
||||
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.getDefault());
|
||||
|
||||
@@ -370,9 +370,6 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
|
||||
UtilityExceptions.defaultException(mActivity, ex, progress);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -457,8 +454,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
|
||||
x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.codMart) &&
|
||||
x.getNumOrd() == item.numOrd &&
|
||||
(x.getCodJcom() != null && x.getCodJcom().equalsIgnoreCase(item.codJcom)) &&
|
||||
x.getRigaOrd() == item.rigaOrd
|
||||
).toList();
|
||||
x.getRigaOrd() == item.rigaOrd).toList();
|
||||
|
||||
float qtaEvasaInMtbColr = 0;
|
||||
for (MtbColr mtbColr : filteredMtbColrs) {
|
||||
@@ -479,6 +475,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
.setCodMart(item.mtbAart.codMart)
|
||||
.setPartitaMag(quantityDTO.batchLot.get())
|
||||
.setDataScadPartita(quantityDTO.expireDate)
|
||||
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
|
||||
.setDescrizione(item.descrizioneEstesa)
|
||||
.setNumOrd(item.numOrd)
|
||||
|
||||
@@ -61,17 +61,14 @@ public class MainFragment extends Fragment {
|
||||
|
||||
|
||||
private void init(){
|
||||
ServerStatusChecker.getIstance().addCallback(new ISingleValueOperationCallback<Boolean>() {
|
||||
@Override
|
||||
public void onResult(Boolean value) {
|
||||
if(value && mNoConnectionLayout.isExpanded()){
|
||||
ServerStatusChecker.getIstance().addCallback(value -> {
|
||||
if(value && mNoConnectionLayout.isExpanded()){
|
||||
|
||||
collapseNoConnectionLayout();
|
||||
collapseNoConnectionLayout();
|
||||
|
||||
|
||||
} else if(!value && !mNoConnectionLayout.isExpanded()){
|
||||
expandNoConnectionLayout();
|
||||
}
|
||||
} else if(!value && !mNoConnectionLayout.isExpanded()){
|
||||
expandNoConnectionLayout();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -80,21 +77,11 @@ public class MainFragment extends Fragment {
|
||||
}
|
||||
|
||||
private void collapseNoConnectionLayout(){
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mNoConnectionLayout.collapse(true);
|
||||
}
|
||||
});
|
||||
if(getActivity() != null) getActivity().runOnUiThread(() -> mNoConnectionLayout.collapse(true));
|
||||
}
|
||||
|
||||
private void expandNoConnectionLayout(){
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mNoConnectionLayout.expand(true);
|
||||
}
|
||||
});
|
||||
if(getActivity() != null) getActivity().runOnUiThread(() -> mNoConnectionLayout.expand(true));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.integry.integrywmsnative.view.dialogs.input_quantity;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.ColorStateList;
|
||||
@@ -10,8 +11,10 @@ import android.databinding.ViewDataBinding;
|
||||
import android.graphics.Color;
|
||||
import android.os.Handler;
|
||||
import android.os.SystemClock;
|
||||
import android.support.design.widget.TextInputEditText;
|
||||
import android.support.design.widget.TextInputLayout;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.AppCompatTextView;
|
||||
import android.text.SpannableString;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -20,12 +23,19 @@ import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.DatePicker;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
|
||||
import it.integry.integrywmsnative.BR;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.IButtonDialogAction;
|
||||
@@ -34,6 +44,8 @@ public class DialogInputQuantity {
|
||||
|
||||
private static ColorStateList originalColorStateList = null;
|
||||
|
||||
private static String scadenzaString = "Scadenza";
|
||||
|
||||
public static AlertDialog makeBase(final Context context, OrdineAccettazioneDTO.Riga articoloItem, final float qtaEvasa, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
@@ -90,12 +102,15 @@ public class DialogInputQuantity {
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
initDatePicker(context, quantityDTO, contentView.getRoot().findViewById(R.id.input_data_scad));
|
||||
|
||||
return alert;
|
||||
|
||||
}
|
||||
|
||||
private static void setupQuantities(OrdineAccettazioneDTO.Riga articoloItem, QuantityDTO quantityDTO, float qtaEvasa){
|
||||
float qtaDaEvadere = articoloItem.qtaOrd - qtaEvasa;
|
||||
float qtaDaEvadere = articoloItem.getQtaDaEvadere().floatValue();
|
||||
if (qtaDaEvadere < 0) qtaDaEvadere = 0;
|
||||
|
||||
quantityDTO.qtaEvasa.set(qtaEvasa);
|
||||
@@ -106,7 +121,14 @@ public class DialogInputQuantity {
|
||||
quantityDTO.qtaTot.set(qtaDaEvadere);
|
||||
quantityDTO.numCnf.set(qtaDaEvadere / quantityDTO.qtaCnf.get());
|
||||
|
||||
quantityDTO.shouldAskDataScad.set(articoloItem.mtbAart.isFlagTracciabilita() && articoloItem.mtbAart.ggScadPartita != null && articoloItem.mtbAart.ggScadPartita > 0);
|
||||
quantityDTO.shouldAskDataScad.set(articoloItem.mtbAart.isFlagTracciabilita() && articoloItem.mtbAart.getGgScadPartita() != null && articoloItem.mtbAart.getGgScadPartita() > 0);
|
||||
|
||||
if(quantityDTO.expireDate == null && articoloItem.mtbAart.getGgScadPartita() != null && articoloItem.mtbAart.getGgScadPartita() > 0) {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.add(Calendar.DATE, articoloItem.mtbAart.getGgScadPartita()); // number of days to add
|
||||
|
||||
quantityDTO.expireDate = c.getTime();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -243,13 +265,47 @@ public class DialogInputQuantity {
|
||||
}
|
||||
|
||||
|
||||
private static void initDatePicker(Context context, QuantityDTO quantityDTO, AppCompatTextView textInputLayout) {
|
||||
quantityDTO.expireDateString.set(scadenzaString);
|
||||
|
||||
if(quantityDTO.expireDate != null) {
|
||||
quantityDTO.expireDateString.set(UtilityDate.formatDate(quantityDTO.expireDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
}
|
||||
|
||||
|
||||
Runnable onTextClicked = () -> {
|
||||
// Get Current Date
|
||||
Calendar c = Calendar.getInstance();
|
||||
|
||||
if(quantityDTO.expireDate != null) {
|
||||
c.setTime(quantityDTO.expireDate);
|
||||
}
|
||||
|
||||
int mYear = c.get(Calendar.YEAR);
|
||||
int mMonth = c.get(Calendar.MONTH);
|
||||
int mDay = c.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
DatePickerDialog datePickerDialog = new DatePickerDialog(context,
|
||||
(view, year, month, day) -> {
|
||||
|
||||
quantityDTO.expireDate = new GregorianCalendar(year, month, day).getTime();
|
||||
quantityDTO.expireDateString.set(UtilityDate.formatDate(quantityDTO.expireDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
|
||||
}, mYear, mMonth, mDay);
|
||||
datePickerDialog.show();
|
||||
};
|
||||
|
||||
textInputLayout.setOnClickListener(v -> onTextClicked.run());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static void showQuantityErrorDialog(Context mContext){
|
||||
|
||||
String errorMessage = mContext.getText(R.string.wrong_quantity_input).toString();
|
||||
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(errorMessage), null, null).show();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity;
|
||||
import android.graphics.Color;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
@@ -12,6 +14,9 @@ import it.integry.integrywmsnative.core.di.BindableString;
|
||||
public class QuantityDTO {
|
||||
|
||||
public BindableString batchLot = new BindableString();
|
||||
public BindableString expireDateString = new BindableString();
|
||||
|
||||
public Date expireDate = null;
|
||||
|
||||
public BindableFloat numCnf = new BindableFloat();
|
||||
public BindableFloat qtaCnf = new BindableFloat();
|
||||
|
||||
Reference in New Issue
Block a user