Implementato bottom sheet per le action di modifica/delete riga in collo.

Implementata data scad in DialogInputQuantity.
This commit is contained in:
2018-11-16 19:24:04 +01:00
parent 5a6582fbff
commit 26361912f4
11 changed files with 169 additions and 42 deletions

View File

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

View File

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

View File

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

View File

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

View File

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