Migliorie processBarcode in PVOrdineAcquistoEditActivity
This commit is contained in:
parent
4b1632c265
commit
5728481a94
@ -207,12 +207,12 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirmCheckForUnlistedProduct(String barcode) {
|
||||
public void confirmCheckForUnlistedProduct(String barcode, Runnable onComplete) {
|
||||
DialogSimpleMessageView.makeInfoDialog(getText(R.string.info).toString(),
|
||||
Html.fromHtml(getResources().getString(R.string.confirm_order_unlisted_item)),
|
||||
null,
|
||||
() -> {
|
||||
this.mViewModel.loadArticolo(barcode);
|
||||
this.mViewModel.loadArticolo(barcode, onComplete);
|
||||
}, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||
}
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@ -25,7 +26,6 @@ import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinab
|
||||
import it.integry.integrywmsnative.core.exception.ArtNotFoundInGridException;
|
||||
import it.integry.integrywmsnative.core.exception.EmptyOrderException;
|
||||
import it.integry.integrywmsnative.core.exception.ExpiredProductListException;
|
||||
import it.integry.integrywmsnative.core.exception.MultipleResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.exception.NoArtsInGridException;
|
||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
@ -161,15 +161,28 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
BarcodeManager.disable();
|
||||
|
||||
try {
|
||||
List<ArticoloOrdinabileDTO> listArticoli = matchArticoliForBarcode(barcode);
|
||||
if (listArticoli == null || listArticoli.isEmpty()) {
|
||||
List<ArticoloOrdinabileDTO> listArticoli = findArticoliByBarcode(barcode);
|
||||
|
||||
if (listArticoli == null || listArticoli.isEmpty())
|
||||
onNoArtsFoundByBarcode(barcode, onComplete);
|
||||
else
|
||||
addArtFromGriglia(listArticoli, onComplete);
|
||||
|
||||
} catch (Exception e) {
|
||||
this.sendError(e);
|
||||
onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
private void onNoArtsFoundByBarcode(String barcode, Runnable onComplete) throws NoResultFromBarcodeException {
|
||||
if (SettingsManager.iDB().isFlagConsentiFuoriPianoLogistico() && UtilityString.isNullOrEmpty(mCurrentOrdine.getCodAlis())) {
|
||||
this.mListener.confirmCheckForUnlistedProduct(barcode);
|
||||
return;
|
||||
this.mListener.confirmCheckForUnlistedProduct(barcode, onComplete);
|
||||
} else {
|
||||
throw new NoResultFromBarcodeException(barcode);
|
||||
}
|
||||
}
|
||||
|
||||
private void addArtFromGriglia(List<ArticoloOrdinabileDTO> listArticoli, Runnable onComplete) {
|
||||
if (listArticoli.size() == 1) {
|
||||
this.addArticoloToOrdine(
|
||||
listArticoli.get(0),
|
||||
@ -184,12 +197,9 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
this::sendError);
|
||||
});
|
||||
}
|
||||
} catch (Exception e) {
|
||||
this.sendError(e);
|
||||
onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad) {
|
||||
try {
|
||||
mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, this::sendError);
|
||||
@ -257,10 +267,11 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
return articolo;
|
||||
}
|
||||
|
||||
public List<ArticoloOrdinabileDTO> matchArticoliForBarcode(String barcode) throws NoArtsInGridException, MultipleResultFromBarcodeException, NoResultFromBarcodeException {
|
||||
public List<ArticoloOrdinabileDTO> findArticoliByBarcode(String barcode) throws NoArtsInGridException {
|
||||
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
|
||||
throw new NoArtsInGridException();
|
||||
}
|
||||
|
||||
List<ArticoloOrdinabileDTO> articoli = Stream.of(mArticoliGriglia).filter(articolo ->
|
||||
articolo.getCodMart().equalsIgnoreCase(barcode) ||
|
||||
articolo.getBarcode().contains(barcode) ||
|
||||
@ -367,13 +378,17 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
public void loadArticolo(String barcode) {
|
||||
public void loadArticolo(String barcode, Runnable onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||
pvOrdiniAcquistoRESTConsumer.retrieveArticolo(null, codMdep, barcode, (grigliaDTO) -> {
|
||||
|
||||
RunnableArgs<ArticoloOrdinabileDTO> addArtToOrder = (articolo) -> {
|
||||
ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirstOrElse(null);
|
||||
|
||||
ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
|
||||
.findFirstOrElse(null);
|
||||
|
||||
if (existingArt != null) {
|
||||
List<String> barcodes = existingArt.getBarcode();
|
||||
barcodes.addAll(articolo.getBarcode());
|
||||
@ -382,7 +397,8 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
} else {
|
||||
mArticoliGriglia.add(articolo);
|
||||
}
|
||||
this.processBarcode(barcode);
|
||||
|
||||
this.addArtFromGriglia(Collections.singletonList(existingArt), onComplete);
|
||||
};
|
||||
|
||||
if (grigliaDTO == null || grigliaDTO.getArticoli().isEmpty()) {
|
||||
@ -421,7 +437,7 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void confirmCheckForUnlistedProduct(String barcode);
|
||||
void confirmCheckForUnlistedProduct(String barcode, Runnable onComplete);
|
||||
|
||||
void confirmExportInvalidProducts(Runnable onConfirm);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user