Creato popup info articolo che mostra le qta in arrivo e le qta in giacenza

This commit is contained in:
Giuseppe Scorrano 2023-03-13 15:57:56 +01:00
parent 72773deaf1
commit 1df84ba046
16 changed files with 666 additions and 18 deletions

View File

@ -80,6 +80,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; 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.DialogPrintOrderSSCCListComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListModule; 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.DialogRowInfoProdFabbisognoLineeProdComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent; 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, BottomSheetMtbColrEditModalModule.class,
DialogChooseArtsFromMtbAartListModule.class, DialogChooseArtsFromMtbAartListModule.class,
MainSettingsModule.class, MainSettingsModule.class,
DialogInfoSituazioneArticoloModule.class
}) })
public interface MainApplicationComponent { public interface MainApplicationComponent {
@ -290,6 +292,8 @@ public interface MainApplicationComponent {
MainSettingsComponent.Factory mainSettingsFragmentComponent(); MainSettingsComponent.Factory mainSettingsFragmentComponent();
DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent();
void inject(MainApplication mainApplication); void inject(MainApplication mainApplication);
void inject(AppContext mainApplication); void inject(AppContext mainApplication);

View File

@ -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.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment; 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.ultime_consegne_cliente.UltimeConsegneClienteFragment;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment; import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment; import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
@ -58,7 +59,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.vendita_title_fragment) .setTitleText(R.string.vendita_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_spedizione) .setTitleIcon(R.drawable.ic_dashboard_spedizione)
.setDrawerIcon(R.drawable.ic_upload) .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() .addItem(new MenuItem()
.setID(R.id.nav_rettifica_spedizione) .setID(R.id.nav_rettifica_spedizione)
@ -107,9 +108,9 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(R.id.nav_free_lav_picking) .setID(R.id.nav_free_lav_picking)
.setCodMenu("MG051") .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) .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))) .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE)))
.addItem(new MenuItem() .addItem(new MenuItem()
@ -117,7 +118,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setCodMenu("MG052") .setCodMenu("MG052")
.setTitleText(R.string.prod_fabbisogno_linee_prod_title) .setTitleText(R.string.prod_fabbisogno_linee_prod_title)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce) .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)) .setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance))
.addItem(new MenuItem() .addItem(new MenuItem()
@ -137,19 +138,19 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance)) .setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance))
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce) .setID(R.id.nav_prod_rientro_merce)
.setCodMenu("MG059") .setCodMenu("MG059")
.setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title) .setTitleText(R.string.rientro_merce_fragment_title)
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione) .setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external) .setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdRientroMerceFragment::newInstance)) .setFragmentFactory(ProdRientroMerceFragment::newInstance))
.addItem(new MenuItem() .addItem(new MenuItem()
.setID(it.integry.integrywmsnative.R.id.nav_prod_linee) .setID(R.id.nav_prod_linee)
.setCodMenu("MG061") .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) .setTitleIcon(R.drawable.ic_production_line)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_production_line) .setDrawerIcon(R.drawable.ic_production_line)
.setFragmentFactory(ProdLineeProduzioneFragment::newInstance)) .setFragmentFactory(ProdLineeProduzioneFragment::newInstance))
).addGroup( ).addGroup(
new MenuGroup() new MenuGroup()

View File

@ -13,6 +13,8 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; 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.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@ -67,5 +69,66 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void getGiacenzeByArticolo(String codMart, String partitaMag, RunnableArgs<List<MvwSitArtUdcDetInventario>> onComplete, RunnableArgs<Exception> 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<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Response<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> response) {
analyzeAnswer(response, "getGiacenzeByArticolo", inventarioList -> {
List<String> codMarts = Stream.of(inventarioList)
.map(x -> x.getCodMart().trim())
.distinct()
.toList();
mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
for (var row : inventarioList) {
MtbAart foundMtbAart = null;
Optional<MtbAart> 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<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void getInstantItemSituation(String codMdep, String codMart, String partitaMag, String codJcom, RunnableArgs<InstantItemSituationResponseDto> onComplete, RunnableArgs<Exception> onFailed) {
GiacenzaRESTConsumerService giacenzaRESTConsumerService = RESTBuilder.getService(GiacenzaRESTConsumerService.class);
giacenzaRESTConsumerService.retrieveInstantItemSituation(codMdep, codMart, partitaMag, codJcom)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Response<ServiceRESTResponse<InstantItemSituationResponseDto>> response) {
analyzeAnswer(response, "getInstantItemSituation", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
} }

View File

@ -4,14 +4,31 @@ import java.util.List;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.Query; import retrofit2.http.Query;
public interface GiacenzaRESTConsumerService { public interface GiacenzaRESTConsumerService {
@GET("wms/giacenza/availableItems") @GET("wms/giacenza/availableItemsByPosizione")
Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItems( Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItems(
@Query("posizione") String posizione); @Query("posizione") String posizione);
@GET("wms/giacenza/availableItemsByArticolo")
Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItemsByArt(
@Query("codMart") String codMart);
@GET("wms/giacenza/availableItemsByArticolo")
Call<ServiceRESTResponse<List<MvwSitArtUdcDetInventario>>> retrieveAvailableItemsByArt(
@Query("codMart") String codMart,
@Query("partitaMag") String partitaMag);
@GET("wms/giacenza/instantItemSituation")
Call<ServiceRESTResponse<InstantItemSituationResponseDto>> retrieveInstantItemSituation(
@Query("codMdep") String codMdep,
@Query("codMart") String codMart,
@Query("partitaMag") String partitaMag,
@Query("codJcom") String codJcom);
} }

View File

@ -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;
}
}

View File

@ -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<InstantItemSituationIncomingItemDto> incomingItems;
private List<MvwSitArtUdcDetInventario> availableItems;
public List<InstantItemSituationIncomingItemDto> getIncomingItems() {
return incomingItems;
}
public List<MvwSitArtUdcDetInventario> getAvailableItems() {
return availableItems;
}
}

View File

@ -865,7 +865,14 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
+ "<br />" + + "<br />" +
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)), "<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
null, 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"); ).show(getActivity().getSupportFragmentManager(), "tag");
} }

View File

@ -474,9 +474,7 @@ public class RettificaGiacenzeViewModel {
this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> { this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> {
if (shouldChangePosition) { if (shouldChangePosition) {
this.savePosizione(mtbDepoPosizione, () -> { this.savePosizione(mtbDepoPosizione, onComplete);
onComplete.run();
});
} else { } else {
onComplete.run(); onComplete.run();
} }
@ -484,7 +482,7 @@ public class RettificaGiacenzeViewModel {
} }
private void createDoc(MtbColt mtbColt, Runnable onComplete) { 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(); onComplete.run();
return; return;
} }

View File

@ -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);
}

View File

@ -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();
}
}

View File

@ -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<InstantItemSituationIncomingItemDto> 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<MvwSitArtUdcDetInventario> availableItems) {
new LiveAdapter(availableItems, BR.item)
.map(MvwSitArtUdcDetInventario.class, R.layout.dialog_info_situazione_articolo_available_list_item)
.into(this.mBindings.availableList);
}
}

View File

@ -0,0 +1,5 @@
package it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo;
public class DialogInfoSituazioneArticoloViewModel {
}

View File

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="16dp">
<androidx.appcompat.widget.AppCompatImageView
style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked"
android:layout_width="36dp"
android:layout_height="36dp"
android:src="@drawable/ic_error_white_24dp"
app:tint="?colorPrimary" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:gravity="center_horizontal"
android:text="Situazione articolo" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.Material3.TitleMedium"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/yellow_200"
android:textAllCaps="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
android:paddingHorizontal="12dp"
android:text="In arrivo" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/incoming_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:listitem="@layout/dialog_info_situazione_articolo_incoming_list_item"
tools:itemCount="1"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.Material3.TitleMedium"
android:textAllCaps="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/green_200"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:paddingHorizontal="12dp"
android:text="In giacenza" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/available_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
tools:listitem="@layout/dialog_info_situazione_articolo_available_list_item"
tools:itemCount="3"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="android.view.View" />
<variable
name="item"
type="it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingVertical="8dp"
android:gravity="center_vertical">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_toStartOf="@id/qta_box">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{&quot;UL &quot; + item.numCollo.toString() + &quot; del &quot; + UtilityDate.formatDate(item.dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
android:textStyle="bold"
tools:text="UL 109467 del 17 mar 2023" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text="@{UtilityString.isNull(item.descrizioneEstesa, &quot;Nessuna descrizione&quot;)}"
tools:text="Descrizione lunga articolo" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/qta_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:padding="6dp"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/colorPrimary"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="@{item.qtaCol != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.qtaCol, 2)}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/TextAppearance.AppCompat.Small"
tools:text="280.45" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@{item.untMis}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/TextAppearance.AppCompat.Small"
tools:text="CONF" />
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
</layout>

View File

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="android.view.View" />
<variable
name="item"
type="it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingVertical="8dp"
android:gravity="center_vertical">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_toStartOf="@id/qta_box">
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityDate.formatDate(item.dataCons, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
android:textStyle="bold"
tools:text="Data cons" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text="@{UtilityString.isNull(item.descrizione, &quot;Nessuna descrizione&quot;)}"
tools:text="Descrizione lunga articolo" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/qta_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:padding="6dp"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/colorPrimary"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="@{item.qtaOrd != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.qtaOrd, 2)}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/TextAppearance.AppCompat.Small"
tools:text="280.45" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@{item.untMis}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/TextAppearance.AppCompat.Small"
tools:text="CONF" />
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
</layout>

View File

@ -113,6 +113,10 @@
<color name="teal_500">#009688</color> <color name="teal_500">#009688</color>
<color name="yellow_100">#FFF9C4</color> <color name="yellow_100">#FFF9C4</color>
<color name="yellow_200">#FFF59D</color>
<color name="yellow_300">#FFF176</color>
<color name="yellow_400">#FFEE58</color>
<color name="yellow_500">#FFEB3B</color>
<color name="yellow_600">#FDD835</color> <color name="yellow_600">#FDD835</color>
<color name="yellow_800">#F9A825</color> <color name="yellow_800">#F9A825</color>