diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java index 314671ef..4dce7962 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java @@ -38,6 +38,7 @@ public class MvwSitArtUdcDetInventario { private BigDecimal pesoLordoKg; private String codJfas; private MtbAart mtbAart; + private MtbUntMis mtbUntMis; public String getGestione() { @@ -283,6 +284,14 @@ public class MvwSitArtUdcDetInventario { return this; } + public MtbUntMis getMtbUntMis() { + return mtbUntMis; + } + + public MvwSitArtUdcDetInventario setMtbUntMis(MtbUntMis mtbUntMis) { + this.mtbUntMis = mtbUntMis; + return this; + } public MtbColr toMtbColr() { return new MtbColr() diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java index ff400509..6f7db1a9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java @@ -14,6 +14,7 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbGrup; +import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; @@ -131,8 +132,26 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { Type typeOfObjectsList = new TypeToken>() { }.getType(); - this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed); + this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed); } + + public void getUntMisArts(List inputUntMis, RunnableArgs> onComplete, RunnableArgs onFailed) { + List> whereCondList = Stream.of(inputUntMis) + .distinct() + .withoutNulls() + .map(x -> { + HashMap data = new HashMap<>(); + data.put("unt_mis", x); + return data; + }) + .toList(); + + var whereCond = whereCondList.isEmpty() ? "" : " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondList); + + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + this.systemRESTConsumer.processSql("SELECT * FROM mtb_unt_mis " + whereCond, typeOfObjectsList, onComplete, onFailed); + } } 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 3995fff5..6dbc3090 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 @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.consumers; import com.annimon.stream.Optional; import com.annimon.stream.Stream; +import java.util.ArrayList; import java.util.List; import javax.inject.Singleton; @@ -13,6 +14,7 @@ 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.InstantItemSituationIncomingItemDto; import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto; import it.integry.integrywmsnative.core.utility.UtilityString; import retrofit2.Call; @@ -120,7 +122,54 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer { .enqueue(new Callback<>() { @Override public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "getInstantItemSituation", onComplete, onFailed); + analyzeAnswer(response, "getInstantItemSituation", data -> { + + var inputUntMis = new ArrayList(); + + 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); } @Override 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 index 7ad902ee..b05d05bf 100644 --- 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 @@ -3,6 +3,8 @@ package it.integry.integrywmsnative.core.rest.model.giacenza; import java.math.BigDecimal; import java.time.LocalDate; +import it.integry.integrywmsnative.core.model.MtbUntMis; + public class InstantItemSituationIncomingItemDto { private BigDecimal qtaOrd; @@ -21,6 +23,7 @@ public class InstantItemSituationIncomingItemDto { private String codJcom; private String codMdep; private String untMis; + private MtbUntMis mtbUntMis; public BigDecimal getQtaOrd() { return qtaOrd; @@ -85,4 +88,13 @@ public class InstantItemSituationIncomingItemDto { public String getUntMis() { return untMis; } + + public MtbUntMis getMtbUntMis() { + return mtbUntMis; + } + + public InstantItemSituationIncomingItemDto setMtbUntMis(MtbUntMis mtbUntMis) { + this.mtbUntMis = mtbUntMis; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index a8d66c0d..360bf8bf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -57,6 +57,7 @@ public class DBSettingsModel { private boolean flagCanCreateInventario = true; private boolean flagCanAddUnknownItemsInventario = true; private boolean flagShouldAskToCreateOrUpdateRowInventario = false; + private String commessaMagazzino; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -436,4 +437,13 @@ public class DBSettingsModel { this.flagConsentiFuoriPianoLogistico = flagConsentiFuoriPianoLogistico; return this; } + + public String getCommessaMagazzino() { + return commessaMagazzino; + } + + public DBSettingsModel setCommessaMagazzino(String commessaMagazzino) { + this.commessaMagazzino = commessaMagazzino; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index a65aa78f..d8e40df3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -15,6 +15,7 @@ import java.util.List; import javax.inject.Singleton; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.StbGestSetup; import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; @@ -367,6 +368,10 @@ public class SettingsManager { .setGestName("PICKING") .setSection("INVENTARIO") .setKeySection("FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PICKING") + .setSection("SETUP") + .setKeySection("COMMESSA_MAGAZZINO")); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> { @@ -403,6 +408,7 @@ public class SettingsManager { dbSettingsModelIstance.setFlagCanCreateInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_CREATE_INVENTARIO", Boolean.class, Boolean.TRUE)); dbSettingsModelIstance.setFlagCanAddUnknownItemsInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_ADD_UNKNOWN_ITEMS", Boolean.class, Boolean.TRUE)); dbSettingsModelIstance.setFlagShouldAskToCreateOrUpdateRowInventario(getValueFromList(list, "INVENTARIO", "FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW", Boolean.class, Boolean.FALSE)); + dbSettingsModelIstance.setCommessaMagazzino(getValueFromList(list, "SETUP", "COMMESSA_MAGAZZINO", String.class, CommonConst.Config.COMMESSA_MAG)); String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); if (notePerdita != null) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index c932a287..53d0f760 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -175,7 +175,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo setSupportActionBar(mBindings.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - + mFlagShowCodForn = SettingsManager.iDB().isShowCodFornSpedizione(); mDivideByGrpMerc = SettingsManager.iDB().isGroupShippingByCommodityGroup(); @@ -337,10 +337,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo qtaColWithdrawRows.addAndGet(row.getQtaCol()); }); - spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom()); - if (!anyLUPresent) { spedizioneListModel.setGroupTitle(!mEnableFakeGiacenza ? getString(R.string.picking_not_available) : ""); + spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom())); if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col)); @@ -378,14 +377,18 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo cloneModel.setGroupTitle(String.format("%s: %s", getString(R.string.position_text), UtilityString.isNullOrEmpty(mtbColtToPick.getPosizione()) ? "N.A." : mtbColtToPick.getPosizione())); MtbColr mtbColrToDispatch = mtbColtToPick.getMtbColr() != null && mtbColtToPick.getMtbColr().size() > 0 ? mtbColtToPick.getMtbColr().get(0) : null; - if (mtbColrToDispatch != null && !UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag())) { - cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag())); - cloneModel.setBadge2(mtbColrToDispatch.getCodJcom()); + if (mtbColrToDispatch != null) { + if(!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag())) + cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag())); + + if (!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getCodJcom())) { + cloneModel.setBadge2(getCommessa(mtbColrToDispatch.getCodJcom())); + } } cloneModel.setSourceMtbColr(mtbColrToDispatch); - 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())) { cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col)); @@ -514,7 +517,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo spedizioneListModel.setGroupTitle(groupTitle); if (!anyLUPresent) { - spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom()); + spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom())); if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col)); @@ -547,9 +550,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo MtbColr mtbColrToDispatch = mtbColtToPick.getMtbColr() != null && mtbColtToPick.getMtbColr().size() > 0 ? mtbColtToPick.getMtbColr().get(0) : null; - if (mtbColrToDispatch != null && !UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag())) { - cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag())); - cloneModel.setBadge2(mtbColrToDispatch.getCodJcom()); + if (mtbColrToDispatch != null) { + if (!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag())) + cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag())); + + cloneModel.setBadge2(getCommessa(mtbColrToDispatch.getCodJcom())); } cloneModel.setSourceMtbColr(mtbColrToDispatch); @@ -632,6 +637,19 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo return sortedList; } + private String getCommessa(String codJcom) { + var commessaMagazzino = SettingsManager.iDB().getCommessaMagazzino(); + + if(UtilityString.isNullOrEmpty(commessaMagazzino)) { + return UtilityString.isNull(codJcom, "Magazzino").toUpperCase(); + } else { + if(commessaMagazzino.equalsIgnoreCase(codJcom) || codJcom == null) + return "Magazzino".toUpperCase(); + else + return codJcom.toUpperCase(); + } + } + private boolean isThereAnyItemToPick(List dataList) { return Stream.of(dataList) .anyMatch(x -> !x.isHidden()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index a74b762b..ec2d7989 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -652,7 +652,12 @@ public class SpedizioneViewModel { if (mEnableGiacenza) { Stream.of(pickingList).forEach(pickingObjectDTO -> { - if (Stream.of(pickingObjectDTO.getMtbColts()).anyMatch(x -> Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) && x.getDataColloS().equals(scannedUL.getDataColloS()) && x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) && (scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) { + if (Stream.of(pickingObjectDTO.getMtbColts()) + .anyMatch(x -> + Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) && + x.getDataColloS().equals(scannedUL.getDataColloS()) && + x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) && + (scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) { matchPickingObject.add(pickingObjectDTO); } @@ -679,7 +684,13 @@ public class SpedizioneViewModel { ObservableArrayList cloneMtbColrs = (ObservableArrayList) cloneMtbColt.getMtbColr().clone(); - Stream.of(cloneMtbColt.getMtbColr()).filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) && (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag())))).forEach(cloneMtbColrs::remove); + Stream.of(cloneMtbColt.getMtbColr()) + .filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) && + UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) && + UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) && + (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) || + UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag())))) + .forEach(cloneMtbColrs::remove); cloneMtbColt.setMtbColr(cloneMtbColrs); 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 index c8dbf76c..7d50bfc7 100644 --- 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 @@ -74,7 +74,7 @@ android:layout_height="wrap_content" android:backgroundTint="@color/colorPrimary" android:gravity="center" - android:text="@{UtilityNumber.decimalToString(item.qtaOrd, 2)}" + android:text="@{UtilityNumber.decimalToString(item.qtaOrd, item.mtbUntMis.cifreDec.intValue())}" android:textAllCaps="true" android:textColor="@android:color/white" android:textStyle="bold"