Nel popup di selezione dei lotti (in fase di picking) adesso viene anche messa a video la commessa in modo da poterla selezionare (prima non era mai stato possibile).

This commit is contained in:
2025-09-02 18:11:13 +02:00
parent 23332e1424
commit aa6877c235
15 changed files with 207 additions and 126 deletions

View File

@@ -4,6 +4,7 @@ import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;
public class MtbPartitaMag extends EntityBase {
@SerializedName("codMart")
@@ -300,4 +301,17 @@ public class MtbPartitaMag extends EntityBase {
this.qtaAttesa = qtaAttesa;
return this;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
MtbPartitaMag that = (MtbPartitaMag) o;
return Objects.equals(getCodMart(), that.getCodMart()) && Objects.equals(getPartitaMag(), that.getPartitaMag()) && Objects.equals(getDescrizione(), that.getDescrizione()) && Objects.equals(getDataIns(), that.getDataIns()) && Objects.equals(getDataScad(), that.getDataScad()) && Objects.equals(getScelta(), that.getScelta()) && Objects.equals(getCostoUntUmMag(), that.getCostoUntUmMag()) && Objects.equals(getValUntUmMag(), that.getValUntUmMag()) && Objects.equals(getTaraCnfKg(), that.getTaraCnfKg()) && Objects.equals(getQtaCnf(), that.getQtaCnf()) && Objects.equals(getFlagImballoArendere(), that.getFlagImballoArendere()) && Objects.equals(getFlagStato(), that.getFlagStato()) && Objects.equals(getCodDiviCont(), that.getCodDiviCont()) && Objects.equals(getCambioDiviCont(), that.getCambioDiviCont()) && Objects.equals(getBarcode(), that.getBarcode()) && Objects.equals(getNote(), that.getNote()) && Objects.equals(getRapConv2(), that.getRapConv2()) && Objects.equals(getRapConv3(), that.getRapConv3()) && Objects.equals(getPosizione(), that.getPosizione()) && Objects.equals(getDataAggPrz(), that.getDataAggPrz()) && Objects.equals(getPartitaMagSec(), that.getPartitaMagSec()) && Objects.equals(getQtaAttesa(), that.getQtaAttesa());
}
@Override
public int hashCode() {
return Objects.hash(getCodMart(), getPartitaMag(), getDescrizione(), getDataIns(), getDataScad(), getScelta(), getCostoUntUmMag(), getValUntUmMag(), getTaraCnfKg(), getQtaCnf(), getFlagImballoArendere(), getFlagStato(), getCodDiviCont(), getCambioDiviCont(), getBarcode(), getNote(), getRapConv2(), getRapConv3(), getPosizione(), getDataAggPrz(), getPartitaMagSec(), getQtaAttesa());
}
}

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.model.dto;
import java.time.LocalDate;
public class PartitaCommessaDTO {
private String partitaMag;
private LocalDate dataScad;
private String codJcom;
private String descrizione;
public String getPartitaMag() {
return partitaMag;
}
public void setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
}
public LocalDate getDataScad() {
return dataScad;
}
public void setDataScad(LocalDate dataScad) {
this.dataScad = dataScad;
}
public String getCodJcom() {
return codJcom;
}
public void setCodJcom(String codJcom) {
this.codJcom = codJcom;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
}

View File

@@ -52,6 +52,7 @@ import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUlDTO;
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportManager;
@@ -1156,9 +1157,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
}
@Override
public void onBatchLotSelectionRequest(List<MtbPartitaMag> availableBatchLots, RunnableArgs<MtbPartitaMag> onComplete) {
public void onBatchLotSelectionRequest(List<PartitaCommessaDTO> availableBatchLotsCodJcoms, RunnableArgs<PartitaCommessaDTO> onComplete) {
handler.post(() -> {
DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete)
DialogChooseBatchLotView.newInstance(availableBatchLotsCodJcoms, onComplete)
.show(getSupportFragmentManager(), "tag");
});
}

View File

@@ -12,7 +12,6 @@ import org.apache.commons.lang3.NotImplementedException;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -51,6 +50,7 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.VtbVett;
import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUlDTO;
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
@@ -88,12 +88,12 @@ import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.PrintULRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.data.UntMisUtils;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.data.UntMisUtils;
import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException;
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidMagazzinoAutomaticoMovementException;
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
@@ -527,11 +527,11 @@ public class SpedizioneViewModel {
return null;
}
private MtbPartitaMag sendBatchLotSelectionRequest(List<MtbPartitaMag> availableBatchLots) {
private PartitaCommessaDTO sendBatchLotSelectionRequest(List<PartitaCommessaDTO> availableBatchLotsCodJcoms) {
final CountDownLatch latch = new CountDownLatch(1);
AtomicReference<MtbPartitaMag> result = new AtomicReference<>();
AtomicReference<PartitaCommessaDTO> result = new AtomicReference<>();
mListener.onBatchLotSelectionRequest(availableBatchLots, item -> {
mListener.onBatchLotSelectionRequest(availableBatchLotsCodJcoms, item -> {
result.set(item);
latch.countDown();
});
@@ -995,19 +995,46 @@ public class SpedizioneViewModel {
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, boolean canPartitaMagBeChanged, boolean executeImmediately) throws Exception {
if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null) {
List<MtbColr> scannedMtbColrs = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr();
List<MtbPartitaMag> availableBatchLots = scannedMtbColrs.stream()
List<PartitaCommessaDTO> availableBatchLotsAndCodJcoms = scannedMtbColrs.stream()
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
(x.getPartitaMag() == null || x.getMtbPartitaMag().getDataScad() == null ||
UtilityDate.getNow().isBefore(x.getMtbPartitaMag().getDataScad())))
.map(x -> x.getPartitaMag() == null ? new MtbPartitaMag().setCodMart(x.getMtbAart().getCodMart()) : x.getMtbPartitaMag())
.map(x -> new PartitaCommessaDTO() {{
setCodJcom(x.getCodJcom());
setPartitaMag(x.getPartitaMag());
setDataScad(x.getMtbPartitaMag() != null ? x.getMtbPartitaMag().getDataScad() : null);
setDescrizione(x.getDescrizione());
}
})
.distinct()
.sorted((a, b) -> {
// 1) Prima la riga con codJcom uguale a refMtbColr.codJcom
if (refMtbColr != null && refMtbColr.getCodJcom() != null) {
boolean aMatchesCodJcom = Objects.equals(a.getCodJcom(), refMtbColr.getCodJcom());
boolean bMatchesCodJcom = Objects.equals(b.getCodJcom(), refMtbColr.getCodJcom());
if (aMatchesCodJcom && !bMatchesCodJcom) return -1;
if (!aMatchesCodJcom && bMatchesCodJcom) return 1;
}
// 2) Poi la riga con partitaMag uguale a refMtbColr.partitaMag
if (refMtbColr != null && refMtbColr.getPartitaMag() != null) {
boolean aMatchesPartitaMag = Objects.equals(a.getPartitaMag(), refMtbColr.getPartitaMag());
boolean bMatchesPartitaMag = Objects.equals(b.getPartitaMag(), refMtbColr.getPartitaMag());
if (aMatchesPartitaMag && !bMatchesPartitaMag) return -1;
if (!aMatchesPartitaMag && bMatchesPartitaMag) return 1;
}
// 3) Infine ordina per dataScad ascendente
if (a.getDataScad() == null && b.getDataScad() == null) return 0;
if (a.getDataScad() == null) return 1;
if (b.getDataScad() == null) return -1;
return a.getDataScad().compareTo(b.getDataScad());
})
.collect(Collectors.toList());
//Controllo se una delle partite combacia con quella che voglio evadere
@@ -1022,33 +1049,23 @@ public class SpedizioneViewModel {
// }
// }
if (availableBatchLots.size() > 1) {
if (availableBatchLotsAndCodJcoms.size() > 1) {
this.sendOnLoadingStarted();
List<MtbPartitaMag> tmp = new ArrayList<>();
if (availableBatchLots.stream().anyMatch(x -> x.getDataScad() != null)) {
tmp.addAll(availableBatchLots.stream()
.filter(x -> x.getDataScad() != null && UtilityDate.getNow().isBefore(x.getDataScad()))
.sorted(Comparator.comparing(MtbPartitaMag::getDataScad))
.collect(Collectors.toList()));
}
if (availableBatchLots.stream().anyMatch(x -> x.getDataScad() == null)) {
tmp.addAll(availableBatchLots.stream()
.filter(x -> x.getDataScad() == null)
.sorted(Comparator.comparing(x -> UtilityString.isNull(x.getPartitaMag(), "")))
.collect(Collectors.toList()));
}
var selected = this.sendBatchLotSelectionRequest(tmp);
var selected = this.sendBatchLotSelectionRequest(availableBatchLotsAndCodJcoms);
this.sendOnLoadingEnded();
if (selected != null) {
MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().stream()
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
.filter(x ->
x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag()))
|| (x.getPartitaMag() == null && selected.getPartitaMag() == null)))
|| (x.getPartitaMag() == null && selected.getPartitaMag() == null)) &&
((x.getCodJcom() != null && selected.getCodJcom() != null && x.getCodJcom().equalsIgnoreCase(selected.getCodJcom()))
|| (x.getCodJcom() == null && selected.getCodJcom() == null)))
.findFirst()
.orElse(null);
@@ -2297,7 +2314,7 @@ public class SpedizioneViewModel {
void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete);
void onBatchLotSelectionRequest(List<MtbPartitaMag> availableBatchLots, RunnableArgs<MtbPartitaMag> onComplete);
void onBatchLotSelectionRequest(List<PartitaCommessaDTO> availableBatchLotsCodJcoms, RunnableArgs<PartitaCommessaDTO> onComplete);
PrintOrderCloseDTO onCloseOrderPrintRequest();

View File

@@ -30,6 +30,7 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupHeaderBinding;
import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupItemBinding;
@@ -129,9 +130,17 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
}
holder.mBinding.deactivatedOverBg.setVisibility(!pickingObjectDTO.isActive() ? View.VISIBLE : View.GONE);
holder.mBinding.getRoot().setAlpha(!pickingObjectDTO.isActive() ? 0.8f : 1);
holder.mBinding.badge1.setBackground(ResourcesCompat.getDrawable(mContext.getResources(), !pickingObjectDTO.isActive() ? R.drawable.badge_round_corner : R.drawable.badge1_round_corner, null));
holder.mBinding.badge1.setTextColor(ResourcesCompat.getColor(mContext.getResources(), !pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.white, null));
holder.mBinding.badge1.setBackgroundTintList(UtilityResources.getColorStateListFromAttr(mContext,
!pickingObjectDTO.isActive() ? R.color.gray_400 : com.google.android.material.R.attr.colorPrimaryContainer));
if (!pickingObjectDTO.isActive())
holder.mBinding.badge1.setTextColor(ResourcesCompat.getColor(mContext.getResources(), R.color.gray_600, null));
else
holder.mBinding.badge1.setTextColor(UtilityResources.getColorStateListFromAttr(mContext, com.google.android.material.R.attr.colorOnPrimaryContainer));
holder.mBinding.qtaEvasa.setTextColor(ResourcesCompat.getColor(mContext.getResources(), !pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.green_700, null));
holder.mBinding.descrizione.setText(pickingObjectDTO.getDescrizione());
@@ -163,7 +172,8 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<Spedizio
var mtbUntMis = pickingObjectDTO.getOriginalModel().getMtbAart().getMtbUntMis().get(0);
if (mtbUntMis.isFlagDig()) cifreDec = 0;
else cifreDec = Math.min(mtbUntMis.getCifreDec().intValue(), CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS);
else
cifreDec = Math.min(mtbUntMis.getCifreDec().intValue(), CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS);
}
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaEvasa(), cifreDec));

View File

@@ -1,4 +1,4 @@
package it.integry.integrywmsnative.view.dialogs.choose_batch_lot.choose_art_from_lista_mtb_colr;
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr;
import android.content.Context;
import android.view.LayoutInflater;

View File

@@ -1,4 +1,4 @@
package it.integry.integrywmsnative.view.dialogs.choose_batch_lot.choose_art_from_lista_mtb_colr;
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr;
import android.app.Dialog;
import android.content.Context;

View File

@@ -11,15 +11,15 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
import it.integry.integrywmsnative.databinding.DialogChooseBatchLotItemModelBinding;
public class DialogChooseBatchLotAdapter extends RecyclerView.Adapter<DialogChooseBatchLotAdapter.ViewHolder> {
protected Context mContext;
private final List<MtbPartitaMag> mDataset;
private final IRecyclerItemClicked<MtbPartitaMag> mOnItemClickListener;
private final List<PartitaCommessaDTO> mDataset;
private final IRecyclerItemClicked<PartitaCommessaDTO> mOnItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder {
@@ -31,13 +31,13 @@ public class DialogChooseBatchLotAdapter extends RecyclerView.Adapter<DialogChoo
mViewDataBinding = v;
}
public void bind(MtbPartitaMag mtbPartitaMag) {
mViewDataBinding.setMtbPartitaMag(mtbPartitaMag);
public void bind(PartitaCommessaDTO partitaCommessa) {
mViewDataBinding.setInputData(partitaCommessa);
mViewDataBinding.executePendingBindings();
}
}
public DialogChooseBatchLotAdapter(List<MtbPartitaMag> myDataset, IRecyclerItemClicked<MtbPartitaMag> onItemClickListener) {
public DialogChooseBatchLotAdapter(List<PartitaCommessaDTO> myDataset, IRecyclerItemClicked<PartitaCommessaDTO> onItemClickListener) {
mDataset = myDataset;
mOnItemClickListener = onItemClickListener;
}
@@ -51,7 +51,7 @@ public class DialogChooseBatchLotAdapter extends RecyclerView.Adapter<DialogChoo
@Override
public void onBindViewHolder(DialogChooseBatchLotAdapter.ViewHolder holder, int position) {
MtbPartitaMag item = mDataset.get(position);
PartitaCommessaDTO item = mDataset.get(position);
holder.bind(item);
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {

View File

@@ -22,7 +22,7 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO;
import it.integry.integrywmsnative.databinding.DialogChooseBatchLotBinding;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
@@ -31,22 +31,22 @@ public class DialogChooseBatchLotView extends BaseDialogFragment {
@Inject
DialogChooseBatchLotViewModel mViewModel;
private final List<MtbPartitaMag> mAvailableBatchLot;
private final RunnableArgs<MtbPartitaMag> mOnItemSelected;
private final List<PartitaCommessaDTO> mAvailableBatchLotCodJcom;
private final RunnableArgs<PartitaCommessaDTO> mOnItemSelected;
private Context mContext;
private DialogChooseBatchLotBinding mBindings;
private MtbPartitaMag mSelectedItem;
private PartitaCommessaDTO mSelectedItem;
public static DialogChooseBatchLotView newInstance(List<MtbPartitaMag> availableBatchLot, RunnableArgs<MtbPartitaMag> onItemSelected) {
return new DialogChooseBatchLotView(availableBatchLot, onItemSelected);
public static DialogChooseBatchLotView newInstance(List<PartitaCommessaDTO> availableBatchLotCodJcom, RunnableArgs<PartitaCommessaDTO> onItemSelected) {
return new DialogChooseBatchLotView(availableBatchLotCodJcom, onItemSelected);
}
private DialogChooseBatchLotView(List<MtbPartitaMag> availableBatchLot, RunnableArgs<MtbPartitaMag> onItemSelected) {
private DialogChooseBatchLotView(List<PartitaCommessaDTO> availableBatchLotCodJcom, RunnableArgs<PartitaCommessaDTO> onItemSelected) {
super();
this.mAvailableBatchLot = availableBatchLot;
this.mAvailableBatchLotCodJcom = availableBatchLotCodJcom;
this.mOnItemSelected = onItemSelected;
}
@@ -103,11 +103,11 @@ public class DialogChooseBatchLotView extends BaseDialogFragment {
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mBindings.mainList.addItemDecoration(itemDecorator);
DialogChooseBatchLotAdapter mAdapter = new DialogChooseBatchLotAdapter(mAvailableBatchLot, onItemClicked);
DialogChooseBatchLotAdapter mAdapter = new DialogChooseBatchLotAdapter(mAvailableBatchLotCodJcom, onItemClicked);
mBindings.mainList.setAdapter(mAdapter);
}
private final IRecyclerItemClicked<MtbPartitaMag> onItemClicked = (item, position) -> {
private final IRecyclerItemClicked<PartitaCommessaDTO> onItemClicked = (item, position) -> {
mSelectedItem = item;
dismiss();
};

View File

@@ -31,7 +31,7 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.choose_art_from_lista_mtb_colr.DialogChooseArtFromListaMtbColrView;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.DialogChooseArtFromListaMtbColrView;
public class DialogScanArtView extends BaseDialogFragment implements DialogScanArtViewModel.Listener {

View File

@@ -41,13 +41,14 @@
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:gravity="center_horizontal"
android:text="@string/select_batch_lot" />
android:text="@string/select_batch_lot_dialog_title" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/main_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp" />
android:layout_marginTop="16dp"
tools:listitem="@layout/dialog_choose_batch_lot_item_model"/>
</androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -12,77 +12,79 @@
<import type="android.view.View" />
<variable
name="mtbPartitaMag"
type="it.integry.integrywmsnative.core.model.MtbPartitaMag" />
name="inputData"
type="it.integry.integrywmsnative.core.model.dto.PartitaCommessaDTO" />
</data>
<androidx.appcompat.widget.LinearLayoutCompat
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="8dp"
android:paddingBottom="8dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
<TextView
android:id="@+id/partita_mag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:text="@{UtilityString.isNull(inputData.partitaMag, &quot;Nessun lotto&quot;)}"
style="@style/TextAppearance.Material3.LabelLarge"
android:textColor="?colorPrimary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="Nessun lotto" />
<TextView
android:id="@+id/cod_jcom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{inputData.codJcom}"
style="@style/TextAppearance.Material3.LabelLarge"
android:background="@drawable/badge_round_corner"
android:backgroundTint="?colorPrimaryContainer"
android:textColor="?colorOnPrimaryContainer"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
app:visibilityWhenNotNull="@{inputData.codJcom}"
tools:text="Nessuna commessa" />
<TextView
android:id="@+id/data_scad_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scadenza: "
android:layout_marginEnd="4dp"
style="@style/TextAppearance.Material3.BodyMedium"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/partita_mag"
app:visibilityWhenNotNull="@{inputData.dataScad}" />
<TextView
android:id="@+id/data_scad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityDate.formatDate(inputData.dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
style="@style/TextAppearance.Material3.BodyMedium"
app:layout_constraintBaseline_toBaselineOf="@id/data_scad_label"
app:layout_constraintStart_toEndOf="@id/data_scad_label"
app:visibilityWhenNotNull="@{inputData.dataScad}"
tools:text="02/05/2025" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:text="@{UtilityString.isNull(inputData.descrizione, &quot;Nessuna descrizione&quot;)}"
android:textColor="@android:color/black"
style="@style/TextAppearance.Material3.BodyLarge"
app:layout_constraintTop_toBottomOf="@id/data_scad_label"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:text="Descrizione lunga articolo" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityString.isNull(mtbPartitaMag.partitaMag, &quot;Nessun lotto&quot;)}"
style="@style/AppTheme.NewMaterial.Text.Medium"
android:textColor="?colorPrimary"
android:textStyle="bold"
tools:text="PARTITA MAG" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data scad: "
android:textSize="14sp"
android:textStyle="bold"
android:layout_toStartOf="@id/data_scad"
android:layout_marginEnd="4dp"
android:visibility="@{mtbPartitaMag.dataScad == null ? View.GONE : View.VISIBLE}" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/data_scad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="@{UtilityDate.formatDate(mtbPartitaMag.dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)}"
android:textSize="14sp"
android:textStyle="bold"
android:visibility="@{mtbPartitaMag.dataScad == null ? View.GONE : View.VISIBLE}"
tools:text="Data scad" />
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:text="@{UtilityString.isNull(mtbPartitaMag.descrizione, &quot;Nessuna descrizione&quot;)}"
android:textColor="@android:color/black"
android:textSize="16sp"
tools:text="Descrizione lunga articolo" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</layout>

View File

@@ -25,8 +25,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="BADGE 1"
tools:backgroundTint="?attr/colorPrimaryContainer"
tools:textColor="?attr/colorOnPrimaryContainer"
android:background="@drawable/badge_round_corner"
android:textColor="@android:color/white"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:paddingLeft="6dp"
@@ -41,14 +42,6 @@
android:orientation="horizontal"
android:gravity="end">
<!--<TextView-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:textStyle="bold"-->
<!--android:textColor="@color/green_700"-->
<!--style="@android:style/TextAppearance.Medium"-->
<!--android:text="@string/dispatched"/>-->
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/qta_evasa"
android:layout_width="wrap_content"

View File

@@ -358,7 +358,7 @@
<string name="manufacture">Produzione</string>
<string name="production">Produzione</string>
<string name="production_line">Linea di produzione</string>
<string name="select_batch_lot">Seleziona un lotto</string>
<string name="select_batch_lot_dialog_title">Seleziona un lotto/commessa</string>
<string name="internal_handling">Movimentazione interna</string>
<string name="prod_ordine_produzione_title_fragment">Accettazione da ordine</string>
<string name="prod_ordine_lavorazione_title_fragment">Picking da ordine</string>

View File

@@ -361,7 +361,7 @@
<string name="manufacture">Manufacture</string>
<string name="production">Production</string>
<string name="production_line">Production line</string>
<string name="select_batch_lot">Select a batch lot</string>
<string name="select_batch_lot_dialog_title">Select a batch lot/job</string>
<string name="internal_handling">Internal handling</string>
<string name="prod_ordine_produzione_title_fragment">Production picking</string>
<string name="prod_ordine_lavorazione_title_fragment">Manufacture picking</string>