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