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);
|
||||
}
|
||||
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)) {
|
||||
view.setText(UtilityNumber.decimalToString(newValue));
|
||||
|
||||
@ -23,6 +23,7 @@ public class PermissionsHelper {
|
||||
List<String> permissionsToAsk = new ArrayList<>();
|
||||
permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
permissionsToAsk.add(Manifest.permission.CAMERA);
|
||||
//permissionsToAsk.add(Manifest.permission.INTERNET);
|
||||
//permissionsToAsk.add(Manifest.permission.ACCESS_WIFI_STATE);
|
||||
|
||||
@ -49,12 +50,9 @@ public class PermissionsHelper {
|
||||
onPermissionsConfirmed.run();
|
||||
|
||||
} else {
|
||||
|
||||
boolean anyPermDeny = shouldShowRequestPermissionRationale( activity, permissions );
|
||||
|
||||
onPermissionsDenied.run(anyPermDeny);
|
||||
|
||||
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ public class UtilityBigDecimal {
|
||||
}
|
||||
|
||||
public static boolean equalsTo(BigDecimal input, BigDecimal toCompareWith) {
|
||||
if(input == null && toCompareWith == null) return true;
|
||||
if(input == null) return false;
|
||||
if(toCompareWith == null) return false;
|
||||
|
||||
@ -32,4 +33,22 @@ public class UtilityBigDecimal {
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
// int height = (int)(context.getResources().getDisplayMetrics().heightPixels*0.90);
|
||||
//
|
||||
|
||||
@ -9,6 +9,7 @@ import java.io.StringWriter;
|
||||
import java.net.SocketException;
|
||||
import java.net.SocketTimeoutException;
|
||||
|
||||
import it.integry.integrywmsnative.BuildConfig;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
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) {
|
||||
FirebaseCrashlytics.getInstance().recordException(ex);
|
||||
if(!BuildConfig.DEBUG) FirebaseCrashlytics.getInstance().recordException(ex);
|
||||
|
||||
// if ((!(ex instanceof SocketTimeoutException) && !(ex.getCause() instanceof SocketTimeoutException)) ||
|
||||
// (!(ex instanceof SocketException) && !(ex.getCause() instanceof SocketException)) ||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione_new;
|
||||
|
||||
import android.os.Handler;
|
||||
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
@ -113,18 +115,28 @@ public class SpedizioneViewModel {
|
||||
.toList();
|
||||
|
||||
ArticoloRESTConsumer.getByCodMart(codMarts, listMtbAarts -> {
|
||||
onComplete.run(Stream.of(sitArtOrdList)
|
||||
List<PickingObjectDTO> pickingList = Stream.of(sitArtOrdList)
|
||||
.map(sitArtOrdDTO -> {
|
||||
MtbAart mtbAart = null;
|
||||
|
||||
MtbAart mtbAart = Stream.of(listMtbAarts)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(sitArtOrdDTO.getCodMart()))
|
||||
.single();
|
||||
for (MtbAart mtbAartItem : listMtbAarts) {
|
||||
if (mtbAartItem.getCodMart().equalsIgnoreCase(sitArtOrdDTO.getCodMart())) {
|
||||
mtbAart = mtbAartItem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return new PickingObjectDTO()
|
||||
.setSitArtOrdDTO(sitArtOrdDTO)
|
||||
.setMtbAart(mtbAart);
|
||||
})
|
||||
.toList());
|
||||
.toList();
|
||||
|
||||
new Handler()
|
||||
.postDelayed(() -> {
|
||||
onComplete.run(pickingList);
|
||||
}, 1);
|
||||
// onComplete.run(pickingList);
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
@ -624,7 +636,30 @@ public class SpedizioneViewModel {
|
||||
if (UtilityBigDecimal.lowerThan(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(
|
||||
pickingObjectDTO.getMtbAart(),
|
||||
|
||||
@ -49,11 +49,17 @@ public class PickDataDTO {
|
||||
manualPickDTO.setMtbPartitaMag(mtbPartitaMag);
|
||||
}
|
||||
|
||||
if (ean128Model.Count != null && ean128Model.Count > 0) {
|
||||
manualPickDTO.setNumCnf(new BigDecimal(ean128Model.Count));
|
||||
if (ean128Model.Count != null && ean128Model.Count > 0 && (ean128Model.NetWeightKg == null || ean128Model.NetWeightKg == 0)) {
|
||||
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.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) {
|
||||
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_camera_barcode_reader, container, false);
|
||||
|
||||
UtilityDialog.setTo90PercentWidth(mContext, this);
|
||||
UtilityDialog.setTo95PercentWidth(mContext, this);
|
||||
|
||||
getDialog().setCanceledOnTouchOutside(false);
|
||||
getDialog().setCancelable(false);
|
||||
@ -68,6 +68,11 @@ public class DialogCameraBarcodeReader extends DialogFragment implements Barcode
|
||||
return mBindings.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
this.mBindings.bcode.unbind();
|
||||
}
|
||||
|
||||
private void initBarcodeView() {
|
||||
List<BarcodeFormat> availableBarcodeFormats = new ArrayList<>();
|
||||
@ -98,21 +103,28 @@ public class DialogCameraBarcodeReader extends DialogFragment implements Barcode
|
||||
switch (result.getBarcodeFormat()) {
|
||||
case CODE_128:
|
||||
type = BarcodeType.CODE128;
|
||||
break;
|
||||
case CODE_39:
|
||||
type = BarcodeType.CODE39;
|
||||
break;
|
||||
|
||||
case EAN_13:
|
||||
type = BarcodeType.EAN13;
|
||||
break;
|
||||
case EAN_8:
|
||||
type = BarcodeType.EAN8;
|
||||
break;
|
||||
|
||||
case UPC_A:
|
||||
type = BarcodeType.UPCA;
|
||||
break;
|
||||
case UPC_E:
|
||||
type = BarcodeType.UPCE;
|
||||
break;
|
||||
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;
|
||||
break;
|
||||
}
|
||||
|
||||
barcodeScanDTO.setType(type);
|
||||
|
||||
@ -9,19 +9,31 @@ import android.view.ViewGroup;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.model.MtbUntMis;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityObservable;
|
||||
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
|
||||
|
||||
public class DialogInputQuantityV2 extends DialogFragment {
|
||||
public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener {
|
||||
|
||||
private DialogInputQuantityV2ViewModel mViewModel;
|
||||
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) {
|
||||
return new DialogInputQuantityV2(dialogInputQuantityV2DTO);
|
||||
}
|
||||
@ -56,7 +68,7 @@ public class DialogInputQuantityV2 extends DialogFragment {
|
||||
.setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity())
|
||||
.setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable());
|
||||
|
||||
|
||||
bindings.setView(this);
|
||||
bindings.setViewmodel(this.mViewModel);
|
||||
|
||||
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
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
this.init();
|
||||
|
||||
this.mViewModel.setListener(this);
|
||||
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 qtaCnfAvailable;
|
||||
|
||||
public ObservableField<BigDecimal> currentNumCnf = new ObservableField<>();
|
||||
public ObservableField<BigDecimal> currentQtaCnf = new ObservableField<>();
|
||||
public ObservableField<BigDecimal> currentQtaTot = new ObservableField<>();
|
||||
private BigDecimal internalNumCnf;
|
||||
private BigDecimal internalQtaCnf;
|
||||
private BigDecimal internalQtaTot;
|
||||
|
||||
private boolean canOverflowOrderQuantity;
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
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);
|
||||
UtilityObservable.addPropertyChanged(this.currentNumCnf, this::onCurrentNumCnfChanged);
|
||||
|
||||
|
||||
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 if (UtilityBigDecimal.lowerThan(totalQtaAvailable, totalQtaOrd)) {
|
||||
this.internalNumCnf = totalNumCnfAvailable;
|
||||
this.internalQtaCnf = qtaCnfAvailable;
|
||||
this.internalQtaTot = totalQtaAvailable;
|
||||
|
||||
} 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) {
|
||||
this.mtbAart.set(mtbAart);
|
||||
@ -107,50 +121,59 @@ public class DialogInputQuantityV2ViewModel {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void onCurrentNumCnfChanged(BigDecimal newValue) {
|
||||
public void setNumCnf(BigDecimal newValue) {
|
||||
this.internalNumCnf = newValue;
|
||||
if (newValue == null) return;
|
||||
|
||||
if(UtilityBigDecimal.greaterThan(newValue, totalNumCnfAvailable)) newValue = totalNumCnfAvailable;
|
||||
this.currentQtaTot.set(newValue.multiply(this.currentQtaCnf.get()));
|
||||
if (UtilityBigDecimal.greaterThan(newValue, totalNumCnfAvailable))
|
||||
newValue = totalNumCnfAvailable;
|
||||
this.internalQtaTot = UtilityBigDecimal.multiply(newValue, this.internalQtaCnf);
|
||||
|
||||
this.mListener.onDataChanged();
|
||||
}
|
||||
|
||||
private void onCurrentQtaCnfChanged(BigDecimal newValue) {
|
||||
public void setQtaCnf(BigDecimal newValue) {
|
||||
this.internalQtaCnf = newValue;
|
||||
String a = "";
|
||||
|
||||
this.mListener.onDataChanged();
|
||||
}
|
||||
|
||||
private void onCurrentQtaTotChanged(BigDecimal newValue) {
|
||||
public void setQtaTot(BigDecimal newValue) {
|
||||
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
|
||||
if (UtilityBigDecimal.greaterThan(newValue, totalQtaOrd) && !canOverflowOrderQuantity) {
|
||||
|
||||
if (mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||
//Ricalcolo num cnf
|
||||
|
||||
this.internalNumCnf = UtilityBigDecimal.divide(totalQtaOrd, internalQtaCnf);
|
||||
} else {
|
||||
//Ricalcolo qta cnf
|
||||
|
||||
this.internalQtaCnf = UtilityBigDecimal.divide(totalQtaOrd, internalNumCnf);
|
||||
}
|
||||
|
||||
} else {
|
||||
if (mtbAart.get().isFlagQtaCnfFissaBoolean()) {
|
||||
//Ricalcolo num cnf
|
||||
this.internalNumCnf = UtilityBigDecimal.divide(newValue, internalQtaCnf);
|
||||
} else {
|
||||
//Ricalcolo qta cnf
|
||||
}
|
||||
this.internalQtaCnf = UtilityBigDecimal.divide(newValue, internalNumCnf);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// private BigDecimal retrieveCorrectQtaCnf() {
|
||||
// if(UtilityBigDecimal.greaterThan(totalNumCnfAvailable, BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(totalQtaAvailable, BigDecimal.ZERO)) {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
this.mListener.onDataChanged();
|
||||
}
|
||||
|
||||
public void setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
}
|
||||
|
||||
public interface Listener {
|
||||
void onDataChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,6 +16,9 @@
|
||||
<variable
|
||||
name="viewmodel"
|
||||
type="it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ViewModel" />
|
||||
<variable
|
||||
name="view"
|
||||
type="it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2" />
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
@ -382,7 +385,7 @@
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/input_num_cnf_text"
|
||||
style="@style/TextInputEditText.OutlinePrimary"
|
||||
app:binding="@{viewmodel.currentNumCnf}"
|
||||
app:binding="@{view.currentNumCnf}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/num_pcks"
|
||||
@ -406,7 +409,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/qty_x_pck"
|
||||
android:inputType="numberDecimal"
|
||||
app:binding="@{viewmodel.currentQtaCnf}" />
|
||||
app:binding="@{view.currentQtaCnf}" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
@ -421,7 +424,7 @@
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/input_qta_tot_text"
|
||||
style="@style/TextInputEditText.OutlinePrimary"
|
||||
app:binding="@{viewmodel.currentQtaTot}"
|
||||
app:binding="@{view.currentQtaTot}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/tot_qty"
|
||||
|
||||
@ -38,20 +38,22 @@ internal class BarcodeAnalyzer(
|
||||
return
|
||||
}
|
||||
|
||||
val data = ByteArray(byteBuffer.remaining()).also { byteBuffer.get(it) }
|
||||
var data = ByteArray(byteBuffer.remaining()).also { byteBuffer.get(it) }
|
||||
|
||||
var width = image.width
|
||||
var height = image.height
|
||||
|
||||
val rotatedData = ByteArray(data.size)
|
||||
for (y in 0 until height) {
|
||||
for (x in 0 until width) rotatedData[x * height + height - y - 1] = data[x + y * width]
|
||||
}
|
||||
val tmp = width
|
||||
width = height
|
||||
height = tmp
|
||||
// val rotatedData = ByteArray(data.size)
|
||||
// for (y in 0 until height) {
|
||||
// for (x in 0 until width) rotatedData[x * height + height - y - 1] = data[x + y * width]
|
||||
// }
|
||||
//
|
||||
// data = rotatedData
|
||||
// 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
|
||||
}
|
||||
val bitmap = BinaryBitmap(HybridBinarizer(source))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user