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 flagCanAddUnknownBarcodesAccettazioneBolla = false;
private boolean flagEnableFastPickAccettazioneBolla = false;
private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
@ -546,4 +547,13 @@ public class DBSettingsModel {
this.flagEnableFastPickAccettazioneBolla = flagEnableFastPickAccettazioneBolla;
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")
.setSetter(dbSettingsModelIstance::setFlagEnableFastPickAccettazioneBolla)
.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();

View File

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

View File

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

View File

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

View File

@ -4,14 +4,15 @@ import androidx.databinding.ObservableField;
import javax.inject.Inject;
import io.reactivex.Observable;
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.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
public class DialogAskUnknownBarcodeNotesViewModel {
public ObservableField<String> userNotes = new ObservableField<>();
public BindableString userNotesErrorMessage = new BindableString();
private ArticoloRESTConsumer articoloRESTConsumer;
@ -57,4 +58,14 @@ public class DialogAskUnknownBarcodeNotesViewModel {
articoloRESTConsumer.updateBarcodeImballo(mtbAart.getCodMart(), unknownBarcode, onComplete, 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 saveOnImeDone = false;
private boolean notifyProductLotStatus = false;
private boolean disableTracciabilitaCheck = false;
private StatoArticoloDTO statoPartitaMag;
@ -349,4 +350,13 @@ public class DialogInputQuantityV2DTO {
this.notifyProductLotStatus = notifyProductLotStatus;
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())
.setIsNoteMandatory(mDialogInputQuantityV2DTO.isNotesMandatory())
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
.setDataScad(mDialogInputQuantityV2DTO.getDataScad());
.setDataScad(mDialogInputQuantityV2DTO.getDataScad())
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck());
mBindings.setView(this);
mBindings.setViewmodel(this.mViewModel);

View File

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

View File

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