Completata gestione delle unità di misura in colli nel popup informativo

This commit is contained in:
Giuseppe Scorrano 2023-04-03 14:09:31 +02:00
parent a63e3817b5
commit 400f1440db
8 changed files with 178 additions and 73 deletions

View File

@ -38,8 +38,6 @@ public class MvwSitArtUdcDetInventario {
private BigDecimal pesoLordoKg; private BigDecimal pesoLordoKg;
private String codJfas; private String codJfas;
private MtbAart mtbAart; private MtbAart mtbAart;
private MtbUntMis mtbUntMis;
public String getGestione() { public String getGestione() {
return gestione; return gestione;
@ -284,15 +282,6 @@ public class MvwSitArtUdcDetInventario {
return this; return this;
} }
public MtbUntMis getMtbUntMis() {
return mtbUntMis;
}
public MvwSitArtUdcDetInventario setMtbUntMis(MtbUntMis mtbUntMis) {
this.mtbUntMis = mtbUntMis;
return this;
}
public MtbColr toMtbColr() { public MtbColr toMtbColr() {
return new MtbColr() return new MtbColr()
.setCodJcom(getCodJcom()) .setCodJcom(getCodJcom())

View File

@ -6,6 +6,7 @@ import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -59,6 +60,8 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
public static void getByCodMartsStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) { public static void getByCodMartsStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String joinedCods = Stream.of(codMartToFind) String joinedCods = Stream.of(codMartToFind)
.withoutNulls()
.distinct()
.collect(Collectors.joining(",")); .collect(Collectors.joining(","));
@ -154,4 +157,33 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
}.getType(); }.getType();
this.systemRESTConsumer.processSql("SELECT * FROM mtb_unt_mis " + whereCond, typeOfObjectsList, onComplete, onFailed); this.systemRESTConsumer.processSql("SELECT * FROM mtb_unt_mis " + whereCond, typeOfObjectsList, onComplete, onFailed);
} }
public void fillMtbAartsWithMtbUntMis(List<MtbAart> inputMtbAart, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
var inputUntMis = new ArrayList<String>();
if (inputMtbAart != null && !inputMtbAart.isEmpty()) {
inputUntMis.addAll(Stream.of(inputMtbAart)
.map(MtbAart::getUntMis)
.withoutNulls()
.distinct()
.toList());
}
if (inputUntMis.isEmpty()) {
onComplete.run(inputMtbAart);
return;
}
getUntMisArts(inputUntMis, mtbUntMiss -> {
for (var item : inputMtbAart) {
var mtbUntMis = Stream.of(mtbUntMiss).filter(x -> x.getUntMis().equalsIgnoreCase(item.getUntMis()))
.findFirstOrElse(null);
if (mtbUntMis != null)
item.setMtbUntMis(Collections.singletonList(mtbUntMis));
}
onComplete.run(inputMtbAart);
}, onFailed);
}
} }

View File

@ -124,51 +124,7 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
public void onResponse(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Response<ServiceRESTResponse<InstantItemSituationResponseDto>> response) { public void onResponse(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Response<ServiceRESTResponse<InstantItemSituationResponseDto>> response) {
analyzeAnswer(response, "getInstantItemSituation", data -> { analyzeAnswer(response, "getInstantItemSituation", data -> {
var inputUntMis = new ArrayList<String>(); fillInstantItemSituationWithMtbAarts(data, onComplete, onFailed);
if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) {
inputUntMis.addAll(Stream.of(data.getIncomingItems())
.map(InstantItemSituationIncomingItemDto::getUntMis)
.toList());
}
if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) {
inputUntMis.addAll(Stream.of(data.getAvailableItems())
.map(MvwSitArtUdcDetInventario::getUntMis)
.toList());
}
if (inputUntMis.isEmpty()) {
onComplete.run(data);
return;
}
mArticoloRESTConsumer.getUntMisArts(inputUntMis, mtbUntMiss -> {
if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) {
for (var item : data.getIncomingItems()){
var mtbUntMis = Stream.of(mtbUntMiss).filter(x -> x.getUntMis().equalsIgnoreCase(item.getUntMis()))
.findFirstOrElse(null);
if(mtbUntMis != null)
item.setMtbUntMis(mtbUntMis);
}
}
if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) {
for (var item : data.getAvailableItems()){
var mtbUntMis = Stream.of(mtbUntMiss).filter(x -> x.getUntMis().equalsIgnoreCase(item.getUntMis()))
.findFirstOrElse(null);
if(mtbUntMis != null)
item.setMtbUntMis(mtbUntMis);
}
}
onComplete.run(data);
}, onFailed);
}, onFailed); }, onFailed);
} }
@ -179,5 +135,54 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
}); });
} }
private void fillInstantItemSituationWithMtbAarts(InstantItemSituationResponseDto data, RunnableArgs<InstantItemSituationResponseDto> onComplete, RunnableArgs<Exception> onFailed) {
var inputCodMarts = new ArrayList<String>();
if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) {
inputCodMarts.addAll(Stream.of(data.getIncomingItems())
.map(InstantItemSituationIncomingItemDto::getCodMart)
.toList());
}
if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) {
inputCodMarts.addAll(Stream.of(data.getAvailableItems())
.map(MvwSitArtUdcDetInventario::getCodMart)
.toList());
}
if (inputCodMarts.isEmpty()) {
onComplete.run(data);
return;
}
mArticoloRESTConsumer.getByCodMarts(inputCodMarts, mtbAarts -> {
mArticoloRESTConsumer.fillMtbAartsWithMtbUntMis(mtbAarts, newMtbAarts -> {
if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) {
for (var item : data.getIncomingItems()) {
var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart()))
.findFirstOrElse(null);
if (mtbAart != null)
item.setMtbAart(mtbAart);
}
}
if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) {
for (var item : data.getAvailableItems()) {
var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart()))
.findFirstOrElse(null);
if (mtbAart != null)
item.setMtbAart(mtbAart);
}
}
onComplete.run(data);
}, onFailed);
}, onFailed);
}
} }

View File

@ -3,7 +3,7 @@ package it.integry.integrywmsnative.core.rest.model.giacenza;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.model.MtbAart;
public class InstantItemSituationIncomingItemDto { public class InstantItemSituationIncomingItemDto {
@ -23,7 +23,7 @@ public class InstantItemSituationIncomingItemDto {
private String codJcom; private String codJcom;
private String codMdep; private String codMdep;
private String untMis; private String untMis;
private MtbUntMis mtbUntMis; private MtbAart mtbAart;
public BigDecimal getQtaOrd() { public BigDecimal getQtaOrd() {
return qtaOrd; return qtaOrd;
@ -89,12 +89,12 @@ public class InstantItemSituationIncomingItemDto {
return untMis; return untMis;
} }
public MtbUntMis getMtbUntMis() { public MtbAart getMtbAart() {
return mtbUntMis; return mtbAart;
} }
public InstantItemSituationIncomingItemDto setMtbUntMis(MtbUntMis mtbUntMis) { public InstantItemSituationIncomingItemDto setMtbAart(MtbAart mtbAart) {
this.mtbUntMis = mtbUntMis; this.mtbAart = mtbAart;
return this; return this;
} }
} }

View File

@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.utility;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UntMisUtils {
public static boolean shouldBeShowInColli(MtbAart mtbAart) {
return SettingsManager.iDB().isFlagForceAllToColli() || (mtbAart == null || !mtbAart.isFlagQtaCnfFissaBoolean());
}
}

View File

@ -46,6 +46,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UntMisUtils;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
@ -341,7 +342,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
spedizioneListModel.setGroupTitle(!mEnableFakeGiacenza ? getString(R.string.picking_not_available) : ""); spedizioneListModel.setGroupTitle(!mEnableFakeGiacenza ? getString(R.string.picking_not_available) : "");
spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom())); spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom()));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col)); spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd()); spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue()); spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
@ -389,7 +390,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col)); cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter); BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
@ -519,7 +520,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
if (!anyLUPresent) { if (!anyLUPresent) {
spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom())); spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom()));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col)); spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd()); spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue()); spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());

View File

@ -10,6 +10,7 @@
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" /> <import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="androidx.core.content.ContextCompat" /> <import type="androidx.core.content.ContextCompat" />
<import type="it.integry.integrywmsnative.R" /> <import type="it.integry.integrywmsnative.R" />
<import type="it.integry.integrywmsnative.core.utility.UntMisUtils" />
<import type="android.view.View" /> <import type="android.view.View" />
@ -206,6 +207,34 @@
android:visibility="@{item.qtaCol != null ? View.VISIBLE : View.GONE}"> android:visibility="@{item.qtaCol != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.numCnf, 0)}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="280"
tools:visibility="gone"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/unt_mis_col"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="CONF"
tools:visibility="gone" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small" style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -216,6 +245,7 @@
android:textAllCaps="true" android:textAllCaps="true"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textStyle="bold" android:textStyle="bold"
app:reverse_visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="280.45" /> tools:text="280.45" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@ -227,6 +257,7 @@
android:textAllCaps="true" android:textAllCaps="true"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textStyle="bold" android:textStyle="bold"
app:reverse_visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="CONF" /> tools:text="CONF" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -7,10 +7,15 @@
<data> <data>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" /> <import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" /> <import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" /> <import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="android.view.View" /> <import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UntMisUtils" />
<variable <variable
name="item" name="item"
type="it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto" /> type="it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto" />
@ -21,16 +26,16 @@
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingVertical="8dp" android:paddingVertical="8dp">
android:gravity="center_vertical">
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:layout_toStartOf="@id/qta_box"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_toStartOf="@id/qta_box"> android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@ -53,7 +58,6 @@
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/qta_box" android:id="@+id/qta_box"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -61,27 +65,58 @@
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:padding="6dp"
android:background="@drawable/badge_round_corner" android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/colorPrimary" android:backgroundTint="@color/colorPrimary"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
android:padding="6dp"
android:visibility="@{item.qtaOrd != null ? View.VISIBLE : View.GONE}"> android:visibility="@{item.qtaOrd != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary" android:backgroundTint="@color/colorPrimary"
android:gravity="center" android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.qtaOrd, item.mtbUntMis.cifreDec.intValue())}" android:text="@{UtilityNumber.decimalToString(item.numCnf, 0)}"
android:textAllCaps="true" android:textAllCaps="true"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textStyle="bold" android:textStyle="bold"
app:visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="280"
tools:visibility="gone"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small" style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/unt_mis_col"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="CONF"
tools:visibility="gone" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.qtaOrd, item.mtbAart.firstUntMis.cifreDec.intValue())}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:reverse_visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="280.45" /> tools:text="280.45" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
@ -89,7 +124,7 @@
android:textAllCaps="true" android:textAllCaps="true"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textStyle="bold" android:textStyle="bold"
style="@style/TextAppearance.AppCompat.Small" app:reverse_visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="CONF" /> tools:text="CONF" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>