Migliorata gestione errori DialogInputQuantity
This commit is contained in:
parent
26361912f4
commit
ab183893b0
@ -463,7 +463,7 @@ public class AccettazioneOnOrdineInevasoViewModel implements IOnColloClosedCallb
|
||||
|
||||
float qtaEvasa = item.qtaRiservate + qtaEvasaInMtbColr;
|
||||
|
||||
DialogInputQuantity.makeBase(mActivity, item, qtaEvasa, value -> onOrdineRowDispatched(item, value)).show();
|
||||
DialogInputQuantity.makeBase(mActivity, item, qtaEvasa, true, value -> onOrdineRowDispatched(item, value)).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,42 +3,32 @@ 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;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.databinding.Observable;
|
||||
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.Html;
|
||||
import android.text.SpannableString;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.EditText;
|
||||
|
||||
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;
|
||||
|
||||
public class DialogInputQuantity {
|
||||
|
||||
@ -46,12 +36,16 @@ public class DialogInputQuantity {
|
||||
|
||||
private static String scadenzaString = "Scadenza";
|
||||
|
||||
public static AlertDialog makeBase(final Context context, OrdineAccettazioneDTO.Riga articoloItem, final float qtaEvasa, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
||||
private static AlertDialog currentAlert;
|
||||
|
||||
public static AlertDialog makeBase(final Context context, OrdineAccettazioneDTO.Riga articoloItem, final float qtaEvasa, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
|
||||
ViewDataBinding contentView = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_articolo, null, false);
|
||||
|
||||
final TextInputLayout txlInputBatchLot = contentView.getRoot().findViewById(R.id.input_partita_mag);
|
||||
|
||||
final TextInputLayout txlInputNumDiCnf = contentView.getRoot().findViewById(R.id.input_num_cnf);
|
||||
final TextInputLayout txlInputQtaPerCnf = contentView.getRoot().findViewById(R.id.input_qta_cnf);
|
||||
final TextInputLayout txlInputQtaTot = contentView.getRoot().findViewById(R.id.input_qta_tot);
|
||||
@ -64,6 +58,7 @@ public class DialogInputQuantity {
|
||||
originalColorStateList = txlInputNumDiCnf.getEditText().getTextColors();
|
||||
|
||||
final QuantityDTO quantityDTO = new QuantityDTO();
|
||||
quantityDTO.canOverflowQuantity = canOverflowQuantity;
|
||||
|
||||
setupQuantities(articoloItem, quantityDTO, qtaEvasa);
|
||||
|
||||
@ -77,35 +72,36 @@ public class DialogInputQuantity {
|
||||
.setPositiveButton(context.getText(R.string.confirm), null)
|
||||
.setNegativeButton(context.getText(R.string.abort), null);
|
||||
|
||||
final AlertDialog alert = alertDialog.create();
|
||||
alert.setCanceledOnTouchOutside(false);
|
||||
currentAlert = alertDialog.create();
|
||||
currentAlert.setCanceledOnTouchOutside(false);
|
||||
|
||||
alert.setOnShowListener(dialogInterface -> {
|
||||
currentAlert.setOnShowListener(dialogInterface -> {
|
||||
|
||||
final Handler handler = new Handler();
|
||||
handler.postDelayed(() -> {
|
||||
txlInputNumDiCnf.getEditText().requestFocus();
|
||||
EditText editTextToFocus;
|
||||
if(quantityDTO.canPartitaMagBeChanged.get()) {
|
||||
editTextToFocus = txlInputBatchLot.getEditText();
|
||||
} else {
|
||||
editTextToFocus = txlInputNumDiCnf.getEditText();
|
||||
}
|
||||
|
||||
|
||||
editTextToFocus.requestFocus();
|
||||
|
||||
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.showSoftInput(txlInputNumDiCnf.getEditText(), InputMethodManager.SHOW_IMPLICIT);
|
||||
imm.showSoftInput(editTextToFocus, InputMethodManager.SHOW_IMPLICIT);
|
||||
}, 100);
|
||||
|
||||
Button positiveButton = alert.getButton(AlertDialog.BUTTON_POSITIVE);
|
||||
Button positiveButton = currentAlert.getButton(AlertDialog.BUTTON_POSITIVE);
|
||||
|
||||
positiveButton.setOnClickListener(view -> {
|
||||
if(quantityDTO.qtaCnf.get() <= 0 || quantityDTO.numCnf.get() <= 0 || quantityDTO.qtaTot.get() <= 0) {
|
||||
showQuantityErrorDialog(context);
|
||||
} else {
|
||||
dialogCallback.onResult(quantityDTO);
|
||||
alert.dismiss();
|
||||
}
|
||||
});
|
||||
positiveButton.setOnClickListener(view -> onConfirm(context, quantityDTO, dialogCallback));
|
||||
});
|
||||
|
||||
|
||||
initDatePicker(context, quantityDTO, contentView.getRoot().findViewById(R.id.input_data_scad));
|
||||
|
||||
return alert;
|
||||
return currentAlert;
|
||||
|
||||
}
|
||||
|
||||
@ -301,11 +297,61 @@ public class DialogInputQuantity {
|
||||
}
|
||||
|
||||
|
||||
private static void onConfirm(Context context, QuantityDTO quantityDTO, ISingleValueOperationCallback<QuantityDTO> dialogCallback){
|
||||
if(quantityDTO.shouldAskDataScad.get() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){
|
||||
|
||||
showBatchLotErrorPrompt(context);
|
||||
|
||||
} else if(quantityDTO.shouldAskDataScad.get() && quantityDTO.expireDate == null){
|
||||
|
||||
showExpireDateErrorPrompt(context);
|
||||
|
||||
} else if(!quantityDTO.canOverflowQuantity && quantityDTO.qtaTot.get() > quantityDTO.maxQta) {
|
||||
|
||||
showQuantityOverflowErrorPrompt(context);
|
||||
|
||||
} else if(quantityDTO.qtaCnf.get() <= 0 || quantityDTO.numCnf.get() <= 0 || quantityDTO.qtaTot.get() <= 0) {
|
||||
|
||||
showQuantityErrorDialog(context);
|
||||
|
||||
} else {
|
||||
|
||||
dialogCallback.onResult(quantityDTO);
|
||||
currentAlert.dismiss();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void showQuantityErrorDialog(Context mContext){
|
||||
|
||||
String errorMessage = mContext.getText(R.string.wrong_quantity_input).toString();
|
||||
String errorMessage = mContext.getText(R.string.wrong_quantity_input_message).toString();
|
||||
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(errorMessage), null, null).show();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(Html.fromHtml(errorMessage)), null, null).show();
|
||||
}
|
||||
|
||||
|
||||
private static void showQuantityOverflowErrorPrompt(Context mContext){
|
||||
|
||||
String errorMessage = mContext.getText(R.string.quantity_overflow_error_message).toString();
|
||||
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(Html.fromHtml(errorMessage)), null, null).show();
|
||||
}
|
||||
|
||||
|
||||
private static void showExpireDateErrorPrompt(Context mContext){
|
||||
|
||||
String errorMessage = mContext.getText(R.string.expire_date_error_message).toString();
|
||||
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(Html.fromHtml(errorMessage)), null, null).show();
|
||||
}
|
||||
|
||||
|
||||
private static void showBatchLotErrorPrompt(Context mContext){
|
||||
|
||||
String errorMessage = mContext.getText(R.string.batch_lot_error_message).toString();
|
||||
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mContext, new SpannableString(Html.fromHtml(errorMessage)), null, null).show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -34,6 +34,8 @@ public class QuantityDTO {
|
||||
public boolean numCnfNotificationEnabled = true;
|
||||
public boolean qtaCnfNotificationEnabled = true;
|
||||
public boolean qtaTotNotificationEnabled = true;
|
||||
public boolean canOverflowQuantity = false;
|
||||
public Float maxQta = 0f;
|
||||
|
||||
|
||||
public BindableBoolean canPartitaMagBeChanged = new BindableBoolean(true);
|
||||
|
||||
@ -168,6 +168,7 @@
|
||||
app:layout_constraintGuide_percent="0.50"/>
|
||||
|
||||
<android.support.design.widget.TextInputLayout
|
||||
android:id="@+id/input_partita_mag"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:enabled="@{quantityViewModel.canPartitaMagBeChanged}"
|
||||
@ -177,7 +178,6 @@
|
||||
android:nextFocusRight="@+id/input_data_scad">
|
||||
|
||||
<android.support.design.widget.TextInputEditText
|
||||
android:id="@+id/input_partita_mag"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textNoSuggestions"
|
||||
|
||||
@ -93,7 +93,10 @@
|
||||
<string name="data_saved">Salvataggio completato</string>
|
||||
<string name="alert_print_completed_message">Stampa completata</string>
|
||||
|
||||
<string name="wrong_quantity_input"><![CDATA[La quantità inserita non è valida]]></string>
|
||||
<string name="wrong_quantity_input_message"><![CDATA[La quantità inserita non è valida]]></string>
|
||||
<string name="quantity_overflow_error_message"><![CDATA[La <b>quantità</b> inserita supera la quantità massima disponibile]]></string>
|
||||
<string name="expire_date_error_message"><![CDATA[La <b>data di scadenza</b> inserita non è valida]]></string>
|
||||
<string name="batch_lot_error_message"><![CDATA[Il <b>lotto</b> inserito non è valido]]></string>
|
||||
<string name="settings_category">Impostazioni</string>
|
||||
<string name="check_box_preference_title">Check box</string>
|
||||
<string name="check_box_preference_summary">This is a regular preference</string>
|
||||
|
||||
@ -99,7 +99,10 @@
|
||||
<string name="data_saved">Data saved</string>
|
||||
<string name="alert_print_completed_message">Printing job completed</string>
|
||||
|
||||
<string name="wrong_quantity_input">The quantity entered is not valid, please check it</string>
|
||||
<string name="wrong_quantity_input_message"><![CDATA[The inserted <b>amount</b> is not valid, please check it]]></string>
|
||||
<string name="quantity_overflow_error_message"><![CDATA[The inserted <b>amount</b> exceeds the maximum amount available, please check it]]></string>
|
||||
<string name="expire_date_error_message"><![CDATA[The inserted <b>expire date</b> is not valid, please check it.]]></string>
|
||||
<string name="batch_lot_error_message"><![CDATA[The inserted <b>batch lot</b> is not valid, please check it.]]></string>
|
||||
<string name="settings_category">Settings</string>
|
||||
<string name="check_box_preference_title">Check box</string>
|
||||
<string name="check_box_preference_summary">This is a regular preference</string>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user