Implementato override del check della tracciabilità in Accettazione da bolla

This commit is contained in:
Giuseppe Scorrano 2023-09-20 17:09:45 +02:00
parent 1e129d1ea9
commit d003a0322e
10 changed files with 88 additions and 12 deletions

View File

@ -68,6 +68,7 @@ public class DBSettingsModel {
private boolean flagCanAddUnknownItemsAccettazioneBolla = false; private boolean flagCanAddUnknownItemsAccettazioneBolla = false;
private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false; private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false;
private boolean flagEnableFastPickAccettazioneBolla = false; private boolean flagEnableFastPickAccettazioneBolla = false;
private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
@ -546,4 +547,13 @@ public class DBSettingsModel {
this.flagEnableFastPickAccettazioneBolla = flagEnableFastPickAccettazioneBolla; this.flagEnableFastPickAccettazioneBolla = flagEnableFastPickAccettazioneBolla;
return this; return this;
} }
public boolean isFlagDisableMandatoryTracciabilitaAccettazioneBolla() {
return flagDisableMandatoryTracciabilitaAccettazioneBolla;
}
public DBSettingsModel setFlagDisableMandatoryTracciabilitaAccettazioneBolla(boolean flagDisableMandatoryTracciabilitaAccettazioneBolla) {
this.flagDisableMandatoryTracciabilitaAccettazioneBolla = flagDisableMandatoryTracciabilitaAccettazioneBolla;
return this;
}
} }

View File

@ -464,6 +464,12 @@ public class SettingsManager {
.setKeySection("FLAG_ENABLE_FAST_PICK") .setKeySection("FLAG_ENABLE_FAST_PICK")
.setSetter(dbSettingsModelIstance::setFlagEnableFastPickAccettazioneBolla) .setSetter(dbSettingsModelIstance::setFlagEnableFastPickAccettazioneBolla)
.setDefaultValue(false)); .setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("ACCETTAZIONE_BOLLA")
.setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA")
.setSetter(dbSettingsModelIstance::setFlagDisableMandatoryTracciabilitaAccettazioneBolla)
.setDefaultValue(false));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();

View File

@ -200,7 +200,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
}); });
adapter.setOnItemClicked(clickedItem -> { adapter.setOnItemClicked(clickedItem -> {
this.mViewModel.dispatchBollaRow(clickedItem); this.mViewModel.manageDispatchBollaRow(clickedItem);
}); });
} }
@ -491,7 +491,8 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
.setDataScad(dataScad) .setDataScad(dataScad)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(true) .setCanLUBeClosed(true)
.setCanOverflowOrderQuantity(canOverflowQuantity); .setCanOverflowOrderQuantity(canOverflowQuantity)
.setDisableTracciabilitaCheck(SettingsManager.iDB().isFlagDisableMandatoryTracciabilitaAccettazioneBolla());
if (!mDialogInputQuantityV2View.isVisible()) if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View mDialogInputQuantityV2View

View File

@ -341,7 +341,7 @@ public class AccettazioneBollaPickingViewModel {
if (matchedRows == null || matchedRows.size() == 0) { if (matchedRows == null || matchedRows.size() == 0) {
manageNoArtFound(mtbAart); manageNoArtFound(mtbAart);
} else if (matchedRows.size() == 1) { } else if (matchedRows.size() == 1) {
this.dispatchBollaRow(matchedRows.get(0)); this.manageDispatchBollaRow(matchedRows.get(0));
} else { } else {
//So che il codMart sarà solo 1 //So che il codMart sarà solo 1
var firstCodMart = Stream.of(matchedRows) var firstCodMart = Stream.of(matchedRows)
@ -359,7 +359,7 @@ public class AccettazioneBollaPickingViewModel {
if (SettingsManager.iDB().isFlagCanAddUnknownBarcodesAccettazioneBolla()) { if (SettingsManager.iDB().isFlagCanAddUnknownBarcodesAccettazioneBolla()) {
//TODO: Implementare popup che richiede delle note aggiuntive sul barcode scansionato //TODO: Implementare popup che richiede delle note aggiuntive sul barcode scansionato
this.sendOnUnknownBarcodeScanned(barcode, notes -> { this.sendOnUnknownBarcodeScanned(barcode, notes -> {
this.dispatchBollaRow(new PickingObjectDTO() this.manageDispatchBollaRow(new PickingObjectDTO()
.setMtbAart(new MtbAart() .setMtbAart(new MtbAart()
.setDescrizione(notes) .setDescrizione(notes)
.setDescrizioneEstesa(notes) .setDescrizioneEstesa(notes)
@ -378,7 +378,7 @@ public class AccettazioneBollaPickingViewModel {
private void manageNoArtFound(MtbAart mtbAart) { private void manageNoArtFound(MtbAart mtbAart) {
if (SettingsManager.iDB().isFlagCanAddUnknownItemsAccettazioneBolla()) { if (SettingsManager.iDB().isFlagCanAddUnknownItemsAccettazioneBolla()) {
this.dispatchBollaRow(new PickingObjectDTO() this.manageDispatchBollaRow(new PickingObjectDTO()
.setMtbAart(mtbAart)); .setMtbAart(mtbAart));
} else } else
this.sendError(new NoArtsFoundException()); this.sendError(new NoArtsFoundException());
@ -417,6 +417,22 @@ public class AccettazioneBollaPickingViewModel {
this.sendOnInfoAggiuntiveRequest(onComplete); this.sendOnInfoAggiuntiveRequest(onComplete);
} }
public void manageDispatchBollaRow(final PickingObjectDTO pickingObjectDTO) {
if (SettingsManager.iDB().isFlagEnableFastPickAccettazioneBolla()) {
this.saveNewRow(pickingObjectDTO,
BigDecimal.ONE,
pickingObjectDTO.getMtbAart().getQtaCnf(),
pickingObjectDTO.getMtbAart().getQtaCnf(),
null,
null,
false);
return;
}
dispatchBollaRow(pickingObjectDTO);
}
public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO) { public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO) {
if (this.mCurrentMtbColt == null) return; if (this.mCurrentMtbColt == null) return;

View File

@ -8,6 +8,7 @@ import android.view.LayoutInflater;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -70,10 +71,9 @@ public class DialogAskUnknownBarcodeNotesView extends BaseDialogFragment {
var alertDialog = new MaterialAlertDialogBuilder(this.mContext) var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot()) .setView(mBindings.getRoot())
.setPositiveButton(R.string.confirm, ((dialogInterface, i) -> { .setPositiveButton(R.string.confirm, ((dialogInterface, i) -> {
if(this.onComplete != null) onComplete.run(mViewModel.userNotes.get());
})) }))
.setNegativeButton(R.string.abort, (dialogInterface, i) -> { .setNegativeButton(R.string.abort, (dialogInterface, i) -> {
if(this.onAbort != null) onAbort.run(); if (this.onAbort != null) onAbort.run();
}) })
.setCancelable(isCancelable()) .setCancelable(isCancelable())
.create(); .create();
@ -90,6 +90,22 @@ public class DialogAskUnknownBarcodeNotesView extends BaseDialogFragment {
} }
@Override
public void onShow(DialogInterface dialogInterface) {
super.onShow(dialogInterface);
((AlertDialog) getDialog())
.getButton(AlertDialog.BUTTON_POSITIVE)
.setOnClickListener(v -> {
if(!mViewModel.validateInput())
return;
dismiss();
if (onComplete != null) onComplete.run(mViewModel.userNotes.get());
});
}
@Override @Override
public void onDismiss(@NonNull DialogInterface dialog) { public void onDismiss(@NonNull DialogInterface dialog) {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID); BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
@ -98,8 +114,6 @@ public class DialogAskUnknownBarcodeNotesView extends BaseDialogFragment {
} }
private void initBarcode() { private void initBarcode() {
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessfull) .setOnScanSuccessful(onScanSuccessfull)

View File

@ -4,14 +4,15 @@ import androidx.databinding.ObservableField;
import javax.inject.Inject; import javax.inject.Inject;
import io.reactivex.Observable;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
public class DialogAskUnknownBarcodeNotesViewModel { public class DialogAskUnknownBarcodeNotesViewModel {
public ObservableField<String> userNotes = new ObservableField<>(); public ObservableField<String> userNotes = new ObservableField<>();
public BindableString userNotesErrorMessage = new BindableString();
private ArticoloRESTConsumer articoloRESTConsumer; private ArticoloRESTConsumer articoloRESTConsumer;
@ -57,4 +58,14 @@ public class DialogAskUnknownBarcodeNotesViewModel {
articoloRESTConsumer.updateBarcodeImballo(mtbAart.getCodMart(), unknownBarcode, onComplete, onFailed); articoloRESTConsumer.updateBarcodeImballo(mtbAart.getCodMart(), unknownBarcode, onComplete, onFailed);
}, onFailed); }, onFailed);
} }
public boolean validateInput() {
final boolean emptyUserNotes = userNotes.get() != null && !userNotes.get().isEmpty() && !userNotes.get().isBlank();
if(!emptyUserNotes)
userNotesErrorMessage.set("E' necessario scrivere delle note");
return emptyUserNotes;
}
} }

View File

@ -43,6 +43,7 @@ public class DialogInputQuantityV2DTO {
private boolean canLUBeClosed; private boolean canLUBeClosed;
private boolean saveOnImeDone = false; private boolean saveOnImeDone = false;
private boolean notifyProductLotStatus = false; private boolean notifyProductLotStatus = false;
private boolean disableTracciabilitaCheck = false;
private StatoArticoloDTO statoPartitaMag; private StatoArticoloDTO statoPartitaMag;
@ -349,4 +350,13 @@ public class DialogInputQuantityV2DTO {
this.notifyProductLotStatus = notifyProductLotStatus; this.notifyProductLotStatus = notifyProductLotStatus;
return this; return this;
} }
public boolean isDisableTracciabilitaCheck() {
return disableTracciabilitaCheck;
}
public DialogInputQuantityV2DTO setDisableTracciabilitaCheck(boolean disableTracciabilitaCheck) {
this.disableTracciabilitaCheck = disableTracciabilitaCheck;
return this;
}
} }

View File

@ -173,7 +173,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
.setNote(mDialogInputQuantityV2DTO.getNote()) .setNote(mDialogInputQuantityV2DTO.getNote())
.setIsNoteMandatory(mDialogInputQuantityV2DTO.isNotesMandatory()) .setIsNoteMandatory(mDialogInputQuantityV2DTO.isNotesMandatory())
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag()) .setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
.setDataScad(mDialogInputQuantityV2DTO.getDataScad()); .setDataScad(mDialogInputQuantityV2DTO.getDataScad())
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck());
mBindings.setView(this); mBindings.setView(this);
mBindings.setViewmodel(this.mViewModel); mBindings.setViewmodel(this.mViewModel);

View File

@ -77,6 +77,7 @@ public class DialogInputQuantityV2ViewModel {
private boolean canPartitaMagBeChanged; private boolean canPartitaMagBeChanged;
private int onNumCnfInputChanged; private int onNumCnfInputChanged;
private int onQtaTotInputChanged; private int onQtaTotInputChanged;
private boolean disableTracciabilitaCheck;
private Listener mListener; private Listener mListener;
@ -330,6 +331,11 @@ public class DialogInputQuantityV2ViewModel {
return this; return this;
} }
public DialogInputQuantityV2ViewModel setDisableTracciabilitaCheck(boolean disableTracciabilitaCheck) {
this.disableTracciabilitaCheck = disableTracciabilitaCheck;
return this;
}
public boolean canPartitaMagBeChanged() { public boolean canPartitaMagBeChanged() {
return canPartitaMagBeChanged; return canPartitaMagBeChanged;
} }
@ -451,7 +457,7 @@ public class DialogInputQuantityV2ViewModel {
return false; return false;
} }
if (mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) {
if (suggestPartitaMagRunnable != null) { if (suggestPartitaMagRunnable != null) {
internalPartitaMag = suggestPartitaMagRunnable.run(this); internalPartitaMag = suggestPartitaMagRunnable.run(this);
if (internalPartitaMag == null) { if (internalPartitaMag == null) {

View File

@ -58,6 +58,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
app:errorText="@{viewmodel.userNotesErrorMessage}"
android:hint="Note"> android:hint="Note">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText