Completati primi test di calcoli qta da evadere
This commit is contained in:
parent
cbce52fd83
commit
f619dece3b
@ -115,7 +115,7 @@ public class Converters {
|
|||||||
view.addTextChangedListener(watcher);
|
view.addTextChangedListener(watcher);
|
||||||
}
|
}
|
||||||
BigDecimal newValue = observableBigDecimal.get();
|
BigDecimal newValue = observableBigDecimal.get();
|
||||||
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : BigDecimal.ZERO;
|
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
|
||||||
|
|
||||||
if(!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
if(!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
|
||||||
view.setText(UtilityNumber.decimalToString(newValue));
|
view.setText(UtilityNumber.decimalToString(newValue));
|
||||||
|
|||||||
@ -23,6 +23,7 @@ public class PermissionsHelper {
|
|||||||
List<String> permissionsToAsk = new ArrayList<>();
|
List<String> permissionsToAsk = new ArrayList<>();
|
||||||
permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||||
permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||||
|
permissionsToAsk.add(Manifest.permission.CAMERA);
|
||||||
//permissionsToAsk.add(Manifest.permission.INTERNET);
|
//permissionsToAsk.add(Manifest.permission.INTERNET);
|
||||||
//permissionsToAsk.add(Manifest.permission.ACCESS_WIFI_STATE);
|
//permissionsToAsk.add(Manifest.permission.ACCESS_WIFI_STATE);
|
||||||
|
|
||||||
@ -49,12 +50,9 @@ public class PermissionsHelper {
|
|||||||
onPermissionsConfirmed.run();
|
onPermissionsConfirmed.run();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
boolean anyPermDeny = shouldShowRequestPermissionRationale( activity, permissions );
|
boolean anyPermDeny = shouldShowRequestPermissionRationale( activity, permissions );
|
||||||
|
|
||||||
onPermissionsDenied.run(anyPermDeny);
|
onPermissionsDenied.run(anyPermDeny);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@ public class UtilityBigDecimal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean equalsTo(BigDecimal input, BigDecimal toCompareWith) {
|
public static boolean equalsTo(BigDecimal input, BigDecimal toCompareWith) {
|
||||||
|
if(input == null && toCompareWith == null) return true;
|
||||||
if(input == null) return false;
|
if(input == null) return false;
|
||||||
if(toCompareWith == null) return false;
|
if(toCompareWith == null) return false;
|
||||||
|
|
||||||
@ -32,4 +33,22 @@ public class UtilityBigDecimal {
|
|||||||
return lowerThan(input1, input2) ? input1 : input2;
|
return lowerThan(input1, input2) ? input1 : input2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static BigDecimal divide(BigDecimal input1, BigDecimal divisor) {
|
||||||
|
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||||
|
|
||||||
|
return input1.divide(divisor, 3, BigDecimal.ROUND_HALF_EVEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static BigDecimal divideToInteger(BigDecimal input1, BigDecimal divisor) {
|
||||||
|
if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null;
|
||||||
|
|
||||||
|
return new BigDecimal(input1.divide(divisor,3, BigDecimal.ROUND_HALF_EVEN).intValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BigDecimal multiply(BigDecimal input1, BigDecimal multiplier) {
|
||||||
|
return input1.multiply(multiplier);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,12 @@ public class UtilityDialog {
|
|||||||
dialog.getDialog().getWindow().setLayout(width, LinearLayout.LayoutParams.WRAP_CONTENT);
|
dialog.getDialog().getWindow().setLayout(width, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setTo95PercentWidth(Context context, DialogFragment dialog) {
|
||||||
|
int width = (int)(context.getResources().getDisplayMetrics().widthPixels*0.95);
|
||||||
|
|
||||||
|
dialog.getDialog().getWindow().setLayout(width, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
// public static void setTo90PercentHeight(Context context, Dialog dialog) {
|
// public static void setTo90PercentHeight(Context context, Dialog dialog) {
|
||||||
// int height = (int)(context.getResources().getDisplayMetrics().heightPixels*0.90);
|
// int height = (int)(context.getResources().getDisplayMetrics().heightPixels*0.90);
|
||||||
//
|
//
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import java.io.StringWriter;
|
|||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
import java.net.SocketTimeoutException;
|
import java.net.SocketTimeoutException;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.BuildConfig;
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
@ -41,7 +42,7 @@ public class UtilityLogger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void errorMe(Exception ex, String additionalText, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
public static void errorMe(Exception ex, String additionalText, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
FirebaseCrashlytics.getInstance().recordException(ex);
|
if(!BuildConfig.DEBUG) FirebaseCrashlytics.getInstance().recordException(ex);
|
||||||
|
|
||||||
// if ((!(ex instanceof SocketTimeoutException) && !(ex.getCause() instanceof SocketTimeoutException)) ||
|
// if ((!(ex instanceof SocketTimeoutException) && !(ex.getCause() instanceof SocketTimeoutException)) ||
|
||||||
// (!(ex instanceof SocketException) && !(ex.getCause() instanceof SocketException)) ||
|
// (!(ex instanceof SocketException) && !(ex.getCause() instanceof SocketException)) ||
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.gest.spedizione_new;
|
package it.integry.integrywmsnative.gest.spedizione_new;
|
||||||
|
|
||||||
|
import android.os.Handler;
|
||||||
|
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
@ -113,18 +115,28 @@ public class SpedizioneViewModel {
|
|||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
ArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
|
ArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
|
||||||
onComplete.run(Stream.of(sitArtOrdList)
|
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList)
|
||||||
.map(sitArtOrdDTO -> {
|
.map(sitArtOrdDTO -> {
|
||||||
|
MtbAart mtbAart = null;
|
||||||
|
|
||||||
MtbAart mtbAart = Stream.of(listMtbAarts)
|
for (MtbAart mtbAartItem : listMtbAarts) {
|
||||||
.filter(x -> x.getCodMart().equalsIgnoreCase(sitArtOrdDTO.getCodMart()))
|
if (mtbAartItem.getCodMart().equalsIgnoreCase(sitArtOrdDTO.getCodMart())) {
|
||||||
.single();
|
mtbAart = mtbAartItem;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return new PickingObjectDTO()
|
return new PickingObjectDTO()
|
||||||
.setSitArtOrdDTO(sitArtOrdDTO)
|
.setSitArtOrdDTO(sitArtOrdDTO)
|
||||||
.setMtbAart(mtbAart);
|
.setMtbAart(mtbAart);
|
||||||
})
|
})
|
||||||
.toList());
|
.toList();
|
||||||
|
|
||||||
|
new Handler()
|
||||||
|
.postDelayed(() -> {
|
||||||
|
onComplete.run(pickingList);
|
||||||
|
}, 1);
|
||||||
|
// onComplete.run(pickingList);
|
||||||
}, this::sendError);
|
}, this::sendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -534,7 +546,7 @@ public class SpedizioneViewModel {
|
|||||||
})
|
})
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
for(PickingObjectDTO pickingObjectDTO : matchPickingObject) {
|
for (PickingObjectDTO pickingObjectDTO : matchPickingObject) {
|
||||||
pickingObjectDTO.setTempPickData(pickData);
|
pickingObjectDTO.setTempPickData(pickData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -602,7 +614,7 @@ public class SpedizioneViewModel {
|
|||||||
|
|
||||||
|
|
||||||
if (mtbColrToDispatch != null) {
|
if (mtbColrToDispatch != null) {
|
||||||
if(UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) {
|
if (UtilityBigDecimal.lowerThan(mtbColrToDispatch.getQtaCol(), qtaDaEvadere)) {
|
||||||
numCnfDaPrelevare = mtbColrToDispatch.getNumCnf();
|
numCnfDaPrelevare = mtbColrToDispatch.getNumCnf();
|
||||||
qtaColDaPrelevare = mtbColrToDispatch.getQtaCol();
|
qtaColDaPrelevare = mtbColrToDispatch.getQtaCol();
|
||||||
qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf();
|
qtaCnfDaPrelevare = mtbColrToDispatch.getQtaCnf();
|
||||||
@ -624,7 +636,30 @@ public class SpedizioneViewModel {
|
|||||||
if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO))
|
if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO))
|
||||||
qtaColDaPrelevare = BigDecimal.ZERO;
|
qtaColDaPrelevare = BigDecimal.ZERO;
|
||||||
|
|
||||||
} //Oppure le info del barcode scansionato
|
} else if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
|
||||||
|
//Oppure le info del barcode scansionato
|
||||||
|
PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO();
|
||||||
|
MtbAart mtbAart = pickingObjectDTO.getMtbAart();
|
||||||
|
|
||||||
|
qtaColDaPrelevare = manualPickDTO.getQtaTot();
|
||||||
|
numCnfDaPrelevare = manualPickDTO.getNumCnf();
|
||||||
|
|
||||||
|
if (mtbAart.isFlagQtaCnfFissaBoolean()) {
|
||||||
|
qtaCnfDaPrelevare = mtbAart.getQtaCnf();
|
||||||
|
} else if (qtaColDaPrelevare != null && numCnfDaPrelevare != null) {
|
||||||
|
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) {
|
||||||
|
numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf());
|
||||||
|
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
|
||||||
|
} else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) {
|
||||||
|
qtaCnfDaPrelevare = mtbAart.getQtaCnf();
|
||||||
|
qtaColDaPrelevare = UtilityBigDecimal.multiply(numCnfDaPrelevare, qtaCnfDaPrelevare);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
this.sendOnItemDispatched(
|
this.sendOnItemDispatched(
|
||||||
pickingObjectDTO.getMtbAart(),
|
pickingObjectDTO.getMtbAart(),
|
||||||
|
|||||||
@ -49,11 +49,17 @@ public class PickDataDTO {
|
|||||||
manualPickDTO.setMtbPartitaMag(mtbPartitaMag);
|
manualPickDTO.setMtbPartitaMag(mtbPartitaMag);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ean128Model.Count != null && ean128Model.Count > 0) {
|
if (ean128Model.Count != null && ean128Model.Count > 0 && (ean128Model.NetWeightKg == null || ean128Model.NetWeightKg == 0)) {
|
||||||
manualPickDTO.setNumCnf(new BigDecimal(ean128Model.Count));
|
manualPickDTO.setQtaTot(new BigDecimal(ean128Model.Count));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
|
if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0 && (ean128Model.Count == null || ean128Model.Count == 0)) {
|
||||||
|
manualPickDTO.setQtaTot(new BigDecimal(ean128Model.NetWeightKg));
|
||||||
|
manualPickDTO.setEanPeso(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0 && ean128Model.Count != null && ean128Model.Count > 0) {
|
||||||
|
manualPickDTO.setNumCnf(new BigDecimal(ean128Model.Count));
|
||||||
manualPickDTO.setQtaTot(new BigDecimal(ean128Model.NetWeightKg));
|
manualPickDTO.setQtaTot(new BigDecimal(ean128Model.NetWeightKg));
|
||||||
manualPickDTO.setEanPeso(true);
|
manualPickDTO.setEanPeso(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,7 @@ public class DialogCameraBarcodeReader extends DialogFragment implements Barcode
|
|||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_camera_barcode_reader, container, false);
|
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_camera_barcode_reader, container, false);
|
||||||
|
|
||||||
UtilityDialog.setTo90PercentWidth(mContext, this);
|
UtilityDialog.setTo95PercentWidth(mContext, this);
|
||||||
|
|
||||||
getDialog().setCanceledOnTouchOutside(false);
|
getDialog().setCanceledOnTouchOutside(false);
|
||||||
getDialog().setCancelable(false);
|
getDialog().setCancelable(false);
|
||||||
@ -68,6 +68,11 @@ public class DialogCameraBarcodeReader extends DialogFragment implements Barcode
|
|||||||
return mBindings.getRoot();
|
return mBindings.getRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
this.mBindings.bcode.unbind();
|
||||||
|
}
|
||||||
|
|
||||||
private void initBarcodeView() {
|
private void initBarcodeView() {
|
||||||
List<BarcodeFormat> availableBarcodeFormats = new ArrayList<>();
|
List<BarcodeFormat> availableBarcodeFormats = new ArrayList<>();
|
||||||
@ -98,21 +103,28 @@ public class DialogCameraBarcodeReader extends DialogFragment implements Barcode
|
|||||||
switch (result.getBarcodeFormat()) {
|
switch (result.getBarcodeFormat()) {
|
||||||
case CODE_128:
|
case CODE_128:
|
||||||
type = BarcodeType.CODE128;
|
type = BarcodeType.CODE128;
|
||||||
|
break;
|
||||||
case CODE_39:
|
case CODE_39:
|
||||||
type = BarcodeType.CODE39;
|
type = BarcodeType.CODE39;
|
||||||
|
break;
|
||||||
|
|
||||||
case EAN_13:
|
case EAN_13:
|
||||||
type = BarcodeType.EAN13;
|
type = BarcodeType.EAN13;
|
||||||
|
break;
|
||||||
case EAN_8:
|
case EAN_8:
|
||||||
type = BarcodeType.EAN8;
|
type = BarcodeType.EAN8;
|
||||||
|
break;
|
||||||
|
|
||||||
case UPC_A:
|
case UPC_A:
|
||||||
type = BarcodeType.UPCA;
|
type = BarcodeType.UPCA;
|
||||||
|
break;
|
||||||
case UPC_E:
|
case UPC_E:
|
||||||
type = BarcodeType.UPCE;
|
type = BarcodeType.UPCE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
Logger.e("Barcode not recognized", "Barcode type " + result.getBarcodeFormat().toString() + " was not mapped in DialogCameraBarcodeReader.java");
|
Logger.e("Barcode type " + result.getBarcodeFormat().toString() + " was not mapped in DialogCameraBarcodeReader.java");
|
||||||
type = null;
|
type = null;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
barcodeScanDTO.setType(type);
|
barcodeScanDTO.setType(type);
|
||||||
|
|||||||
@ -9,19 +9,31 @@ import android.view.ViewGroup;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.databinding.ObservableField;
|
||||||
import androidx.fragment.app.DialogFragment;
|
import androidx.fragment.app.DialogFragment;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
import it.integry.integrywmsnative.core.model.MtbUntMis;
|
import it.integry.integrywmsnative.core.model.MtbUntMis;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityObservable;
|
||||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
|
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
|
||||||
|
|
||||||
public class DialogInputQuantityV2 extends DialogFragment {
|
public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener {
|
||||||
|
|
||||||
private DialogInputQuantityV2ViewModel mViewModel;
|
private DialogInputQuantityV2ViewModel mViewModel;
|
||||||
private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
|
private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public ObservableField<BigDecimal> currentNumCnf = new ObservableField<>();
|
||||||
|
public ObservableField<BigDecimal> currentQtaCnf = new ObservableField<>();
|
||||||
|
public ObservableField<BigDecimal> currentQtaTot = new ObservableField<>();
|
||||||
|
|
||||||
|
private boolean mEnableDataCallback = true;
|
||||||
|
|
||||||
public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO) {
|
public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO) {
|
||||||
return new DialogInputQuantityV2(dialogInputQuantityV2DTO);
|
return new DialogInputQuantityV2(dialogInputQuantityV2DTO);
|
||||||
}
|
}
|
||||||
@ -56,7 +68,7 @@ public class DialogInputQuantityV2 extends DialogFragment {
|
|||||||
.setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity())
|
.setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity())
|
||||||
.setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable());
|
.setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable());
|
||||||
|
|
||||||
|
bindings.setView(this);
|
||||||
bindings.setViewmodel(this.mViewModel);
|
bindings.setViewmodel(this.mViewModel);
|
||||||
|
|
||||||
MtbUntMis mtbUntMis = mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis() != null && mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis().size() > 0 ? mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis().get(0) : null;
|
MtbUntMis mtbUntMis = mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis() != null && mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis().size() > 0 ? mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis().get(0) : null;
|
||||||
@ -70,6 +82,40 @@ public class DialogInputQuantityV2 extends DialogFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
|
this.init();
|
||||||
|
|
||||||
|
this.mViewModel.setListener(this);
|
||||||
this.mViewModel.init();
|
this.mViewModel.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void init() {
|
||||||
|
UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> {
|
||||||
|
if(this.mEnableDataCallback) {
|
||||||
|
this.mViewModel.setNumCnf(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
UtilityObservable.addPropertyChanged(this.currentQtaCnf, (value) -> {
|
||||||
|
if(this.mEnableDataCallback) {
|
||||||
|
this.mViewModel.setQtaCnf(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
UtilityObservable.addPropertyChanged(this.currentQtaTot, (value) -> {
|
||||||
|
if(this.mEnableDataCallback) {
|
||||||
|
this.mViewModel.setQtaTot(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDataChanged() {
|
||||||
|
this.mEnableDataCallback = false;
|
||||||
|
|
||||||
|
this.currentNumCnf.set(this.mViewModel.getNumCnf());
|
||||||
|
this.currentQtaCnf.set(this.mViewModel.getQtaCnf());
|
||||||
|
this.currentQtaTot.set(this.mViewModel.getQtaTot());
|
||||||
|
|
||||||
|
this.mEnableDataCallback = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,32 +24,46 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
public BigDecimal totalNumCnfAvailable;
|
public BigDecimal totalNumCnfAvailable;
|
||||||
public BigDecimal qtaCnfAvailable;
|
public BigDecimal qtaCnfAvailable;
|
||||||
|
|
||||||
public ObservableField<BigDecimal> currentNumCnf = new ObservableField<>();
|
private BigDecimal internalNumCnf;
|
||||||
public ObservableField<BigDecimal> currentQtaCnf = new ObservableField<>();
|
private BigDecimal internalQtaCnf;
|
||||||
public ObservableField<BigDecimal> currentQtaTot = new ObservableField<>();
|
private BigDecimal internalQtaTot;
|
||||||
|
|
||||||
private boolean canOverflowOrderQuantity;
|
private boolean canOverflowOrderQuantity;
|
||||||
|
|
||||||
|
private Listener mListener;
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
//Quando ho un barcode peso devo calcolare numCnf dal peso medio
|
if (totalQtaToBeTaken != null) {
|
||||||
|
this.internalNumCnf = totalNumCnfToBeTaken;
|
||||||
|
this.internalQtaCnf = qtaCnfToBeTaken;
|
||||||
|
this.internalQtaTot = totalQtaToBeTaken;
|
||||||
|
|
||||||
this.currentNumCnf.set(totalNumCnfToBeTaken != null ? totalNumCnfToBeTaken : BigDecimal.ONE);
|
} else if (UtilityBigDecimal.lowerThan(totalQtaAvailable, totalQtaOrd)) {
|
||||||
UtilityObservable.addPropertyChanged(this.currentNumCnf, this::onCurrentNumCnfChanged);
|
this.internalNumCnf = totalNumCnfAvailable;
|
||||||
|
this.internalQtaCnf = qtaCnfAvailable;
|
||||||
|
this.internalQtaTot = totalQtaAvailable;
|
||||||
this.currentQtaCnf.set(qtaCnfToBeTaken != null ? qtaCnfToBeTaken : this.mtbAart.get().getQtaCnf());
|
|
||||||
UtilityObservable.addPropertyChanged(this.currentQtaCnf, this::onCurrentQtaCnfChanged);
|
|
||||||
|
|
||||||
|
|
||||||
this.currentQtaTot.set(totalQtaToBeTaken != null ? totalQtaToBeTaken : this.mtbAart.get().getQtaCnf());
|
|
||||||
UtilityObservable.addPropertyChanged(this.currentQtaTot, this::onCurrentQtaTotChanged);
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.internalNumCnf = totalNumCnfOrd;
|
||||||
|
this.internalQtaCnf = qtaCnfOrd;
|
||||||
|
this.internalQtaTot = totalQtaOrd;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public BigDecimal getNumCnf() {
|
||||||
|
return this.internalNumCnf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaCnf() {
|
||||||
|
return this.internalQtaCnf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getQtaTot() {
|
||||||
|
return this.internalQtaTot;
|
||||||
|
}
|
||||||
|
|
||||||
public DialogInputQuantityV2ViewModel setMtbAart(MtbAart mtbAart) {
|
public DialogInputQuantityV2ViewModel setMtbAart(MtbAart mtbAart) {
|
||||||
this.mtbAart.set(mtbAart);
|
this.mtbAart.set(mtbAart);
|
||||||
@ -107,50 +121,59 @@ public class DialogInputQuantityV2ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setNumCnf(BigDecimal newValue) {
|
||||||
|
this.internalNumCnf = newValue;
|
||||||
|
if (newValue == null) return;
|
||||||
|
|
||||||
|
if (UtilityBigDecimal.greaterThan(newValue, totalNumCnfAvailable))
|
||||||
|
newValue = totalNumCnfAvailable;
|
||||||
|
this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf);
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
private void onCurrentNumCnfChanged(BigDecimal newValue) {
|
|
||||||
if(newValue == null) return;
|
|
||||||
|
|
||||||
if(UtilityBigDecimal.greaterThan(newValue, totalNumCnfAvailable)) newValue = totalNumCnfAvailable;
|
|
||||||
this.currentQtaTot.set(newValue.multiply(this.currentQtaCnf.get()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onCurrentQtaCnfChanged(BigDecimal newValue) {
|
public void setQtaCnf(BigDecimal newValue) {
|
||||||
|
this.internalQtaCnf = newValue;
|
||||||
String a = "";
|
String a = "";
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onCurrentQtaTotChanged(BigDecimal newValue) {
|
public void setQtaTot(BigDecimal newValue) {
|
||||||
if(newValue == null) return;
|
this.internalQtaTot = newValue;
|
||||||
|
if (newValue == null) return;
|
||||||
|
|
||||||
newValue = UtilityBigDecimal.getLowerBetween(newValue, totalNumCnfAvailable);
|
newValue = UtilityBigDecimal.getLowerBetween(newValue, totalQtaAvailable);
|
||||||
|
|
||||||
//Se è piu' grande della qta da prelevare e non posso aggiungere qta extra allora ricalcolo
|
//Se è piu' grande della qta da prelevare e non posso aggiungere qta extra allora ricalcolo
|
||||||
if(UtilityBigDecimal.greaterThan(newValue, totalQtaOrd) && !canOverflowOrderQuantity) {
|
if (UtilityBigDecimal.greaterThan(newValue, totalQtaOrd) && !canOverflowOrderQuantity) {
|
||||||
|
|
||||||
if(mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
if (mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||||
//Ricalcolo num cnf
|
//Ricalcolo num cnf
|
||||||
|
this.internalNumCnf = UtilityBigDecimal.divide(totalQtaOrd, internalQtaCnf);
|
||||||
} else {
|
} else {
|
||||||
//Ricalcolo qta cnf
|
//Ricalcolo qta cnf
|
||||||
|
this.internalQtaCnf = UtilityBigDecimal.divide(totalQtaOrd, internalNumCnf);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if(mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
if (mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||||
//Ricalcolo num cnf
|
//Ricalcolo num cnf
|
||||||
|
this.internalNumCnf = UtilityBigDecimal.divide(newValue, internalQtaCnf);
|
||||||
} else {
|
} else {
|
||||||
//Ricalcolo qta cnf
|
//Ricalcolo qta cnf
|
||||||
}
|
this.internalQtaCnf = UtilityBigDecimal.divide(newValue, internalNumCnf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.mListener.onDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setListener(Listener listener) {
|
||||||
|
this.mListener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
// private BigDecimal retrieveCorrectQtaCnf() {
|
public interface Listener {
|
||||||
// if(UtilityBigDecimal.greaterThan(totalNumCnfAvailable, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(totalQtaAvailable, BigDecimal.ZERO)) {
|
void onDataChanged();
|
||||||
//
|
}
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,6 +16,9 @@
|
|||||||
<variable
|
<variable
|
||||||
name="viewmodel"
|
name="viewmodel"
|
||||||
type="it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ViewModel" />
|
type="it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ViewModel" />
|
||||||
|
<variable
|
||||||
|
name="view"
|
||||||
|
type="it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
@ -382,7 +385,7 @@
|
|||||||
<com.google.android.material.textfield.TextInputEditText
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
android:id="@+id/input_num_cnf_text"
|
android:id="@+id/input_num_cnf_text"
|
||||||
style="@style/TextInputEditText.OutlinePrimary"
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
app:binding="@{viewmodel.currentNumCnf}"
|
app:binding="@{view.currentNumCnf}"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="@string/num_pcks"
|
android:hint="@string/num_pcks"
|
||||||
@ -406,7 +409,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="@string/qty_x_pck"
|
android:hint="@string/qty_x_pck"
|
||||||
android:inputType="numberDecimal"
|
android:inputType="numberDecimal"
|
||||||
app:binding="@{viewmodel.currentQtaCnf}" />
|
app:binding="@{view.currentQtaCnf}" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -421,7 +424,7 @@
|
|||||||
<com.google.android.material.textfield.TextInputEditText
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
android:id="@+id/input_qta_tot_text"
|
android:id="@+id/input_qta_tot_text"
|
||||||
style="@style/TextInputEditText.OutlinePrimary"
|
style="@style/TextInputEditText.OutlinePrimary"
|
||||||
app:binding="@{viewmodel.currentQtaTot}"
|
app:binding="@{view.currentQtaTot}"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:hint="@string/tot_qty"
|
android:hint="@string/tot_qty"
|
||||||
|
|||||||
@ -38,20 +38,22 @@ internal class BarcodeAnalyzer(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val data = ByteArray(byteBuffer.remaining()).also { byteBuffer.get(it) }
|
var data = ByteArray(byteBuffer.remaining()).also { byteBuffer.get(it) }
|
||||||
|
|
||||||
var width = image.width
|
var width = image.width
|
||||||
var height = image.height
|
var height = image.height
|
||||||
|
|
||||||
val rotatedData = ByteArray(data.size)
|
// val rotatedData = ByteArray(data.size)
|
||||||
for (y in 0 until height) {
|
// for (y in 0 until height) {
|
||||||
for (x in 0 until width) rotatedData[x * height + height - y - 1] = data[x + y * width]
|
// for (x in 0 until width) rotatedData[x * height + height - y - 1] = data[x + y * width]
|
||||||
}
|
// }
|
||||||
val tmp = width
|
//
|
||||||
width = height
|
// data = rotatedData
|
||||||
height = tmp
|
// val tmp = width
|
||||||
|
// width = height
|
||||||
|
// height = tmp
|
||||||
|
|
||||||
val source = PlanarYUVLuminanceSource(rotatedData, width, height, 0, 0, width, height, false).let {
|
val source = PlanarYUVLuminanceSource(data, width, height, 0, 0, width, height, false).let {
|
||||||
if (inverted) it.invert() else it
|
if (inverted) it.invert() else it
|
||||||
}
|
}
|
||||||
val bitmap = BinaryBitmap(HybridBinarizer(source))
|
val bitmap = BinaryBitmap(HybridBinarizer(source))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user