Aggiunta lettura barcode in DialogInputQuantity
This commit is contained in:
parent
218a86cdb1
commit
f41e56d0df
@ -308,11 +308,10 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
|
||||
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mActivity,
|
||||
new SpannableString(mActivity.getResources().getText(R.string.no_result_from_barcode)),
|
||||
null, null, null)
|
||||
null, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
|
||||
}, ex -> {
|
||||
BarcodeManager.enable();
|
||||
UtilityExceptions.defaultException(mActivity, ex, progressDialog);
|
||||
|
||||
@ -2,7 +2,9 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.databinding.Observable;
|
||||
@ -27,10 +29,22 @@ 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.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
|
||||
import it.integry.integrywmsnative.core.REST.model.Ean13PesoModel;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
|
||||
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
|
||||
import it.integry.plugins.barcode_base_library.model.BarcodeType;
|
||||
|
||||
public class DialogInputQuantity {
|
||||
|
||||
@ -182,8 +196,14 @@ public class DialogInputQuantity {
|
||||
private static String scadenzaString = "Scadenza";
|
||||
|
||||
private static AlertDialog currentAlert;
|
||||
private static Context currentContext;
|
||||
|
||||
private static MtbAart currentMtbAart;
|
||||
private static QuantityDTO currentQuantityDto;
|
||||
|
||||
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
||||
currentContext = context;
|
||||
currentMtbAart = dto.getMtbAart();
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||
|
||||
@ -202,15 +222,15 @@ public class DialogInputQuantity {
|
||||
|
||||
originalColorStateList = txlInputNumDiCnf.getEditText().getTextColors();
|
||||
|
||||
final QuantityDTO quantityDTO = new QuantityDTO();
|
||||
quantityDTO.canOverflowQuantity = canOverflowQuantity;
|
||||
currentQuantityDto = new QuantityDTO();
|
||||
currentQuantityDto.canOverflowQuantity = canOverflowQuantity;
|
||||
|
||||
setupQuantities(dto, quantityDTO);
|
||||
setupQuantities(dto, currentQuantityDto);
|
||||
|
||||
setupQuantityListener(quantityDTO, txlInputNumDiCnf, txlInputQtaPerCnf, txlInputQtaTot);
|
||||
setupQuantityListener(currentQuantityDto, txlInputNumDiCnf, txlInputQtaPerCnf, txlInputQtaTot);
|
||||
|
||||
contentView.setVariable(BR.viewmodel, dto);
|
||||
contentView.setVariable(BR.quantityViewModel, quantityDTO);
|
||||
contentView.setVariable(BR.quantityViewModel, currentQuantityDto);
|
||||
|
||||
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
|
||||
.setView(contentView.getRoot())
|
||||
@ -225,7 +245,7 @@ public class DialogInputQuantity {
|
||||
final Handler handler = new Handler();
|
||||
handler.postDelayed(() -> {
|
||||
EditText editTextToFocus;
|
||||
if(quantityDTO.canPartitaMagBeChanged.get()) {
|
||||
if(currentQuantityDto.canPartitaMagBeChanged.get()) {
|
||||
editTextToFocus = txlInputBatchLot.getEditText();
|
||||
} else {
|
||||
editTextToFocus = txlInputNumDiCnf.getEditText();
|
||||
@ -240,11 +260,13 @@ public class DialogInputQuantity {
|
||||
|
||||
Button positiveButton = currentAlert.getButton(AlertDialog.BUTTON_POSITIVE);
|
||||
|
||||
positiveButton.setOnClickListener(view -> onConfirm(context, quantityDTO, dialogCallback));
|
||||
positiveButton.setOnClickListener(view -> onConfirm(context, currentQuantityDto, dialogCallback));
|
||||
});
|
||||
|
||||
|
||||
initDatePicker(context, quantityDTO, contentView.getRoot().findViewById(R.id.input_data_scad));
|
||||
initDatePicker(context, currentQuantityDto, contentView.getRoot().findViewById(R.id.input_data_scad));
|
||||
|
||||
setupBarcode(context);
|
||||
|
||||
return currentAlert;
|
||||
|
||||
@ -306,6 +328,99 @@ public class DialogInputQuantity {
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static void setupBarcode(Context context) {
|
||||
|
||||
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessfull)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex)));
|
||||
|
||||
currentAlert.setOnDismissListener(dialog -> {
|
||||
BarcodeManager.removeCallback(barcodeIstanceID);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
if(UtilityBarcode.isEanPeso(data)){
|
||||
|
||||
try {
|
||||
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(data.getStringValue());
|
||||
|
||||
if(ean13PesoModel.getPrecode().contains(currentMtbAart.getBarCode())) {
|
||||
|
||||
currentQuantityDto.numCnf.set(1f);
|
||||
currentQuantityDto.qtaCnf.set(ean13PesoModel.getPeso());
|
||||
currentQuantityDto.qtaTot.set(ean13PesoModel.getPeso());
|
||||
|
||||
BarcodeManager.enable();
|
||||
} else {
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
UtilityLogger.errorMe(e);
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
} else if(data.getType() == BarcodeType.EAN128){
|
||||
final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext);
|
||||
|
||||
BarcodeRESTConsumer.decodeEan128(data, ean128Model -> {
|
||||
progressDialog.dismiss();
|
||||
BarcodeManager.enable();
|
||||
|
||||
if(ean128Model != null){
|
||||
if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
|
||||
currentQuantityDto.batchLot.set(ean128Model.BatchLot);
|
||||
}
|
||||
|
||||
try {
|
||||
if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){
|
||||
currentQuantityDto.expireDate = UtilityDate.recognizeDate(ean128Model.BestBefore);
|
||||
} else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
|
||||
currentQuantityDto.expireDate = UtilityDate.recognizeDate(ean128Model.Expiry);
|
||||
}
|
||||
|
||||
if(currentQuantityDto.expireDate != null) {
|
||||
currentQuantityDto.expireDateString.set(UtilityDate.formatDate(currentQuantityDto.expireDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
UtilityLogger.errorMe(e);
|
||||
}
|
||||
|
||||
|
||||
if(ean128Model.Count != null && ean128Model.Count > 0) {
|
||||
currentQuantityDto.numCnf.set((float) ean128Model.Count);
|
||||
}
|
||||
|
||||
if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
|
||||
currentQuantityDto.qtaTot.set(ean128Model.NetWeightKg);
|
||||
}
|
||||
|
||||
if(currentQuantityDto.qtaTot.get() > 0 && currentQuantityDto.numCnf.get() > 0) {
|
||||
currentQuantityDto.qtaCnf.set(currentQuantityDto.qtaTot.get() / currentQuantityDto.numCnf.get());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(currentContext, ex, progressDialog);
|
||||
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
|
||||
} else {
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
private static void setupQuantityListener(final QuantityDTO quantityDTO, final TextInputLayout txlInputNumDiCnf, final TextInputLayout txlInputQtaPerCnf, final TextInputLayout txlInputQtaTot) {
|
||||
|
||||
quantityDTO.numCnf.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user