Aggiunta possibilità di scansionare una UL direttamente dall'avantielenco di Recupero Materiale.

This commit is contained in:
Giuseppe Scorrano 2019-12-03 12:26:11 +01:00
parent efa891187a
commit 58b0db488d
9 changed files with 145 additions and 125 deletions

View File

@ -51,6 +51,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding;
import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoListAdapter;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskCliente;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
@ -275,21 +276,21 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
ColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColtScanned -> {
if(mtbColtScanned == null) {
showNoULFound(() -> {
DialogCommon.showNoULFound(mContext, () -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
} else if((mtbColtScanned.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColtScanned.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColtScanned.getSegno() > 0) {
pickMerceULtoUL(mtbColtScanned, mtbColt.get(), progressDialog);
} else {
showNoULFound(() -> {
DialogCommon.showNoULFound(mContext, () -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
}
}, ex -> {
showNoULFound(() -> {
DialogCommon.showNoULFound(mContext, () -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
@ -317,7 +318,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
}
this.loadArticolo(barcodeProd, ean128Model, progressDialog);
} else {
showNoULFound(() -> {
DialogCommon.showNoULFound(mContext, () -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
@ -327,7 +328,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
showNoULFound(() -> {
DialogCommon.showNoULFound(mContext, () -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
@ -577,23 +578,6 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
}
private void showDataSavedDialog() {
DialogSimpleMessageHelper.makeSuccessDialog(
mContext,
mContext.getResources().getString(R.string.completed),
new SpannableString(mContext.getResources().getString(R.string.data_saved)),
null, null).show();
}
private void showNoULFound(Runnable onComplete) {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_lu_found_message)),
null, onComplete).show();
}

View File

@ -2,15 +2,14 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale.viewmodel;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.text.Html;
import android.text.SpannableString;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Stream;
import com.tfb.fbtoast.FBToast;
import java.math.BigDecimal;
@ -22,32 +21,25 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentProdRecuperoMaterialeBinding;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.HistoryULsListAdapter;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdUL;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.views.InputQuantityToReturnDialog;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
@ -65,6 +57,7 @@ public class ProdRecuperoMaterialeViewModel {
public ObservableField<MtbColt> mtbColt = new ObservableField<>();
private int barcodeScannerIstanceID = -1;
public void init(Activity context, FragmentProdRecuperoMaterialeBinding binding, ProdRecuperoMaterialeHelper helper, Runnable onRecuperoCompleted) {
mContext = context;
@ -74,6 +67,8 @@ public class ProdRecuperoMaterialeViewModel {
initRecyclerView();
refreshAdapter();
initBarcode();
}
@ -83,15 +78,81 @@ public class ProdRecuperoMaterialeViewModel {
private void initBarcode() {
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessful)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
}
private void initRecyclerView() {
mAdapter = new HistoryULsListAdapter(mContext, new ArrayList<>());
mAdapter.setOnItemClicked(this::onListItemClicked);
mAdapter.setOnItemClicked(data -> this.dispatchItem(data, null, null));
mBinding.prodRecuperoMaterialeMainList.setLayoutManager(new LinearLayoutManager(mContext));
mBinding.prodRecuperoMaterialeMainList.setAdapter(mAdapter);
}
private void onListItemClicked(HistoryVersamentoProdUL item) {
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable();
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
if(UtilityBarcode.isEtichettaAnonima(data) || UtilityBarcode.isEtichetta128(data)){
this.executeEtichettaUL(data, progressDialog);
}
};
private void executeEtichettaUL(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
if(mtbColt != null) {
HistoryVersamentoProdUL historyVersamentoProdUL = this.getHistoryElementFromMtbColt(mtbColt);
if(historyVersamentoProdUL != null) {
this.dispatchItem(historyVersamentoProdUL, mtbColt, progressDialog);
} else {
DialogCommon.showNoULFound(mContext, () -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
}
} else {
DialogCommon.showNoULFound(mContext, () -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
}
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
}
private HistoryVersamentoProdUL getHistoryElementFromMtbColt(MtbColt mtbColt) {
List<HistoryVersamentoProdUL> filteredItems = Stream.of(mDataset)
.filter(x -> Objects.equals(x.getNumColloRif(), mtbColt.getNumCollo()) &&
x.getDataColloRif().equals(mtbColt.getDataColloS()) &&
x.getSerColloRif().equalsIgnoreCase(mtbColt.getSerCollo()) &&
x.getGestioneRif().equalsIgnoreCase(mtbColt.getGestione()))
.toList();
if(filteredItems != null && filteredItems.size() > 0) {
return filteredItems.get(0);
}
return null;
}
private void dispatchItem(HistoryVersamentoProdUL item, MtbColt sourceMtbColt, Dialog dialogProgress) {
BigDecimal qtaDaEvadere = BigDecimal.ZERO;
qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol());
@ -108,20 +169,23 @@ public class ProdRecuperoMaterialeViewModel {
.setQtaDisponibile(qtaDaEvadere);
DialogInputQuantity.makeBase(mContext, dto, false, quantity -> {
onItemDispatched(item, quantity.qtaTot.getBigDecimal());
onItemDispatched(item, quantity.qtaTot.getBigDecimal(), sourceMtbColt, dialogProgress);
}, () -> {
}).show();
// InputQuantityToReturnDialog.make(mContext, item.getMtbAart(), BigDecimal.ONE, qtaDaEvadere, quantity -> {
// onItemDispatched(item, quantity);
// }).show();
}
private void onItemDispatched(HistoryVersamentoProdUL item, BigDecimal quantity) {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
private void onItemDispatched(HistoryVersamentoProdUL item, BigDecimal quantity, MtbColt sourceMtbColt, Dialog progress) {
if(progress == null) {
progress = UtilityProgress.createDefaultProgressDialog(mContext);
}
Dialog finalProgress = progress;
final MtbColt mtbColtScarico = new MtbColt()
.setDataCollo(item.getDataCollo())
@ -147,7 +211,8 @@ public class ProdRecuperoMaterialeViewModel {
mtbColtScarico.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
mtbColtScarico.getMtbColr().add(mtbColrScarico);
DialogScanOrCreateLU.make(mContext, false, false, mtbColt -> {
RunnableArgs<MtbColt> saveRunnable = mtbColt -> {
if(mtbColt != null) {
@ -192,30 +257,29 @@ public class ProdRecuperoMaterialeViewModel {
FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
if(finalShouldPrint) {
printCollo(progress, value.get(0), () -> {
printCollo(finalProgress, value.get(0), () -> {
this.refreshAdapter();
mOnRecuperoCompleted.run();
});
} else {
progress.dismiss();
finalProgress.dismiss();
this.refreshAdapter();
mOnRecuperoCompleted.run();
}
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progress);
UtilityExceptions.defaultException(mContext, ex, finalProgress);
});
} else {
progress.dismiss();
finalProgress.dismiss();
}
}).show();
};
if(sourceMtbColt != null) saveRunnable.run(sourceMtbColt);
else DialogScanOrCreateLU.make(mContext, false, false, saveRunnable).show();
}
@ -285,4 +349,7 @@ public class ProdRecuperoMaterialeViewModel {
});
}
}

View File

@ -20,6 +20,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentProdVersamentoMaterialeBinding;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
@ -103,7 +104,7 @@ public class ProdVersamentoMaterialViewModel {
cloneUL.setCodJfas(mtbDepoPosizione.getPosizione());
ColliMagazzinoRESTConsumer.createColloScaricoDaCarico(cloneUL, mtbDepoPosizione, generatedMtbColt -> {
showDataSavedDialog(() -> {
DialogCommon.showDataSaved(mContext, () -> {
progressDialog.dismiss();
mOnVersamentoCompleted.run();
});
@ -123,14 +124,4 @@ public class ProdVersamentoMaterialViewModel {
}
private void showDataSavedDialog(Runnable onPositiveClick) {
DialogSimpleMessageHelper.makeSuccessDialog(
mContext,
mContext.getResources().getString(R.string.completed),
new SpannableString(mContext.getResources().getString(R.string.data_saved)),
null, onPositiveClick).show();
}
}

View File

@ -210,16 +210,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
super.onBackPressed();
}
private void showDataSavedDialog() {
DialogSimpleMessageHelper.makeSuccessDialog(
this,
getString(R.string.completed),
new SpannableString(getString(R.string.data_saved)),
null, null).show();
}
public void manualSearch(){
BarcodeManager.disable();
DialogSimpleInputHelper.makeInputDialog(this,"Inserisci il codice a barre/codice articolo da cercare",codice->{

View File

@ -27,6 +27,7 @@ import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding;
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
@ -82,7 +83,7 @@ public class VenditaViewModel {
if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)){
this.executeEtichettaLU(ean128Model.Sscc, progressDialog);
} else {
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
progressDialog.dismiss();
BarcodeManager.enable();
@ -91,7 +92,7 @@ public class VenditaViewModel {
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
progressDialog.dismiss();
BarcodeManager.enable();
}
@ -124,7 +125,7 @@ public class VenditaViewModel {
mFragment.refreshOrdini(filteredOrders);
mFragment.refreshRecyclerView();
} else {
showNoOrderFound();
DialogCommon.showNoOrderFound(mContext, null);
}
progressDialog.dismiss();
@ -149,7 +150,7 @@ public class VenditaViewModel {
} else {
progressDialog.dismiss();
BarcodeManager.enable();
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
}
@ -161,19 +162,6 @@ public class VenditaViewModel {
private void showNoOrderFound() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_orders_found_message)),
null, null).show();
}
private void showNoULFound() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_lu_found_message)),
null, null).show();
}
private void showWrongGestioneUL() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,

View File

@ -371,6 +371,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
//Se è un'etichetta anonima
if(UtilityBarcode.isEtichettaAnonima(data)){
//Se il collo non esiste allora lo creo associandolo a questa etichetta anonima
//invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
//dell'etichetta anonima

View File

@ -40,6 +40,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentMainVersamentoMerceBinding;
import it.integry.integrywmsnative.gest.versamento_merce.core.VersamentoMerceHelper;
import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
@ -125,7 +126,7 @@ public class VersamentoMerceViewModel {
if(mtbColtList == null || mtbColtList.size() == 0){
progressDialog.dismiss();
BarcodeManager.enable();
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
} else if (mtbColtList.size() == 1) {
ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
@ -162,7 +163,7 @@ public class VersamentoMerceViewModel {
if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)){
this.executeEtichettaLU(ean128Model.Sscc, false, progressDialog);
} else {
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
progressDialog.dismiss();
BarcodeManager.enable();
}
@ -186,7 +187,7 @@ public class VersamentoMerceViewModel {
ColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColt -> {
if(mtbColt == null && !isAnonima) {
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
BarcodeManager.enable();
progressDialog.dismiss();
} else if(mtbColt != null && (/*mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO ||*/ mtbColt.getGestioneEnum() == GestioneEnum.VENDITA)) {
@ -236,7 +237,7 @@ public class VersamentoMerceViewModel {
progressDialog.dismiss();
BarcodeManager.enable();
showDataSavedDialog(mOnVersamentoCompleted);
DialogCommon.showDataSaved(mContext, mOnVersamentoCompleted);
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
@ -382,13 +383,6 @@ public class VersamentoMerceViewModel {
}
private void showNoULFound() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_lu_found_message)),
null, null).show();
}
private void showWrongGestioneUL() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(Html.fromHtml(mContext.getResources().getText(R.string.gestione_V_not_accepted_message).toString())),
@ -419,7 +413,7 @@ public class VersamentoMerceViewModel {
ColliMagazzinoRESTConsumer.saveColli(mtbColts, value -> {
showDataSavedDialog(() -> {
DialogCommon.showDataSaved(mContext, () -> {
mOnVersamentoCompleted.run();
});
}, ex -> {
@ -428,17 +422,4 @@ public class VersamentoMerceViewModel {
}
private void showDataSavedDialog(Runnable onComplete) {
DialogSimpleMessageHelper.makeSuccessDialog(
mContext,
mContext.getResources().getString(R.string.completed),
new SpannableString(mContext.getResources().getString(R.string.data_saved)),
null, () -> {
onComplete.run();
//resetMtbColt();
}).show();
}
}

View File

@ -18,4 +18,27 @@ public class DialogCommon {
null, onPositiveClick).show();
}
public static void showNoULFound(@NotNull Context context, @Nullable Runnable onPositiveClick) {
DialogSimpleMessageHelper.makeWarningDialog(context,
new SpannableString(context.getResources().getText(R.string.no_lu_found_message)),
null, onPositiveClick).show();
}
public static void showNoOrderFound(@NotNull Context context, @Nullable Runnable onPositiveClick) {
DialogSimpleMessageHelper.makeWarningDialog(context,
new SpannableString(context.getResources().getText(R.string.no_orders_found_message)),
null, onPositiveClick).show();
}
public static void showDataSaved(@NotNull Context context, @Nullable Runnable onPositiveClick) {
DialogSimpleMessageHelper.makeSuccessDialog(
context,
context.getResources().getString(R.string.completed),
new SpannableString(context.getResources().getString(R.string.data_saved)),
null, onPositiveClick).show();
}
}

View File

@ -33,6 +33,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding;
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class DialogScanOrCreateLU {
@ -134,7 +135,7 @@ public class DialogScanOrCreateLU {
} else {
progressDialog.dismiss();
BarcodeManager.enable();
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
}
};
@ -150,7 +151,7 @@ public class DialogScanOrCreateLU {
if(mtbColtList == null || mtbColtList.size() == 0){
progressDialog.dismiss();
BarcodeManager.enable();
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
} else if (mtbColtList.size() == 1) {
ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), mShouldCheckResiduo, false, mtbColt -> {
sendMtbColt(mtbColt, progressDialog);
@ -241,7 +242,7 @@ public class DialogScanOrCreateLU {
} else {
BarcodeManager.enable();
progressDialog.dismiss();
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
}
}, ex -> {
@ -253,7 +254,7 @@ public class DialogScanOrCreateLU {
BarcodeManager.enable();
progressDialog.dismiss();
showNoULFound();
DialogCommon.showNoULFound(mContext, null);
}
@ -272,12 +273,6 @@ public class DialogScanOrCreateLU {
null, null).show();
}
private void showNoULFound() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_lu_found_message)),
null, null).show();
}
private void sendMtbColt(MtbColt mtbColtToSend, Dialog progressDialog) {
currentMtbColt = mtbColtToSend;
progressDialog.dismiss();