From 1df84ba046b238ee10472dabc884c466e1bb2096 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 13 Mar 2023 15:57:56 +0100 Subject: [PATCH] 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