From 1df84ba046b238ee10472dabc884c466e1bb2096 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 13 Mar 2023 15:57:56 +0100 Subject: [PATCH 1/4] Creato popup info articolo che mostra le qta in arrivo e le qta in giacenza --- .../MainApplicationComponent.java | 6 +- .../configs/MenuConfiguration.java | 23 ++-- .../rest/consumers/GiacenzaRESTConsumer.java | 63 ++++++++++ .../GiacenzaRESTConsumerService.java | 19 ++- .../InstantItemSituationIncomingItemDto.java | 88 ++++++++++++++ .../InstantItemSituationResponseDto.java | 19 +++ .../OrdiniUscitaElencoFragment.java | 9 +- .../RettificaGiacenzeViewModel.java | 6 +- ...DialogInfoSituazioneArticoloComponent.java | 14 +++ .../DialogInfoSituazioneArticoloModule.java | 14 +++ .../DialogInfoSituazioneArticoloView.java | 112 ++++++++++++++++++ ...DialogInfoSituazioneArticoloViewModel.java | 5 + .../dialog_info_situazione_articolo.xml | 102 ++++++++++++++++ ...ituazione_articolo_available_list_item.xml | 100 ++++++++++++++++ ...situazione_articolo_incoming_list_item.xml | 100 ++++++++++++++++ app/src/main/res/values/custom_colors.xml | 4 + 16 files changed, 666 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/giacenza/InstantItemSituationIncomingItemDto.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/giacenza/InstantItemSituationResponseDto.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloViewModel.java create mode 100644 app/src/main/res/layout/dialog_info_situazione_articolo.xml create mode 100644 app/src/main/res/layout/dialog_info_situazione_articolo_available_list_item.xml create mode 100644 app/src/main/res/layout/dialog_info_situazione_articolo_incoming_list_item.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 1de78ec3..b93a14c6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -80,6 +80,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListComponent; import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListModule; +import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloComponent; +import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloModule; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent; @@ -172,7 +174,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr BottomSheetMtbColrEditModalModule.class, DialogChooseArtsFromMtbAartListModule.class, MainSettingsModule.class, - + DialogInfoSituazioneArticoloModule.class }) public interface MainApplicationComponent { @@ -290,6 +292,8 @@ public interface MainApplicationComponent { MainSettingsComponent.Factory mainSettingsFragmentComponent(); + DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java index 861a26d1..969a3ffe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java @@ -15,6 +15,7 @@ import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragm import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; +import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloView; import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; @@ -58,7 +59,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.vendita_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_spedizione) .setDrawerIcon(R.drawable.ic_upload) - .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) + .setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, DialogInfoSituazioneArticoloView.class))) .addItem(new MenuItem() .setID(R.id.nav_rettifica_spedizione) @@ -107,9 +108,9 @@ public class MenuConfiguration extends BaseMenuConfiguration { .addItem(new MenuItem() .setID(R.id.nav_free_lav_picking) .setCodMenu("MG051") - .setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking) + .setTitleText(R.string.free_lav_picking) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner) + .setDrawerIcon(R.drawable.ic_black_barcode_scanner) .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE))) .addItem(new MenuItem() @@ -117,7 +118,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setCodMenu("MG052") .setTitleText(R.string.prod_fabbisogno_linee_prod_title) .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf) + .setDrawerIcon(R.drawable.ic_black_load_shelf) .setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance)) .addItem(new MenuItem() @@ -137,19 +138,19 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance)) .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce) + .setID(R.id.nav_prod_rientro_merce) .setCodMenu("MG059") - .setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title) - .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) + .setTitleText(R.string.rientro_merce_fragment_title) + .setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione) + .setDrawerIcon(R.drawable.ic_black_external) .setFragmentFactory(ProdRientroMerceFragment::newInstance)) .addItem(new MenuItem() - .setID(it.integry.integrywmsnative.R.id.nav_prod_linee) + .setID(R.id.nav_prod_linee) .setCodMenu("MG061") - .setTitleText(it.integry.integrywmsnative.R.string.nav_prod_linee_title) + .setTitleText(R.string.nav_prod_linee_title) .setTitleIcon(R.drawable.ic_production_line) - .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_production_line) + .setDrawerIcon(R.drawable.ic_production_line) .setFragmentFactory(ProdLineeProduzioneFragment::newInstance)) ).addGroup( new MenuGroup() diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java index a7f7ad85..3995fff5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java @@ -13,6 +13,8 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto; +import it.integry.integrywmsnative.core.utility.UtilityString; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -67,5 +69,66 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { }); } + public void getGiacenzeByArticolo(String codMart, String partitaMag, RunnableArgs> onComplete, RunnableArgs onFailed) { + GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class); + var serviceRESTResponseCall = + UtilityString.isNullOrEmpty(partitaMag) ? + giacenzaRESTConsumerService.retrieveAvailableItemsByArt(codMart) : + giacenzaRESTConsumerService.retrieveAvailableItemsByArt(codMart, partitaMag); + serviceRESTResponseCall.enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "getGiacenzeByArticolo", inventarioList -> { + + List codMarts = Stream.of(inventarioList) + .map(x -> x.getCodMart().trim()) + .distinct() + .toList(); + + mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> { + for (var row : inventarioList) { + + MtbAart foundMtbAart = null; + Optional mtbAartOpt = Stream.of(mtbAarts) + .filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart())) + .findFirst(); + + if (mtbAartOpt.isPresent()) { + foundMtbAart = mtbAartOpt.get(); + } + + row.setMtbAart(foundMtbAart); + } + + onComplete.run(inventarioList); + }, onFailed); + }, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + + + public void getInstantItemSituation(String codMdep, String codMart, String partitaMag, String codJcom, RunnableArgs onComplete, RunnableArgs onFailed) { + GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class); + + giacenzaRESTConsumerService.retrieveInstantItemSituation(codMdep, codMart, partitaMag, codJcom) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "getInstantItemSituation", onComplete, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java index e0097132..a965d535 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java @@ -4,14 +4,31 @@ import java.util.List; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto; import retrofit2.Call; import retrofit2.http.GET; import retrofit2.http.Query; public interface GiacenzaRESTConsumerService { - @GET("wms/giacenza/availableItems") + @GET("wms/giacenza/availableItemsByPosizione") Call>> retrieveAvailableItems( @Query("posizione") String posizione); + @GET("wms/giacenza/availableItemsByArticolo") + Call>> retrieveAvailableItemsByArt( + @Query("codMart") String codMart); + + @GET("wms/giacenza/availableItemsByArticolo") + Call>> retrieveAvailableItemsByArt( + @Query("codMart") String codMart, + @Query("partitaMag") String partitaMag); + + @GET("wms/giacenza/instantItemSituation") + Call> retrieveInstantItemSituation( + @Query("codMdep") String codMdep, + @Query("codMart") String codMart, + @Query("partitaMag") String partitaMag, + @Query("codJcom") String codJcom); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/giacenza/InstantItemSituationIncomingItemDto.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/giacenza/InstantItemSituationIncomingItemDto.java new file mode 100644 index 00000000..7ad902ee --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/giacenza/InstantItemSituationIncomingItemDto.java @@ -0,0 +1,88 @@ +package it.integry.integrywmsnative.core.rest.model.giacenza; + +import java.math.BigDecimal; +import java.time.LocalDate; + +public class InstantItemSituationIncomingItemDto { + + private BigDecimal qtaOrd; + private BigDecimal qtaEvasa; + private BigDecimal numCnf; + private BigDecimal numCnfEvasa; + private BigDecimal qtaCnf; + private String gestione; + private LocalDate dataOrd; + private int numOrd; + private int rigaOrd; + private LocalDate dataCons; + private String codMart; + private String descrizione; + private String partitaMag; + private String codJcom; + private String codMdep; + private String untMis; + + public BigDecimal getQtaOrd() { + return qtaOrd; + } + + public BigDecimal getQtaEvasa() { + return qtaEvasa; + } + + public BigDecimal getNumCnf() { + return numCnf; + } + + public BigDecimal getNumCnfEvasa() { + return numCnfEvasa; + } + + public BigDecimal getQtaCnf() { + return qtaCnf; + } + + public String getGestione() { + return gestione; + } + + public LocalDate getDataOrd() { + return dataOrd; + } + + public int getNumOrd() { + return numOrd; + } + + public int getRigaOrd() { + return rigaOrd; + } + + public LocalDate getDataCons() { + return dataCons; + } + + public String getCodMart() { + return codMart; + } + + public String getDescrizione() { + return descrizione; + } + + public String getPartitaMag() { + return partitaMag; + } + + public String getCodJcom() { + return codJcom; + } + + public String getCodMdep() { + return codMdep; + } + + public String getUntMis() { + return untMis; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/giacenza/InstantItemSituationResponseDto.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/giacenza/InstantItemSituationResponseDto.java new file mode 100644 index 00000000..ca84a12e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/giacenza/InstantItemSituationResponseDto.java @@ -0,0 +1,19 @@ +package it.integry.integrywmsnative.core.rest.model.giacenza; + +import java.util.List; + +import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; + +public class InstantItemSituationResponseDto { + private List incomingItems; + private List availableItems; + + + public List getIncomingItems() { + return incomingItems; + } + + public List getAvailableItems() { + return availableItems; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index c6431f7a..1b27890f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -865,7 +865,14 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF + "
" + "" + alreadyRegisteredUL + " " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)), null, - () -> SpedizioneActivity.startActivity(getActivity(), sitArts, orders, alreadyRegisteredMtbColts, mCurrentGestioneCol, mCurrentSegnoCol, MtbColr.Causale.DEFAULT, mDialogRowInfo) + () -> SpedizioneActivity.startActivity(getActivity(), + sitArts, + orders, + alreadyRegisteredMtbColts, + mCurrentGestioneCol, + mCurrentSegnoCol, + MtbColr.Causale.DEFAULT, + mDialogRowInfo) ).show(getActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index 6c8483fe..11f3e4fb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -474,9 +474,7 @@ public class RettificaGiacenzeViewModel { this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> { if (shouldChangePosition) { - this.savePosizione(mtbDepoPosizione, () -> { - onComplete.run(); - }); + this.savePosizione(mtbDepoPosizione, onComplete); } else { onComplete.run(); } @@ -484,7 +482,7 @@ public class RettificaGiacenzeViewModel { } private void createDoc(MtbColt mtbColt, Runnable onComplete) { - if (mtbColt.getGestioneEnum() != GestioneEnum.VENDITA && mtbColt.getSegno() != -1) { + if (!(mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno() == -1)) { onComplete.run(); return; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloComponent.java new file mode 100644 index 00000000..c79ad692 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogInfoSituazioneArticoloComponent { + + @Subcomponent.Factory + interface Factory { + DialogInfoSituazioneArticoloComponent create(); + } + + void inject(DialogInfoSituazioneArticoloView dialogInfoSituazioneArticoloView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloModule.java new file mode 100644 index 00000000..6ca2f1df --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogInfoSituazioneArticoloComponent.class) +public class DialogInfoSituazioneArticoloModule { + + @Provides + DialogInfoSituazioneArticoloViewModel providesDialogInfoSituazioneArticoloViewModel() { + return new DialogInfoSituazioneArticoloViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java new file mode 100644 index 00000000..a70d0db2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java @@ -0,0 +1,112 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo; + +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 com.ravikoradiya.liveadapter.LiveAdapter; + +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; +import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.databinding.DialogInfoSituazioneArticoloBinding; +import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; +import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel; + +public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView { + + @Inject + DialogInfoSituazioneArticoloViewModel mViewModel; + + @Inject + GiacenzaRESTConsumer giacenzaRESTConsumer; + + private DialogInfoSituazioneArticoloBinding mBindings; + private Context mContext; + + public DialogInfoSituazioneArticoloView(@NotNull SpedizioneListModel spedizioneListModel, @NotNull Runnable onComplete, @NotNull Runnable onAbort) { + super(spedizioneListModel, onComplete, onAbort); + } + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogInfoSituazioneArticoloBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + MainApplication.appComponent + .dialogInfoSituazioneArticoloComponent() + .create() + .inject(this); + + var cancelable = true; + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setNeutralButton(R.string.action_close, null) + .setCancelable(cancelable) + .create(); + + alertDialog.setCanceledOnTouchOutside(cancelable); + alertDialog.setOnShowListener(this); + return alertDialog; + } + + @Override + public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); + + this.onLoadingStarted(); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + String codMart = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getCodMart(); + String partitaMag = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getPartitaMag(); + String codJcom = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getCodJcom(); + + giacenzaRESTConsumer.getInstantItemSituation( + codMdep, + codMart, + partitaMag, + codJcom, + result -> { + this.initIncomingItemsList(result.getIncomingItems()); + this.initAvailableItemsList(result.getAvailableItems()); + + this.onLoadingEnded(); + }, this::onError); + } + + + private void initIncomingItemsList(List incomingItems) { + + new LiveAdapter(incomingItems, BR.item) + .map(InstantItemSituationIncomingItemDto.class, R.layout.dialog_info_situazione_articolo_incoming_list_item) + .into(this.mBindings.incomingList); + } + + + private void initAvailableItemsList(List availableItems) { + + new LiveAdapter(availableItems, BR.item) + .map(MvwSitArtUdcDetInventario.class, R.layout.dialog_info_situazione_articolo_available_list_item) + .into(this.mBindings.availableList); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloViewModel.java new file mode 100644 index 00000000..917e993a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo; + +public class DialogInfoSituazioneArticoloViewModel { + +} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_info_situazione_articolo.xml b/app/src/main/res/layout/dialog_info_situazione_articolo.xml new file mode 100644 index 00000000..b7e3db1a --- /dev/null +++ b/app/src/main/res/layout/dialog_info_situazione_articolo.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_info_situazione_articolo_available_list_item.xml b/app/src/main/res/layout/dialog_info_situazione_articolo_available_list_item.xml new file mode 100644 index 00000000..5ea16b6a --- /dev/null +++ b/app/src/main/res/layout/dialog_info_situazione_articolo_available_list_item.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_info_situazione_articolo_incoming_list_item.xml b/app/src/main/res/layout/dialog_info_situazione_articolo_incoming_list_item.xml new file mode 100644 index 00000000..c8dbf76c --- /dev/null +++ b/app/src/main/res/layout/dialog_info_situazione_articolo_incoming_list_item.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/custom_colors.xml b/app/src/main/res/values/custom_colors.xml index e578d4b2..359eeedf 100644 --- a/app/src/main/res/values/custom_colors.xml +++ b/app/src/main/res/values/custom_colors.xml @@ -113,6 +113,10 @@ #009688 #FFF9C4 + #FFF59D + #FFF176 + #FFEE58 + #FFEB3B #FDD835 #F9A825 From d8672e1c22cec5df88cd336a8fdcd783fbed5f23 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 14 Mar 2023 15:51:06 +0100 Subject: [PATCH 2/4] Modifiche UI popup informativo situazione articolo --- app/src/main/res/drawable/ic_tag.xml | 9 ++ .../dialog_info_situazione_articolo.xml | 12 +-- ...ituazione_articolo_available_list_item.xml | 99 ++++++++++++++++--- 3 files changed, 98 insertions(+), 22 deletions(-) create mode 100644 app/src/main/res/drawable/ic_tag.xml diff --git a/app/src/main/res/drawable/ic_tag.xml b/app/src/main/res/drawable/ic_tag.xml new file mode 100644 index 00000000..77c315cd --- /dev/null +++ b/app/src/main/res/drawable/ic_tag.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/dialog_info_situazione_articolo.xml b/app/src/main/res/layout/dialog_info_situazione_articolo.xml index b7e3db1a..e68036bd 100644 --- a/app/src/main/res/layout/dialog_info_situazione_articolo.xml +++ b/app/src/main/res/layout/dialog_info_situazione_articolo.xml @@ -18,12 +18,12 @@ android:paddingHorizontal="16dp" android:paddingVertical="16dp"> - + + + + + + + + + + android:paddingVertical="8dp"> + android:orientation="vertical"> - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 3a9b6a99ebf08c62c88b17f8d9583af163786b0d Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 15 Mar 2023 17:36:40 +0100 Subject: [PATCH 3/4] =?UTF-8?q?Aggiunto=20flag=20per=20gestire=20la=20poss?= =?UTF-8?q?ibilit=C3=A0=20di=20aggiungere=20articoli=20non=20riconosciuti?= =?UTF-8?q?=20all'interno=20di=20un=20inventario?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/settings/DBSettingsModel.java | 10 ++++ .../core/settings/SettingsManager.java | 7 ++- .../picking/PickingInventarioActivity.java | 4 +- .../picking/PickingInventarioViewModel.java | 50 +++++++++++++------ build.gradle | 2 +- 5 files changed, 54 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 1723b162..8b8a7001 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -54,6 +54,7 @@ public class DBSettingsModel { private boolean groupShippingByCommodityGroup = true; private boolean showCodFornSpedizione = true; private boolean flagCanCreateInventario = true; + private boolean flagCanAddUnknownItemsInventario = true; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -406,4 +407,13 @@ public class DBSettingsModel { this.flagCanCreateInventario = flagCanCreateInventario; return this; } + + public boolean isFlagCanAddUnknownItemsInventario() { + return flagCanAddUnknownItemsInventario; + } + + public DBSettingsModel setFlagCanAddUnknownItemsInventario(boolean flagCanAddUnknownItemsInventario) { + this.flagCanAddUnknownItemsInventario = flagCanAddUnknownItemsInventario; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index cfed6231..5a71fd62 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -353,6 +353,10 @@ public class SettingsManager { .setGestName("PICKING") .setSection("INVENTARIO") .setKeySection("FLAG_CAN_CREATE_INVENTARIO")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PICKING") + .setSection("INVENTARIO") + .setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS")); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> { @@ -385,7 +389,8 @@ public class SettingsManager { dbSettingsModelIstance.setNotifyLotStatus(getValueFromList(list, "SPEDIZIONE", "FLAG_NOTIFICA_STATO_PARTITA", Boolean.class)); dbSettingsModelIstance.setShowCodFornSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_SHOW_COD_FORN", Boolean.class, Boolean.TRUE)); dbSettingsModelIstance.setGroupShippingByCommodityGroup(getValueFromList(list, "SPEDIZIONE", "FLAG_GROUP_BY_GRP_MERC", Boolean.class, Boolean.FALSE)); - dbSettingsModelIstance.setFlagCanCreateInventario(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_CREATE_INVENTARIO", Boolean.class, Boolean.TRUE)); + dbSettingsModelIstance.setFlagCanCreateInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_CREATE_INVENTARIO", Boolean.class, Boolean.TRUE)); + dbSettingsModelIstance.setFlagCanAddUnknownItemsInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_ADD_UNKNOWN_ITEMS", Boolean.class, Boolean.TRUE)); String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); if (notePerdita != null) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java index 95a97e31..b0a3540f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java @@ -32,6 +32,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.rest.model.inventario.InventarioArtDTO; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.ActivityPickingInventarioBinding; import it.integry.integrywmsnative.databinding.ActivityPickingInventarioListItemBinding; @@ -96,7 +97,8 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn mViewModel.init( DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO)), - DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS))); + DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS)), + SettingsManager.iDB().isFlagCanAddUnknownItemsInventario()); initToolbar(); initBarcodeReader(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java index d4caad28..4d6552b2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java @@ -36,6 +36,8 @@ public class PickingInventarioViewModel extends ViewModel { private final InventarioRepository inventarioRepository; private final InventarioRowRepository inventarioRowRepository; + private boolean canAddUnknownItems; + public MutableLiveData currentInventario = new MutableLiveData<>(); public LiveData> currentInventarioRows = new MutableLiveData<>(); @@ -49,7 +51,9 @@ public class PickingInventarioViewModel extends ViewModel { this.inventarioRowRepository = inventarioRowRepository; } - public void init(InventarioRoomDTO inventarioRoomDTO, List inventarioArts) { + public void init(InventarioRoomDTO inventarioRoomDTO, List inventarioArts, boolean canAddUnknownItems) { + this.canAddUnknownItems = canAddUnknownItems; + this.sendOnLoadingStarted(); this.currentInventario.postValue(inventarioRoomDTO); @@ -89,19 +93,27 @@ public class PickingInventarioViewModel extends ViewModel { var barcodeList = new ArrayList(); barcodeList.add(itemToUpdate.getScanCodBarre()); - var matchedArt = availableInventarioArts.stream() + var matchedArtOpt = availableInventarioArts.stream() .filter(x -> itemToUpdate.getCodMart() != null && x.getCodMart().contains(itemToUpdate.getCodMart())) - .findFirst() - .orElse(new InventarioArtDTO() - .setBarcode(barcodeList) - .setFlagQtaCnfFissa(true) - .setPlu(false) - .setUntMis(itemToUpdate.getUntMis()) - .setQtaCnf(itemToUpdate.getQtaConf())); + .findFirst(); - var articolo = matchedArt.toMtbAart(); - articolo.setFlagTracciabilita("N"); - dispatchRowEdit(articolo, itemToUpdate); + MtbAart articolo = null; + + if (canAddUnknownItems) { + var matchedArt = matchedArtOpt.orElse(new InventarioArtDTO() + .setBarcode(barcodeList) + .setFlagQtaCnfFissa(true) + .setPlu(false) + .setUntMis(itemToUpdate.getUntMis()) + .setQtaCnf(itemToUpdate.getQtaConf())); + + articolo = matchedArt.toMtbAart() + .setFlagTracciabilita("N"); + } + if (articolo != null) { + dispatchRowEdit(articolo, itemToUpdate); + } else + this.sendError(new NoResultFromBarcodeException(itemToUpdate.getScanCodBarre())); } public void deleteRow(InventarioRowRoomDTO itemToDelete) { @@ -111,7 +123,7 @@ public class PickingInventarioViewModel extends ViewModel { public void exportAll(Runnable onComplete) { - if(this.currentInventarioRows.getValue().isEmpty()) { + if (this.currentInventarioRows.getValue().isEmpty()) { this.sendError(new Exception("Impossibile esportare un inventario senza righe")); return; } @@ -139,16 +151,22 @@ public class PickingInventarioViewModel extends ViewModel { var barcodeList = new ArrayList(); barcodeList.add(barcodeProd); - var matchedArt = availableInventarioArts.stream() + var matchedArtOpt = availableInventarioArts.stream() .filter(x -> x.getBarcode().contains(barcodeProd)) - .findFirst() - .orElse(new InventarioArtDTO() + .findFirst(); + + InventarioArtDTO matchedArt = null; + + if (canAddUnknownItems) { + matchedArt = matchedArtOpt.orElse(new InventarioArtDTO() .setBarcode(barcodeList) .setFlagQtaCnfFissa(true) .setPlu(false) .setUntMis("PZ") .setQtaCnf(BigDecimal.ONE)); + } + if (matchedArt != null) { this.dispatchRowInsert(barcodeProd, matchedArt, ean128Model); onComplete.run(); diff --git a/build.gradle b/build.gradle index a15287fb..5424d897 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.8.0' - agp_version = '8.1.0-alpha08' + agp_version = '8.1.0-alpha09' } repositories { From cd2c04ad0c02852edcf90bae4e4ecdf615ae0562 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 16 Mar 2023 19:25:38 +0100 Subject: [PATCH 4/4] Completata implementazione DialogInfoSituazioneArticolo. Fix per articoli ean8 in Documenti interni. --- .../integrywmsnative/core/model/MtbAart.java | 5 + .../core/model/MtbUntMis.java | 1 + .../core/model/MvwSitArtUdcDetInventario.java | 22 +- .../inventario/InventarioService.java | 5 +- .../core/utility/UtilityDate.java | 12 + .../core/utility/UtilityNumber.java | 2 +- .../edit_form/DocInterniEditFormActivity.java | 6 +- .../DocInterniEditFormViewModel.java | 43 ++- .../DialogInfoSituazioneArticoloView.java | 46 ++- ...foSituazioneArticoloAvailableListItem.java | 333 ++++++++++++++++++ .../main/res/drawable/badge_round_corner.xml | 20 +- .../badge_round_corner_without_padding.xml | 8 + .../res/drawable/ic_calendar_schedule.xml | 9 + .../dialog_info_situazione_articolo.xml | 6 +- ...ituazione_articolo_available_list_item.xml | 156 +++++--- 15 files changed, 599 insertions(+), 75 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/ui/DialogInfoSituazioneArticoloAvailableListItem.java create mode 100644 app/src/main/res/drawable/badge_round_corner_without_padding.xml create mode 100644 app/src/main/res/drawable/ic_calendar_schedule.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java index 78148940..d9989c47 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java @@ -860,4 +860,9 @@ public class MtbAart extends EntityBase { this.numCnfImpegnata = numCnfImpegnata; return this; } + + + public MtbUntMis getFirstUntMis() { + return getMtbUntMis() != null && !getMtbUntMis().isEmpty() ? getMtbUntMis().get(0) : null; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java index 89f8c0e4..8507338e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbUntMis.java @@ -38,6 +38,7 @@ public class MtbUntMis extends EntityBase { } public BigDecimal getCifreDec() { + if(isFlagDig()) return BigDecimal.ZERO; return cifreDec; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java index 1a49d7c4..314671ef 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java @@ -1,7 +1,9 @@ package it.integry.integrywmsnative.core.model; import java.math.BigDecimal; -import java.util.Date; +import java.time.LocalDate; + +import it.integry.integrywmsnative.core.utility.UtilityDate; /** * Created by ValerioC on 06/03/2018. @@ -10,7 +12,7 @@ import java.util.Date; public class MvwSitArtUdcDetInventario { private String gestione; - private Date dataCollo; + private LocalDate dataCollo; private String serCollo; private Integer numCollo; private Integer segno; @@ -25,6 +27,7 @@ public class MvwSitArtUdcDetInventario { private String diacod; private String descrizioneEstesa; private String partitaMag; + private LocalDate dataScad; private String codJcom; private String commessa; private String untMis; @@ -46,11 +49,11 @@ public class MvwSitArtUdcDetInventario { return this; } - public Date getDataCollo() { + public LocalDate getDataCollo() { return dataCollo; } - public MvwSitArtUdcDetInventario setDataCollo(Date dataCollo) { + public MvwSitArtUdcDetInventario setDataCollo(LocalDate dataCollo) { this.dataCollo = dataCollo; return this; } @@ -181,6 +184,15 @@ public class MvwSitArtUdcDetInventario { return this; } + public LocalDate getDataScad() { + return dataScad; + } + + public MvwSitArtUdcDetInventario setDataScad(LocalDate dataScad) { + this.dataScad = dataScad; + return this; + } + public String getCodJcom() { return codJcom; } @@ -276,7 +288,7 @@ public class MvwSitArtUdcDetInventario { return new MtbColr() .setCodJcom(getCodJcom()) .setCodMart(getCodMart()) - .setDataCollo(getDataCollo()) + .setDataCollo(UtilityDate.toDate(getDataCollo())) .setNumCollo(getNumCollo()) .setSerCollo(getSerCollo()) .setGestione(getGestione()) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/services/inventario/InventarioService.java b/app/src/main/java/it/integry/integrywmsnative/core/services/inventario/InventarioService.java index 587147a6..55402a93 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/services/inventario/InventarioService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/services/inventario/InventarioService.java @@ -16,6 +16,7 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; +import it.integry.integrywmsnative.core.utility.UtilityDate; @Singleton public class InventarioService { @@ -47,7 +48,7 @@ public class InventarioService { MtbColt mtbColt = new MtbColt(); mtbColt.setGestione(inventario.getGestione()); - mtbColt.setDataCollo(inventario.getDataCollo()); + mtbColt.setDataCollo(UtilityDate.toDate(inventario.getDataCollo())); mtbColt.setSerCollo(inventario.getSerCollo()); mtbColt.setNumCollo(inventario.getNumCollo()); mtbColt.setSegno(inventario.getSegno()); @@ -70,7 +71,7 @@ public class InventarioService { MtbColr mtbColr = new MtbColr(); mtbColr.setGestione(inventario.getGestione()); - mtbColr.setDataCollo(inventario.getDataCollo()); + mtbColr.setDataCollo(UtilityDate.toDate(inventario.getDataCollo())); mtbColr.setSerCollo(inventario.getSerCollo()); mtbColr.setNumCollo(inventario.getNumCollo()); mtbColr.setCodMart(inventario.getCodMart()); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java index 634378ed..9aa27662 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityDate.java @@ -157,6 +157,18 @@ public class UtilityDate { return inputDate != null && inputDate.toLocalDate().isEqual(getNow()); } + public static boolean isBeforeToday(LocalDate inputDate) { + return inputDate != null && inputDate.isBefore(getNow()); + } + + public static boolean isAfterToday(LocalDate inputDate) { + return inputDate != null && inputDate.isAfter(getNow()); + } + + public static boolean isToday(LocalDate inputDate) { + return inputDate != null && inputDate.isEqual(getNow()); + } + public static LocalDate toLocalDate(Date dateToConvert) { return dateToConvert.toInstant() .atZone(currentZone) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java index f3ec20ca..4da65217 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityNumber.java @@ -35,7 +35,7 @@ public class UtilityNumber { decimalFormat.setMaximumFractionDigits(decimal); decimalFormat.setDecimalFormatSymbols(otherSymbols); decimalFormat.setGroupingUsed(false); - decimalFormat.setMinimumFractionDigits(2); + decimalFormat.setMinimumFractionDigits(Math.min(2, decimal)); return decimalFormat.format(floatValue); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index 4666d634..4f75d5a0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -180,7 +180,11 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter public void manualSearch() { BarcodeManager.disable(); - DialogSimpleInputHelper.makeInputDialog(this, "Ricerca articolo", null, "Cod articolo / Barcode", this.viewModel::loadArticolo, BarcodeManager::enable).show(); + DialogSimpleInputHelper.makeInputDialog(this, + "Ricerca articolo", + null, + "Cod articolo / Barcode", + barcodeProd -> this.viewModel.loadArticolo(barcodeProd, null), BarcodeManager::enable).show(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index df5e9620..d82f173a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -22,8 +22,11 @@ import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSour import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.rest.model.Ean128Model; +import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO; 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.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; @@ -90,7 +93,7 @@ public class DocInterniEditFormViewModel { } public void dispatchRowEdit(SqlMtbColr row, boolean flagTracciabilita, boolean isUntMisDig) { - this.listener.onEditRowRequest(row, flagTracciabilita && this.isCheckPartitaMag,isUntMisDig); + this.listener.onEditRowRequest(row, flagTracciabilita && this.isCheckPartitaMag, isUntMisDig); } private Integer getNextIdRiga() { @@ -115,18 +118,18 @@ public class DocInterniEditFormViewModel { public void deleteDocument() { this.sendOnLoadingStarted(); - SqlMtbColt document = this.getDocument(); - mtbColtRepository.delete(document, () -> { - this.sendOnLoadingEnded(); - this.listener.onDocDeleted(); - }, this::sendError); + SqlMtbColt document = this.getDocument(); + mtbColtRepository.delete(document, () -> { + this.sendOnLoadingEnded(); + this.listener.onDocDeleted(); + }, this::sendError); } public void holdDocument() { this.listener.onDocumentHoldRequest(); } - public void loadArticolo(String barcodeProd) { + public void loadArticolo(String barcodeProd, Ean128Model ean128Model) { DocumentoArtDTO matchedArt; String usedBarcode = null; @@ -135,7 +138,7 @@ public class DocInterniEditFormViewModel { matchedArt = Stream.of(productsList) .filter(x -> x.getCodMart().equalsIgnoreCase(barcodeProd) || leftBarcode.equalsIgnoreCase(x.getCodMart()) || - x.getBarcode().contains(barcodeProd)) + x.getBarcode().contains(leftBarcode)) .findFirst() .orElse(null); @@ -143,7 +146,6 @@ public class DocInterniEditFormViewModel { usedBarcode = matchedArt.getBarcode().contains(barcodeProd) ? barcodeProd : null; - if (matchedArt == null) { this.sendError(new NoResultFromBarcodeException(barcodeProd)); return; @@ -280,8 +282,27 @@ public class DocInterniEditFormViewModel { } public void processBarcode(BarcodeScanDTO dto) { - String code = dto.getStringValue(); - this.loadArticolo(code); + this.processBarcodeDTO(dto); + } + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO) { + if (UtilityBarcode.isEanPeso(barcodeScanDTO)) { + //Cerco tramite etichetta ean peso + this.executeEtichettaEanPeso(barcodeScanDTO); + + } else { + this.loadArticolo(barcodeScanDTO.getStringValue(), null); + } + } + + + private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO) { + try { + Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue()); + this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128()); + } catch (Exception ex) { + this.sendError(ex); + } } public void saveRow(SqlMtbColr row, DialogInputQuantityV2ResultDTO resultDTO) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java index a70d0db2..349259e7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/DialogInfoSituazioneArticoloView.java @@ -5,15 +5,18 @@ import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.annimon.stream.Stream; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.ravikoradiya.liveadapter.LiveAdapter; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; import java.util.List; import javax.inject.Inject; @@ -25,8 +28,10 @@ import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.DialogInfoSituazioneArticoloBinding; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; +import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem; import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel; public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView { @@ -96,6 +101,10 @@ public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView { private void initIncomingItemsList(List incomingItems) { + mBindings.incomingLabel.setVisibility(incomingItems == null || incomingItems.isEmpty() ? View.GONE : View.VISIBLE); + + if(incomingItems == null || incomingItems.isEmpty()) + return; new LiveAdapter(incomingItems, BR.item) .map(InstantItemSituationIncomingItemDto.class, R.layout.dialog_info_situazione_articolo_incoming_list_item) @@ -104,9 +113,42 @@ public class DialogInfoSituazioneArticoloView extends BaseDialogRowInfoView { private void initAvailableItemsList(List availableItems) { + mBindings.availableLabel.setVisibility(availableItems == null || availableItems.isEmpty() ? View.GONE : View.VISIBLE); - new LiveAdapter(availableItems, BR.item) - .map(MvwSitArtUdcDetInventario.class, R.layout.dialog_info_situazione_articolo_available_list_item) + if(availableItems == null) + availableItems = new ArrayList<>(); + + availableItems = Stream.of(availableItems) + .filter(x -> UtilityDate.isAfterToday(x.getDataScad())) + .toList(); + + if(availableItems.isEmpty()) + return; + + var preferedCodJcom = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getCodJcom(); + var preferedPartitaMag = getSpedizioneListModel().getOriginalModel().getSitArtOrdDTO().getPartitaMag(); + + var itemList = Stream.of(availableItems) + .map(mvwSitArtUdcDetInventario -> DialogInfoSituazioneArticoloAvailableListItem.fromMvwSitArtUdcDetInventario(mvwSitArtUdcDetInventario) + .setCommessaMatch(mvwSitArtUdcDetInventario.getCodJcom() != null && mvwSitArtUdcDetInventario.getCodJcom().equalsIgnoreCase(preferedCodJcom)) + .setPartitaMagMatch(mvwSitArtUdcDetInventario.getPartitaMag() != null && mvwSitArtUdcDetInventario.getPartitaMag().equalsIgnoreCase(preferedPartitaMag))) + .toList(); + + + var itemListCommessaMatch = Stream.of(itemList) + .filter(DialogInfoSituazioneArticoloAvailableListItem::isCommessaMatch) + .toList(); + + var itemListCommessaNotMatchMatch = Stream.of(itemList) + .filter(dialogInfoSituazioneArticoloAvailableListItem -> !dialogInfoSituazioneArticoloAvailableListItem.isCommessaMatch()) + .sortBy(x -> x.getDataScad()) + .toList(); + + + itemListCommessaMatch.addAll(itemListCommessaNotMatchMatch); + + new LiveAdapter(itemListCommessaMatch, BR.item) + .map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_situazione_articolo_available_list_item) .into(this.mBindings.availableList); } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/ui/DialogInfoSituazioneArticoloAvailableListItem.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/ui/DialogInfoSituazioneArticoloAvailableListItem.java new file mode 100644 index 00000000..a425c2d5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/info_situazione_articolo/ui/DialogInfoSituazioneArticoloAvailableListItem.java @@ -0,0 +1,333 @@ +package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui; + +import java.math.BigDecimal; +import java.time.LocalDate; + +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; + +public class DialogInfoSituazioneArticoloAvailableListItem { + private String gestione; + private LocalDate dataCollo; + private String serCollo; + private Integer numCollo; + private Integer segno; + private String codMdep; + private String posizione; + private Integer priorita; + private String codGruppo; + private String gruppo; + private String codSgruppo; + private String sottogruppo; + private String codMart; + private String diacod; + private String descrizioneEstesa; + private String partitaMag; + private String codJcom; + private String commessa; + private String untMis; + private BigDecimal qtaCol; + private BigDecimal numCnf; + private BigDecimal qtaCnf; + private BigDecimal pesoNettoKg; + private BigDecimal pesoLordoKg; + private String codJfas; + private LocalDate dataScad; + private MtbAart mtbAart; + + private boolean partitaMagMatch; + private boolean commessaMatch; + + public String getGestione() { + return gestione; + } + + public DialogInfoSituazioneArticoloAvailableListItem setGestione(String gestione) { + this.gestione = gestione; + return this; + } + + public LocalDate getDataCollo() { + return dataCollo; + } + + public DialogInfoSituazioneArticoloAvailableListItem setDataCollo(LocalDate dataCollo) { + this.dataCollo = dataCollo; + return this; + } + + public String getSerCollo() { + return serCollo; + } + + public DialogInfoSituazioneArticoloAvailableListItem setSerCollo(String serCollo) { + this.serCollo = serCollo; + return this; + } + + public Integer getNumCollo() { + return numCollo; + } + + public DialogInfoSituazioneArticoloAvailableListItem setNumCollo(Integer numCollo) { + this.numCollo = numCollo; + return this; + } + + public Integer getSegno() { + return segno; + } + + public DialogInfoSituazioneArticoloAvailableListItem setSegno(Integer segno) { + this.segno = segno; + return this; + } + + public String getCodMdep() { + return codMdep; + } + + public DialogInfoSituazioneArticoloAvailableListItem setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } + + public String getPosizione() { + return posizione; + } + + public DialogInfoSituazioneArticoloAvailableListItem setPosizione(String posizione) { + this.posizione = posizione; + return this; + } + + public Integer getPriorita() { + return priorita; + } + + public DialogInfoSituazioneArticoloAvailableListItem setPriorita(Integer priorita) { + this.priorita = priorita; + return this; + } + + public String getCodGruppo() { + return codGruppo; + } + + public DialogInfoSituazioneArticoloAvailableListItem setCodGruppo(String codGruppo) { + this.codGruppo = codGruppo; + return this; + } + + public String getGruppo() { + return gruppo; + } + + public DialogInfoSituazioneArticoloAvailableListItem setGruppo(String gruppo) { + this.gruppo = gruppo; + return this; + } + + public String getCodSgruppo() { + return codSgruppo; + } + + public DialogInfoSituazioneArticoloAvailableListItem setCodSgruppo(String codSgruppo) { + this.codSgruppo = codSgruppo; + return this; + } + + public String getSottogruppo() { + return sottogruppo; + } + + public DialogInfoSituazioneArticoloAvailableListItem setSottogruppo(String sottogruppo) { + this.sottogruppo = sottogruppo; + return this; + } + + public String getCodMart() { + return codMart; + } + + public DialogInfoSituazioneArticoloAvailableListItem setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getDiacod() { + return diacod; + } + + public DialogInfoSituazioneArticoloAvailableListItem setDiacod(String diacod) { + this.diacod = diacod; + return this; + } + + public String getDescrizioneEstesa() { + return descrizioneEstesa; + } + + public DialogInfoSituazioneArticoloAvailableListItem setDescrizioneEstesa(String descrizioneEstesa) { + this.descrizioneEstesa = descrizioneEstesa; + return this; + } + + public String getPartitaMag() { + return partitaMag; + } + + public DialogInfoSituazioneArticoloAvailableListItem setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + public String getCodJcom() { + return codJcom; + } + + public DialogInfoSituazioneArticoloAvailableListItem setCodJcom(String codJcom) { + this.codJcom = codJcom; + return this; + } + + public String getCommessa() { + return commessa; + } + + public DialogInfoSituazioneArticoloAvailableListItem setCommessa(String commessa) { + this.commessa = commessa; + return this; + } + + public String getUntMis() { + return untMis; + } + + public DialogInfoSituazioneArticoloAvailableListItem setUntMis(String untMis) { + this.untMis = untMis; + return this; + } + + public BigDecimal getQtaCol() { + return qtaCol; + } + + public DialogInfoSituazioneArticoloAvailableListItem setQtaCol(BigDecimal qtaCol) { + this.qtaCol = qtaCol; + return this; + } + + public BigDecimal getNumCnf() { + return numCnf; + } + + public DialogInfoSituazioneArticoloAvailableListItem setNumCnf(BigDecimal numCnf) { + this.numCnf = numCnf; + return this; + } + + public BigDecimal getQtaCnf() { + return qtaCnf; + } + + public DialogInfoSituazioneArticoloAvailableListItem setQtaCnf(BigDecimal qtaCnf) { + this.qtaCnf = qtaCnf; + return this; + } + + public BigDecimal getPesoNettoKg() { + return pesoNettoKg; + } + + public DialogInfoSituazioneArticoloAvailableListItem setPesoNettoKg(BigDecimal pesoNettoKg) { + this.pesoNettoKg = pesoNettoKg; + return this; + } + + public BigDecimal getPesoLordoKg() { + return pesoLordoKg; + } + + public DialogInfoSituazioneArticoloAvailableListItem setPesoLordoKg(BigDecimal pesoLordoKg) { + this.pesoLordoKg = pesoLordoKg; + return this; + } + + public String getCodJfas() { + return codJfas; + } + + public DialogInfoSituazioneArticoloAvailableListItem setCodJfas(String codJfas) { + this.codJfas = codJfas; + return this; + } + + public LocalDate getDataScad() { + return dataScad; + } + + public DialogInfoSituazioneArticoloAvailableListItem setDataScad(LocalDate dataScad) { + this.dataScad = dataScad; + return this; + } + + public MtbAart getMtbAart() { + return mtbAart; + } + + public DialogInfoSituazioneArticoloAvailableListItem setMtbAart(MtbAart mtbAart) { + this.mtbAart = mtbAart; + return this; + } + + + public boolean isPartitaMagMatch() { + return partitaMagMatch; + } + + public DialogInfoSituazioneArticoloAvailableListItem setPartitaMagMatch(boolean partitaMagMatch) { + this.partitaMagMatch = partitaMagMatch; + return this; + } + + public boolean isCommessaMatch() { + return commessaMatch; + } + + public DialogInfoSituazioneArticoloAvailableListItem setCommessaMatch(boolean commessaMatch) { + this.commessaMatch = commessaMatch; + return this; + } + + public static DialogInfoSituazioneArticoloAvailableListItem fromMvwSitArtUdcDetInventario(MvwSitArtUdcDetInventario mvwSitArtUdcDetInventario) { + return new DialogInfoSituazioneArticoloAvailableListItem() + .setCodGruppo(mvwSitArtUdcDetInventario.getCodGruppo()) + .setCodJcom(mvwSitArtUdcDetInventario.getCodJcom()) + .setCodJfas(mvwSitArtUdcDetInventario.getCodJfas()) + .setCodMart(mvwSitArtUdcDetInventario.getCodMart()) + .setCodMdep(mvwSitArtUdcDetInventario.getCodMdep()) + .setCodSgruppo(mvwSitArtUdcDetInventario.getCodSgruppo()) + .setCommessa(mvwSitArtUdcDetInventario.getCommessa()) + .setDataCollo(mvwSitArtUdcDetInventario.getDataCollo()) + .setDescrizioneEstesa(mvwSitArtUdcDetInventario.getDescrizioneEstesa()) + .setDiacod(mvwSitArtUdcDetInventario.getDiacod()) + .setGestione(mvwSitArtUdcDetInventario.getGestione()) + .setGruppo(mvwSitArtUdcDetInventario.getGruppo()) + .setMtbAart(mvwSitArtUdcDetInventario.getMtbAart()) + .setNumCnf(mvwSitArtUdcDetInventario.getNumCnf()) + .setNumCollo(mvwSitArtUdcDetInventario.getNumCollo()) + .setPartitaMag(mvwSitArtUdcDetInventario.getPartitaMag()) + .setDataScad(mvwSitArtUdcDetInventario.getDataScad()) + .setPesoLordoKg(mvwSitArtUdcDetInventario.getPesoLordoKg()) + .setPesoNettoKg(mvwSitArtUdcDetInventario.getPesoNettoKg()) + .setPosizione(mvwSitArtUdcDetInventario.getPosizione()) + .setPriorita(mvwSitArtUdcDetInventario.getPriorita()) + .setQtaCnf(mvwSitArtUdcDetInventario.getQtaCnf()) + .setQtaCol(mvwSitArtUdcDetInventario.getQtaCol()) + .setSegno(mvwSitArtUdcDetInventario.getSegno()) + .setSerCollo(mvwSitArtUdcDetInventario.getSerCollo()) + .setSottogruppo(mvwSitArtUdcDetInventario.getSottogruppo()) + .setUntMis(mvwSitArtUdcDetInventario.getUntMis()); + } +} diff --git a/app/src/main/res/drawable/badge_round_corner.xml b/app/src/main/res/drawable/badge_round_corner.xml index 0e8c0074..e7af763b 100644 --- a/app/src/main/res/drawable/badge_round_corner.xml +++ b/app/src/main/res/drawable/badge_round_corner.xml @@ -1,12 +1,16 @@ - + + + - + - + - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/badge_round_corner_without_padding.xml b/app/src/main/res/drawable/badge_round_corner_without_padding.xml new file mode 100644 index 00000000..93b0dc08 --- /dev/null +++ b/app/src/main/res/drawable/badge_round_corner_without_padding.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_calendar_schedule.xml b/app/src/main/res/drawable/ic_calendar_schedule.xml new file mode 100644 index 00000000..eda2c2dd --- /dev/null +++ b/app/src/main/res/drawable/ic_calendar_schedule.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/dialog_info_situazione_articolo.xml b/app/src/main/res/layout/dialog_info_situazione_articolo.xml index e68036bd..d605d601 100644 --- a/app/src/main/res/layout/dialog_info_situazione_articolo.xml +++ b/app/src/main/res/layout/dialog_info_situazione_articolo.xml @@ -45,9 +45,10 @@ android:orientation="vertical"> - - - + + + type="it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem" /> @@ -45,15 +44,68 @@ tools:text="UL 109467 del 17 mar 2023" /> - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + android:layout_margin="4dp" + android:background="@drawable/badge_round_corner" + android:backgroundTint="@color/light_blue_500" + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + + - - - + android:layout_margin="4dp" + android:background="@drawable/badge_round_corner" + android:backgroundTint="@{ContextCompat.getColor(context, item.commessaMatch ? R.color.red_300 : R.color.white)}" + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + @@ -142,7 +212,7 @@ android:layout_height="wrap_content" android:backgroundTint="@color/colorPrimary" android:gravity="center" - android:text="@{UtilityNumber.decimalToString(item.qtaCol, 2)}" + android:text="@{UtilityNumber.decimalToString(item.qtaCol, item.mtbAart.firstUntMis.cifreDec.intValue())}" android:textAllCaps="true" android:textColor="@android:color/white" android:textStyle="bold"