Implementata gestione che aggancia un barcode imballo ad un articolo già esistente

This commit is contained in:
Giuseppe Scorrano 2023-08-07 13:01:37 +02:00
parent 4b475ef1e5
commit 77e3d00bef
20 changed files with 440 additions and 30 deletions

View File

@ -102,6 +102,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetM
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListComponent;
@ -183,7 +185,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogInfoSituazioneArticoloModule.class,
DialogSelectArtToOrderModule.class,
MainAccettazioneBollaElencoModule.class,
AccettazioneBollaPickingModule.class
AccettazioneBollaPickingModule.class,
DialogBindProductBarcodeWithPackageModule.class
})
public interface MainApplicationComponent {
@ -309,6 +312,8 @@ public interface MainApplicationComponent {
AccettazioneBollaPickingComponent.Factory accettazioneBollaPickingComponent();
DialogBindProductBarcodeWithPackageComponent.Factory dialogBindProductBarcodeWithPackageComponent();
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);

View File

@ -19,6 +19,9 @@ import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCodMartRequestDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeRequestDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeResponseDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.UpdateBarcodeImballoRequestDTO;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
import retrofit2.Call;
import retrofit2.Callback;
@ -33,23 +36,28 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
this.systemRESTConsumer = systemRESTConsumer;
}
public void getByBarcodeProd(String barcodeProd, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
public void searchByBarcode(String barcodeProd, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumerService.getByBarcodeProd(barcodeProd).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByBarcodeProd", (m) -> {
List<MtbAart> aartList = response.body().getEntityList();
aartList = aartList != null ? Stream.of(aartList).filter(x -> x.getFlagStato().equalsIgnoreCase("A")).toList() : null;
onComplete.run(aartList);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
var request = new SearchArticoloByBarcodeRequestDTO()
.setBarcode(barcodeProd)
.setOnlyActive(true);
articoloRESTConsumerService
.searchByBarcode(request)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<SearchArticoloByBarcodeResponseDTO>> call, Response<ServiceRESTResponse<SearchArticoloByBarcodeResponseDTO>> response) {
analyzeAnswer(response, "searchByBarcode", (m) -> {
onComplete.run(response.body().getDto().getArts());
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<SearchArticoloByBarcodeResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
@ -191,4 +199,29 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
onComplete.run(inputMtbAart);
}, onFailed);
}
public void updateBarcodeImballo(String codMart, String newBarcodeImballo, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class);
var request = new UpdateBarcodeImballoRequestDTO()
.setCodMart(codMart)
.setNewBarcodeImballo(newBarcodeImballo);
articoloRESTConsumerService
.updateBarcodeImballo(request)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "updateBarcodeImballo", m -> {
onComplete.run();
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@ -6,6 +6,9 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCodMartRequestDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeRequestDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeResponseDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.UpdateBarcodeImballoRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
@ -14,13 +17,15 @@ import retrofit2.http.Query;
public interface ArticoloRESTConsumerService {
@POST("SM2getArticoloByBarcode")
Call<ServiceRESTResponse<MtbAart>> getByBarcodeProd(@Query("barcode") String barcodeProd);
@POST("wms/articolo/searchByBarcode")
Call<ServiceRESTResponse<SearchArticoloByBarcodeResponseDTO>> searchByBarcode(@Body() SearchArticoloByBarcodeRequestDTO searchArticoloByBarcodeRequest);
@POST("wms/articolo/retrieveByCodMart")
Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Body RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest);
@POST("wms/articolo/updateBarcodeImballo")
Call<ServiceRESTResponse<Void>> updateBarcodeImballo(@Body UpdateBarcodeImballoRequestDTO updateBarcodeImballoRequest);
@GET("getProductLotStatus")
Call<ServiceRESTResponse<List<StatoArticoloDTO>>> getStatoPartita(@Query("codMart") String codMart, @Query("partitaMag") String partitaMag);

View File

@ -0,0 +1,25 @@
package it.integry.integrywmsnative.core.rest.model.articolo;
public class SearchArticoloByBarcodeRequestDTO {
private String barcode;
private boolean onlyActive;
public String getBarcode() {
return barcode;
}
public SearchArticoloByBarcodeRequestDTO setBarcode(String barcode) {
this.barcode = barcode;
return this;
}
public boolean isOnlyActive() {
return onlyActive;
}
public SearchArticoloByBarcodeRequestDTO setOnlyActive(boolean onlyActive) {
this.onlyActive = onlyActive;
return this;
}
}

View File

@ -0,0 +1,20 @@
package it.integry.integrywmsnative.core.rest.model.articolo;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbAart;
public class SearchArticoloByBarcodeResponseDTO {
private List<MtbAart> arts;
public List<MtbAart> getArts() {
return arts;
}
public SearchArticoloByBarcodeResponseDTO setArts(List<MtbAart> arts) {
this.arts = arts;
return this;
}
}

View File

@ -0,0 +1,26 @@
package it.integry.integrywmsnative.core.rest.model.articolo;
public class UpdateBarcodeImballoRequestDTO {
private String codMart;
private String newBarcodeImballo;
public String getCodMart() {
return codMart;
}
public UpdateBarcodeImballoRequestDTO setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getNewBarcodeImballo() {
return newBarcodeImballo;
}
public UpdateBarcodeImballoRequestDTO setNewBarcodeImballo(String newBarcodeImballo) {
this.newBarcodeImballo = newBarcodeImballo;
return this;
}
}

View File

@ -61,6 +61,7 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
@ -538,6 +539,13 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
});
}
@Override
public void onUnknownBarcodeScanned(String barcode) {
DialogBindProductBarcodeWithPackageView
.newInstance(barcode, null)
.show(getSupportFragmentManager(), DialogBindProductBarcodeWithPackageView.class.getName());
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

View File

@ -19,7 +19,6 @@ import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.exception.AlreadyUsedAnonymousLabelException;
import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
@ -30,6 +29,7 @@ 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.MtbTCol;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
@ -55,7 +55,6 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.SitBollaAccettazioneDTO;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.rest.AccettazioneBollaPickingRESTConsumer;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.HistoryMtbAartDTO;
@ -307,12 +306,14 @@ public class AccettazioneBollaPickingViewModel {
}
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
} else {
this.sendError(new NoResultFromBarcodeException(barcodeProd));
// this.sendError(new NoResultFromBarcodeException(barcodeProd));
onComplete.run();
this.sendOnUnknownBarcodeScanned(barcodeProd);
}
}, this::sendError);
@ -890,6 +891,11 @@ public class AccettazioneBollaPickingViewModel {
mListener.onULVersata(versamentoAutomaticoULResponseDTO, onComplete);
}
private void sendOnUnknownBarcodeScanned(String barocde) {
if (this.mListener != null)
mListener.onUnknownBarcodeScanned(barocde);
}
public AccettazioneBollaPickingViewModel setListeners(Listener listener) {
this.mListener = listener;
return this;
@ -932,6 +938,8 @@ public class AccettazioneBollaPickingViewModel {
void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete);
void onUnknownBarcodeScanned(String barcode);
}
}

View File

@ -323,7 +323,7 @@ public class AccettazioneOrdiniPickingViewModel {
}
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);

View File

@ -254,7 +254,7 @@ public class PickingLiberoViewModel {
}
private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Runnable onComplete) {
mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
MtbAart articolo = mtbAartList.get(0);
MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione());

View File

@ -164,7 +164,7 @@ public class RettificaGiacenzeViewModel {
}
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (onComplete != null) onComplete.run();
if (mtbAartList != null && mtbAartList.size() > 0) {

View File

@ -595,7 +595,7 @@ public class SpedizioneViewModel {
}
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
if (mtbAartList.size() == 1) {

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package;
import dagger.Subcomponent;
@Subcomponent
public interface DialogBindProductBarcodeWithPackageComponent {
@Subcomponent.Factory
interface Factory {
DialogBindProductBarcodeWithPackageComponent create();
}
void inject(DialogBindProductBarcodeWithPackageView dialogBindProductBarcodeWithPackageView);
}

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
@Module(subcomponents = DialogBindProductBarcodeWithPackageComponent.class)
public class DialogBindProductBarcodeWithPackageModule {
@Provides
DialogBindProductBarcodeWithPackageViewModel providesDialogBindProductBarcodeWithPackageViewModel(ArticoloRESTConsumer articoloRESTConsumer) {
return new DialogBindProductBarcodeWithPackageViewModel(articoloRESTConsumer);
}
}

View File

@ -0,0 +1,121 @@
package it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.MainApplication;
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.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.databinding.DialogBindProductBarcodeWithPackageBinding;
public class DialogBindProductBarcodeWithPackageView extends BaseDialogFragment {
@Inject
DialogBindProductBarcodeWithPackageViewModel mViewModel;
private DialogBindProductBarcodeWithPackageBinding mBindings;
private Context mContext;
private final String unknownBarcode;
private final Runnable onAbort;
private int mBarcodeScannerIstanceID;
//Pass here all external parameters
public static DialogBindProductBarcodeWithPackageView newInstance(String unknownBarcode,Runnable onAbort) {
return new DialogBindProductBarcodeWithPackageView(unknownBarcode, onAbort);
}
private DialogBindProductBarcodeWithPackageView(String unknownBarcode, Runnable onAbort) {
super();
this.unknownBarcode = unknownBarcode;
this.onAbort = onAbort;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
mBindings = DialogBindProductBarcodeWithPackageBinding.inflate(LayoutInflater.from(this.mContext), null, false);
mBindings.setLifecycleOwner(this);
setCancelable(false);
MainApplication.appComponent
.dialogBindProductBarcodeWithPackageComponent()
.create()
.inject(this);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot())
.setNegativeButton(R.string.abort, (dialogInterface, i) -> {
if(this.onAbort != null) onAbort.run();
})
.setCancelable(isCancelable())
.create();
alertDialog.setCanceledOnTouchOutside(isCancelable());
alertDialog.setOnShowListener(this);
initBarcode();
mViewModel.init(unknownBarcode);
return alertDialog;
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
BarcodeManager.enable();
super.onDismiss(dialog);
}
private void initBarcode() {
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessfull)
.setOnScanFailed(this::onError));
BarcodeManager.enable();
setBarcodeListener(true);
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
this.onLoadingStarted();
this.mViewModel.processBarcodeDTO(data, () -> {
this.onLoadingEnded();
dismiss();
}, this::onError);
};
@Override
public void onError(Exception ex) {
super.onError(ex);
BarcodeManager.enable();
}
}

View File

@ -0,0 +1,56 @@
package it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
public class DialogBindProductBarcodeWithPackageViewModel {
private ArticoloRESTConsumer articoloRESTConsumer;
private String unknownBarcode;
@Inject
public DialogBindProductBarcodeWithPackageViewModel(ArticoloRESTConsumer articoloRESTConsumer) {
this.articoloRESTConsumer = articoloRESTConsumer;
}
public void init(String unknownBarcode) {
this.unknownBarcode = unknownBarcode;
}
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO) ||
UtilityBarcode.isEtichettaPosizione(barcodeScanDTO) ||
UtilityBarcode.isEtichetta128(barcodeScanDTO) ||
UtilityBarcode.isEanPeso(barcodeScanDTO)) {
onFailed.run(new Exception("E' necessario scansionare un'etichetta EAN13 per procedere"));
} else {
this.loadArticolo(barcodeScanDTO.getStringValue(), onComplete, onFailed);
}
}
private void loadArticolo(String stringValue, Runnable onComplete, RunnableArgs<Exception> onFailed) {
this.articoloRESTConsumer.searchByBarcode(stringValue, mtbAarts -> {
if(mtbAarts == null || mtbAarts.isEmpty()) {
onFailed.run(new Exception("Nessun articolo trovato con il barcode: " + stringValue));
return;
}
if(mtbAarts.size() > 1) {
onFailed.run(new Exception("Sono stati trovati " + mtbAarts.size() + " articoli agganciati al barcode: " + stringValue));
return;
}
var mtbAart = mtbAarts.get(0);
articoloRESTConsumer.updateBarcodeImballo(mtbAart.getCodMart(), unknownBarcode, onComplete, onFailed);
}, onFailed);
}
}

View File

@ -294,7 +294,7 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen
private void loadArticolo(String barcodeProd, Ean128Model ean128Model) {
this.articoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
this.articoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
MtbAart articolo = mtbAartList.get(0);

View File

@ -179,7 +179,7 @@ public class DialogScanArtViewModel {
private void loadArticolo(@NotNull String barcodeProd, Ean128Model ean128Model, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
MtbAart firstArt = mtbAartList.get(0);

View File

@ -168,7 +168,7 @@ public class DialogScanOrCreateLUViewModel {
}
private void executeEAN13(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeScanDTO.getStringValue(), articoli -> {
this.mArticoloRESTConsumer.searchByBarcode(barcodeScanDTO.getStringValue(), articoli -> {
if (articoli != null && articoli.size() == 1) {
MtbAart articolo = articoli.get(0);
MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione());

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="16dp">
<androidx.appcompat.widget.AppCompatImageView
style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked"
android:layout_width="36dp"
android:layout_height="36dp"
android:src="@drawable/ic_black_barcode_scanner"
app:tint="?colorPrimary" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="16dp"
android:text="Associa barcode" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/description_text"
style="@style/TextAppearance.Material3.BodyMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Il barcode che hai scansionato non è stato riconosciuto, scansiona il barcode del prodotto a cui vuoi associarlo" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
android:orientation="horizontal">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:gravity="center_horizontal"
android:text="In attesa"
android:textSize="16sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>
</layout>