Compare commits

...

8 Commits

31 changed files with 263 additions and 253 deletions

6
.idea/appInsightsSettings.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AppInsightsSettings">
<option name="selectedTabId" value="Android Vitals" />
</component>
</project>

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 402
def appVersionName = '1.36.09'
def appVersionCode = 403
def appVersionName = '1.36.10'
signingConfigs {
release {
@@ -152,7 +152,7 @@ dependencies {
implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM
def room_version = "2.5.2"
def room_version = "2.6.1"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

View File

@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.model.dto;
import java.util.Date;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
public class StatoArticoloDTO {
private String codMart;
@@ -17,7 +19,7 @@ public class StatoArticoloDTO {
private Integer ggUtili;
private Integer statoArt;
private StatoPartitaMag statoArt;
public String getCodMart() {
return codMart;
@@ -82,11 +84,11 @@ public class StatoArticoloDTO {
return this;
}
public Integer getStatoArt() {
public StatoPartitaMag getStatoArt() {
return statoArt;
}
public StatoArticoloDTO setStatoArt(Integer statoArt) {
public StatoArticoloDTO setStatoArt(StatoPartitaMag statoArt) {
this.statoArt = statoArt;
return this;
}

View File

@@ -2,9 +2,10 @@ package it.integry.integrywmsnative.core.model.secondary;
public enum StatoPartitaMag {
IN_SCADENZA(1),
SCADUTO(2),
NON_IN_SCADENZA(3);
SCADUTO(1),
IN_SCADENZA(2),
NON_IN_SCADENZA(3),
DISATTIVO(4);
private final int text;

View File

@@ -78,14 +78,12 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
.setCodMarts(codMarts))
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> {
onComplete.run(response.body().getEntityList());
}, onFailed);
public void onResponse(Call<ServiceRESTResponse<List<MtbAart>>> call, Response<ServiceRESTResponse<List<MtbAart>>> response) {
analyzeAnswer(response, "getByCodMart", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
public void onFailure(Call<ServiceRESTResponse<List<MtbAart>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
@@ -112,26 +110,9 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
public void getByCodMart(String codMartToFind, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(
new RetrieveArticoloByCodMartRequestDTO()
.setCodMarts(Collections.singletonList(codMartToFind)))
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> {
if (response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) {
onComplete.run(response.body().getEntityList().get(0));
} else onComplete.run(null);
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
getByCodMarts(Collections.singletonList(codMartToFind), artList -> {
onComplete.run(artList != null && !artList.isEmpty() ? artList.get(0) : null);
}, onFailed);
}

View File

@@ -21,7 +21,7 @@ public interface ArticoloRESTConsumerService {
Call<ServiceRESTResponse<SearchArticoloByBarcodeResponseDTO>> searchByBarcode(@Body() SearchArticoloByBarcodeRequestDTO searchArticoloByBarcodeRequest);
@POST("wms/articolo/retrieveByCodMart")
Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Body RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest);
Call<ServiceRESTResponse<List<MtbAart>>> getByCodMart(@Body RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest);
@POST("wms/articolo/updateBarcodeImballo")
Call<ServiceRESTResponse<Void>> updateBarcodeImballo(@Body UpdateBarcodeImballoRequestDTO updateBarcodeImballoRequest);

View File

@@ -0,0 +1,22 @@
package it.integry.integrywmsnative.core.rest.deserializer;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
public class StatoPartitaMagDeserializer implements JsonDeserializer<StatoPartitaMag> {
@Override
public StatoPartitaMag deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
if (json.isJsonNull()) {
return null;
}
int text = json.getAsInt();
return StatoPartitaMag.from(text);
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.integrywmsnative.core.rest.serializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class StatoPartitaMagSerializer implements JsonSerializer<StatoPartitaMag> {
@Override
public JsonElement serialize(StatoPartitaMag src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(src.getText());
}
}

View File

@@ -55,6 +55,7 @@ public class DBSettingsModel {
private boolean notifyLotStatus = false;
private boolean groupShippingByCommodityGroup = true;
private boolean groupPoductionByCommodityGroup;
private boolean showCodFornSpedizione = true;
private boolean flagCanCreateInventario = true;
private boolean flagCanAddUnknownItemsInventario = true;
@@ -566,4 +567,13 @@ public class DBSettingsModel {
this.flagOverflowQuantityWarning = flagOverflowQuantityWarning;
return this;
}
public boolean isGroupPoductionByCommodityGroup() {
return groupPoductionByCommodityGroup;
}
public DBSettingsModel setGroupPoductionByCommodityGroup(boolean groupPoductionByCommodityGroup) {
this.groupPoductionByCommodityGroup = groupPoductionByCommodityGroup;
return this;
}
}

View File

@@ -272,6 +272,12 @@ public class SettingsManager {
.setSection("PRODUZIONE")
.setKeySection("FILTER_FORNTIORE_PROD")
.setSetter(dbSettingsModelIstance::setFilterFornitoreProd));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("PRODUZIONE")
.setKeySection("FLAG_GROUP_BY_GRP_MERC")
.setSetter(dbSettingsModelIstance::setGroupPoductionByCommodityGroup)
.setDefaultValue(false));
stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
.setGestName("PICKING")
.setSection("SPEDIZIONE")

View File

@@ -7,10 +7,13 @@ import java.lang.reflect.Modifier;
import java.time.LocalDate;
import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateDeserializer;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateTimeDeserializer;
import it.integry.integrywmsnative.core.rest.deserializer.StatoPartitaMagDeserializer;
import it.integry.integrywmsnative.core.rest.serializer.LocalDateSerializer;
import it.integry.integrywmsnative.core.rest.serializer.LocalDateTimeSerializer;
import it.integry.integrywmsnative.core.rest.serializer.StatoPartitaMagSerializer;
public class UtilityGson {
@@ -22,6 +25,8 @@ public class UtilityGson {
.registerTypeAdapter(LocalDate.class, new LocalDateSerializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer())
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagDeserializer())
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagSerializer())
.create();
}

View File

@@ -16,8 +16,6 @@ public class SitBollaAccettazioneDTO {
private BigDecimal qtaDoc;
private BigDecimal qtaCnfDoc;
private BigDecimal numCnfDoc;
private BigDecimal qtaAccettata;
private BigDecimal numCnfAccettata;
private BigDecimal qtaDaAccettare;
private BigDecimal numCnfDaAccettare;
@@ -111,24 +109,6 @@ public class SitBollaAccettazioneDTO {
return this;
}
public BigDecimal getQtaAccettata() {
return qtaAccettata;
}
public SitBollaAccettazioneDTO setQtaAccettata(BigDecimal qtaAccettata) {
this.qtaAccettata = qtaAccettata;
return this;
}
public BigDecimal getNumCnfAccettata() {
return numCnfAccettata;
}
public SitBollaAccettazioneDTO setNumCnfAccettata(BigDecimal numCnfAccettata) {
this.numCnfAccettata = numCnfAccettata;
return this;
}
public BigDecimal getQtaDaAccettare() {
return qtaDaAccettare;
}

View File

@@ -6,9 +6,11 @@ import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.SpannableString;
import android.view.Gravity;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.ObservableArrayList;
import androidx.preference.PreferenceManager;
@@ -98,6 +100,10 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
private List<TestataBollaAccettazioneDTO> testataBolle;
private List<SitBollaAccettazioneDTO> sitArts;
private PopupMenu fabPopupMenu;
//Pass here all external parameters
public static void startActivity(Context context, List<TestataBollaAccettazioneDTO> testataBolle, List<SitBollaAccettazioneDTO> sitArts) {
Intent myIntent = new Intent(context, AccettazioneBollaPickingActivity.class);
@@ -121,7 +127,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
mBindings = ActivityAccettazioneBollaPickingBinding.inflate(getLayoutInflater());
mBindings.setLifecycleOwner(this);
mBindings.setAccettazioneView(this);
mBindings.setView(this);
setContentView(mBindings.getRoot());
@@ -145,6 +151,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
this.initBarcodeReader();
this.initRecyclerView();
// this.initFilters();
this.initFab();
boolean useQtaBolla = SettingsManager.iDB().isFlagAccettazioneUseQtaOrd();
@@ -204,6 +211,35 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
});
}
private void initFab() {
fabPopupMenu = new PopupMenu(this, this.mBindings.accettazioneOrdineInevasoFab,
(Gravity.END | Gravity.BOTTOM),
androidx.appcompat.R.attr.popupMenuStyle,
com.google.android.material.R.style.Widget_Material3_PopupMenu_ContextMenu);
fabPopupMenu.setForceShowIcon(true);
fabPopupMenu.getMenuInflater().inflate(R.menu.accettazione_ordine_inevaso_fab_menu, fabPopupMenu.getMenu());
fabPopupMenu.setOnMenuItemClickListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.show_created_ul) {
showCreatedUL();
} else if (itemId == R.id.create_ul) {
createNewLU();
}
return false;
});
}
public void showFabMenu() {
fabPopupMenu.show();
}
private void refreshList() {
runOnUiThread(() -> {
@@ -315,15 +351,13 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac
};
public void createNewLU() {
this.mBindings.accettazioneOrdineInevasoFab.close(true);
this.fabPopupMenu.dismiss();
this.onLoadingStarted();
this.mViewModel.createNewLU(null, null, false, this::onLoadingEnded);
}
public void showCreatedUL() {
this.mBindings.accettazioneOrdineInevasoFab.close(true);
this.fabPopupMenu.dismiss();
this.mViewModel.retrieveExistentLU(this::startListaBancaliRegistratiActivity);
}

View File

@@ -177,29 +177,6 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
return false;
});
// if (fabPopupMenu.getMenu() instanceof MenuBuilder) {
// var menuBuilder = (MenuBuilder) fabPopupMenu.getMenu();
// menuBuilder.setOptionalIconsVisible(true);
// for (var item : menuBuilder.getVisibleItems()) {
// var iconMarginPx =
// TypedValue.applyDimension(
// TypedValue.COMPLEX_UNIT_DIP, ICON_MARGIN.toFloat(), resources.displayMetrics)
// .toInt();
// if (item.icon != null) {
// if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
// item.icon = InsetDrawable(item.icon, iconMarginPx, 0, iconMarginPx,0)
// } else {
// item.icon =
// object : InsetDrawable(item.icon, iconMarginPx, 0, iconMarginPx, 0) {
// override fun getIntrinsicWidth(): Int {
// return intrinsicHeight + iconMarginPx + iconMarginPx
// }
// }
// }
// }
// }
// }
}
private void initFilters() {
@@ -743,7 +720,6 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A
public void showCreatedUL() {
this.fabPopupMenu.dismiss();
this.mViewModel.retrieveExistentLU(this::startListaBancaliRegistratiActivity);
}

View File

@@ -825,6 +825,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
int alreadyRegisteredUL = alreadyRegisteredMtbColts.size();
boolean divideByGrpMerc = SettingsManager.iDB().isGroupShippingByCommodityGroup();
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, orders.size()), orders.size())
+ "<br />" +
@@ -839,7 +841,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mCurrentGestioneCol,
mCurrentSegnoCol,
MtbColr.Causale.DEFAULT,
mDialogRowInfo)
mDialogRowInfo,
divideByGrpMerc)
).show(getActivity().getSupportFragmentManager(), "tag");
}

View File

@@ -65,33 +65,31 @@ public class OrdiniUscitaElencoViewModel {
this.sendOnLoadingStarted();
new Thread(() -> {
Date loadingStartDate = new Date();
Date loadingStartDate = new Date();
this.mOrdiniRESTConsumer.getOrdiniInevasi(this.mCurrentCodMdep, mCurrentGestioneOrd,
ordiniLavorazione -> {
this.mOrderList.postValue(Stream.of(ordiniLavorazione)
.map(x -> {
try {
return OrdiniUscitaElencoDTO.fromParent(x);
} catch (Exception ex) {
return null;
}
})
.toList());
this.mOrdiniRESTConsumer.getOrdiniInevasi(this.mCurrentCodMdep, mCurrentGestioneOrd,
ordiniLavorazione -> {
this.mOrderList.postValue(Stream.of(ordiniLavorazione)
.map(x -> {
try {
return OrdiniUscitaElencoDTO.fromParent(x);
} catch (Exception ex) {
return null;
}
})
.toList());
long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000;
long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000;
if (2 - forcedDelaySecs > 0) {
try {
Thread.sleep((2 - forcedDelaySecs) * 1000);
} catch (Exception ignored) {
}
if (2 - forcedDelaySecs > 0) {
try {
Thread.sleep((2 - forcedDelaySecs) * 1000);
} catch (Exception ignored) {
}
}
this.sendOnLoadingEnded();
}, this::sendError);
}).start();
this.sendOnLoadingEnded();
}, this::sendError);
}

View File

@@ -125,7 +125,11 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
.setQtaOrd(x.getQtaFabbisogno())
.setNumCnfOrd(x.getNumCnfFabbisogno())
.setQtaCnfOrd(UtilityBigDecimal.divide(x.getQtaFabbisogno(), x.getNumCnfFabbisogno()))
.setFlagEnablePickManuale(false);
.setFlagEnablePickManuale(false)
.setCodMgrp(x.getCodMgrp())
.setDescrizioneMgrp(x.getDescrizioneMgrp())
.setCodMsgr(x.getCodMsgr())
.setDescrizioneMsgr(x.getDescrizioneMsgr());
sitArtOrdDTO.getExtraInfo().put("dataInizio", x.getDataInizio());
sitArtOrdDTO.getExtraInfo().put("dataFine", x.getDataFine());
@@ -134,6 +138,8 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
})
.toList();
boolean divideByGrpMerc = SettingsManager.iDB().isGroupPoductionByCommodityGroup();
SpedizioneActivity.startActivity(getActivity(),
sitArtOrdDTOS,
null,
@@ -141,7 +147,8 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
GestioneEnum.LAVORAZIONE,
+1,
MtbColr.Causale.VERSAMENTO,
DialogRowInfoProdFabbisognoLineeProdView.class);
DialogRowInfoProdFabbisognoLineeProdView.class,
divideByGrpMerc);
popMe();

View File

@@ -16,6 +16,10 @@ public class ProdFabbisognoLineeProdDTO {
private BigDecimal numCnfFabbisogno;
private Date dataInizio;
private Date dataFine;
private String codMgrp;
private String descrizioneMgrp;
private String codMsgr;
private String descrizioneMsgr;
public ProdFabbisognoLineeProdDTO() {
}
@@ -118,4 +122,40 @@ public class ProdFabbisognoLineeProdDTO {
this.dataFine = dataFine;
return this;
}
public String getCodMgrp() {
return codMgrp;
}
public ProdFabbisognoLineeProdDTO setCodMgrp(String codMgrp) {
this.codMgrp = codMgrp;
return this;
}
public String getDescrizioneMgrp() {
return descrizioneMgrp;
}
public ProdFabbisognoLineeProdDTO setDescrizioneMgrp(String descrizioneMgrp) {
this.descrizioneMgrp = descrizioneMgrp;
return this;
}
public String getCodMsgr() {
return codMsgr;
}
public ProdFabbisognoLineeProdDTO setCodMsgr(String codMsgr) {
this.codMsgr = codMsgr;
return this;
}
public String getDescrizioneMsgr() {
return descrizioneMsgr;
}
public ProdFabbisognoLineeProdDTO setDescrizioneMsgr(String descrizioneMsgr) {
this.descrizioneMsgr = descrizioneMsgr;
return this;
}
}

View File

@@ -126,7 +126,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
GestioneEnum gestioneCol,
int segnoCol,
Integer defaultCausaleUL,
Class<? extends BaseDialogRowInfoView> infoDialogClassType) {
Class<? extends BaseDialogRowInfoView> infoDialogClassType,
boolean divideByGrpMerc) {
Intent myIntent = new Intent(context, SpedizioneActivity.class);
String keyPickingList = DataCache.addItem(ordini);
@@ -150,6 +151,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
String keyInfoDialogClassType = DataCache.addItem(infoDialogClassType);
myIntent.putExtra("keyInfoDialogClassType", keyInfoDialogClassType);
String keyDivideByGrpMerc = DataCache.addItem(divideByGrpMerc);
myIntent.putExtra("keyDivideByGrpMerc", keyDivideByGrpMerc);
context.startActivity(myIntent);
}
@@ -164,6 +168,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
mSegnoCol = DataCache.retrieveItem(getIntent().getStringExtra("keySegnoCol"));
mDefaultCausaleUL = DataCache.retrieveItem(getIntent().getStringExtra("keyDefaultCausaleCol"));
mInfoDialogClassType = DataCache.retrieveItem(getIntent().getStringExtra("keyInfoDialogClassType"));
mDivideByGrpMerc = DataCache.retrieveItem(getIntent().getStringExtra("keyDivideByGrpMerc"));
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione);
@@ -178,7 +183,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mFlagShowCodForn = SettingsManager.iDB().isShowCodFornSpedizione();
mDivideByGrpMerc = SettingsManager.iDB().isGroupShippingByCommodityGroup();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
mEnableQuantityReset = sharedPreferences.getBoolean("picking_uscita_enable_quantity_reset", true);

View File

@@ -773,6 +773,8 @@ public class SpedizioneViewModel {
MtbColt refMtbColt = matchedItem.getRefMtbColt();
if (matchedItem.getMtbColts() != null && matchedItem.getMtbColts().size() == 1) {
refMtbColt = matchedItem.getMtbColts().get(0);
} else if(matchedItem.getTempPickData().getSourceMtbColt() != null){
refMtbColt = matchedItem.getTempPickData().getSourceMtbColt();
}
MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null;
this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null);

View File

@@ -103,7 +103,8 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
List<MtbColr> mtbColrs = mViewModel.getObservableMtbColt().get().getMtbColr();
mBinding.textviewArtCounter.setText(String.valueOf(mtbColrs.size()));
mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size()));
mViewModel.calcPesi();
mViewModel.refreshPesi();
}
public BottomSheetFragmentLUContentView setListener(Listener listener) {

View File

@@ -41,7 +41,7 @@ public class BottomSheetFragmentLUContentViewModel {
return this;
}
public void calcPesi() {
public void refreshPesi() {
MtbColt collo = this.mtbColt.get();
if (collo == null) return;
@@ -52,7 +52,7 @@ public class BottomSheetFragmentLUContentViewModel {
for (MtbColr mtbColr : collo.getMtbColr()) {
MtbAart articolo = mtbColr.getMtbAart();
if (articolo == null || articolo.getPesoKg() == null)
if (articolo == null || articolo.getPesoKg() == null || articolo.getTaraKg() == null)
continue;
BigDecimal pesoRiga = articolo.isFlagQtaCnfFissaBoolean() ? mtbColr.getNumCnf().multiply(articolo.getPesoKg()) : mtbColr.getQtaCol();

View File

@@ -0,0 +1,10 @@
package it.integry.integrywmsnative.view.dialogs.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class InactiveBatchLotException extends Exception {
public InactiveBatchLotException(String lotto) {
super(String.format(UtilityResources.getString(R.string.batch_lot_not_enabled), lotto));
}
}

View File

@@ -41,7 +41,6 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -177,7 +176,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
.setIsNoteMandatory(mDialogInputQuantityV2DTO.isNotesMandatory())
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
.setDataScad(mDialogInputQuantityV2DTO.getDataScad())
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck());
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck())
.setStatoArt(mDialogInputQuantityV2DTO.getStatoPartitaMag() != null ? mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() : null);
mBindings.setView(this);
mBindings.setViewmodel(this.mViewModel);
@@ -215,24 +215,23 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
}
private void initProductLotStatusNotification() {
StatoPartitaMag statoPartitaMag = StatoPartitaMag.from(this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt());
if (statoPartitaMag == null)
if (this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() == null)
return;
this.mBindings.inputDataScadLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
switch (statoPartitaMag) {
case SCADUTO:
switch (this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt()) {
case IN_SCADENZA -> {
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.warn_color)));
break;
case IN_SCADENZA:
}
case SCADUTO -> {
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.error_color)));
break;
default:
}
case NON_IN_SCADENZA -> {
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_check_white_24dp);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.success_color)));
}
}
}

View File

@@ -13,12 +13,14 @@ import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
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.UtilityString;
import it.integry.integrywmsnative.view.dialogs.exception.InactiveBatchLotException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidExpireDateException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidNotesException;
@@ -88,6 +90,8 @@ public class DialogInputQuantityV2ViewModel {
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private StatoPartitaMag statoArt;
@Inject
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
@@ -336,6 +340,11 @@ public class DialogInputQuantityV2ViewModel {
return this;
}
public DialogInputQuantityV2ViewModel setStatoArt(StatoPartitaMag statoArt) {
this.statoArt = statoArt;
return this;
}
public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
return this;
@@ -488,6 +497,12 @@ public class DialogInputQuantityV2ViewModel {
}
}
if(this.statoArt == StatoPartitaMag.DISATTIVO){
this.mListener.onError(new InactiveBatchLotException(internalPartitaMag));
onValidated.run(false);
return;
}
if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
this.mListener.onError(new InvalidBatchLotException());

View File

@@ -10,7 +10,7 @@
<import type="android.view.View" />
<variable
name="accettazioneView"
name="view"
type="it.integry.integrywmsnative.gest.accettazione_bolla_picking.AccettazioneBollaPickingActivity" />
</data>
@@ -84,7 +84,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3"
app:visibility="@{accettazioneView.noItemsToPick}">
app:visibility="@{view.noItemsToPick}">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_top"
@@ -133,66 +133,16 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<com.github.clans.fab.FloatingActionMenu
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/accettazione_ordine_inevaso_fab"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:visibility="@{accettazioneView.noLUPresent}"
fab:menu_animationDelayPerItem="50"
fab:menu_backgroundColor="@color/white_bg_alpha"
fab:menu_buttonSpacing="0dp"
fab:menu_colorNormal="@color/colorSecondary"
fab:menu_colorPressed="@color/colorSecondaryDark"
fab:menu_fab_size="normal"
fab:menu_labels_colorNormal="@color/white"
fab:menu_labels_colorPressed="@color/white_pressed"
fab:menu_labels_colorRipple="#66FFFFFF"
fab:menu_labels_cornerRadius="3dp"
fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
fab:menu_labels_margin="0dp"
fab:menu_labels_padding="8dp"
fab:menu_labels_paddingBottom="4dp"
fab:menu_labels_paddingLeft="8dp"
fab:menu_labels_paddingRight="8dp"
fab:menu_labels_paddingTop="4dp"
fab:menu_labels_position="left"
fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
fab:menu_labels_showShadow="true"
fab:menu_labels_textColor="@color/black_semi_transparent"
fab:menu_labels_textSize="18sp"
fab:menu_openDirection="up"
fab:menu_shadowColor="#66000000"
fab:menu_shadowRadius="4dp"
fab:menu_shadowXOffset="1dp"
fab:menu_shadowYOffset="3dp"
fab:menu_showShadow="true">
<com.github.clans.fab.FloatingActionButton
android:id="@+id/accettazione_ordine_inevaso_fab_item1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_box"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> accettazioneView.showCreatedUL()}"
fab:fab_label="@string/action_show_created_ul" />
<com.github.clans.fab.FloatingActionButton
android:id="@+id/accettazione_ordine_inevaso_fab_item2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_add_24dp"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> accettazioneView.createNewLU()}"
fab:fab_label="@string/action_create_ul" />
</com.github.clans.fab.FloatingActionMenu>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:onClick="@{() -> view.showFabMenu()}"
app:srcCompat="@drawable/ic_add_24dp"
app:visibility="@{view.noLUPresent}"
style="?attr/floatingActionButtonPrimaryStyle" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -214,7 +164,7 @@
app:behavior_hideable="false"
app:behavior_peekHeight="66dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
app:visibility="@{accettazioneView.bottomSheetEnabled}"
app:visibility="@{view.bottomSheetEnabled}"
app:parentView="@id/bottom_sheet_lu_content" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -142,67 +142,6 @@
app:visibility="@{view.noLUPresent}"
style="?attr/floatingActionButtonPrimaryStyle" />
<!-- <com.github.clans.fab.FloatingActionMenu-->
<!-- android:id="@+id/accettazione_ordine_inevaso_fab"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:layout_alignParentBottom="true"-->
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:visibility="@{view.noLUPresent}"-->
<!-- fab:menu_animationDelayPerItem="50"-->
<!-- fab:menu_backgroundColor="@color/white_bg_alpha"-->
<!-- fab:menu_buttonSpacing="0dp"-->
<!-- fab:menu_colorNormal="@color/colorSecondary"-->
<!-- fab:menu_colorPressed="@color/colorSecondaryDark"-->
<!-- fab:menu_fab_size="normal"-->
<!-- fab:menu_labels_colorNormal="@color/white"-->
<!-- fab:menu_labels_colorPressed="@color/white_pressed"-->
<!-- fab:menu_labels_colorRipple="#66FFFFFF"-->
<!-- fab:menu_labels_cornerRadius="3dp"-->
<!-- fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"-->
<!-- fab:menu_labels_margin="0dp"-->
<!-- fab:menu_labels_padding="8dp"-->
<!-- fab:menu_labels_paddingBottom="4dp"-->
<!-- fab:menu_labels_paddingLeft="8dp"-->
<!-- fab:menu_labels_paddingRight="8dp"-->
<!-- fab:menu_labels_paddingTop="4dp"-->
<!-- fab:menu_labels_position="left"-->
<!-- fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"-->
<!-- fab:menu_labels_showShadow="true"-->
<!-- fab:menu_labels_textColor="@color/black_semi_transparent"-->
<!-- fab:menu_labels_textSize="18sp"-->
<!-- fab:menu_openDirection="up"-->
<!-- fab:menu_shadowColor="#66000000"-->
<!-- fab:menu_shadowRadius="4dp"-->
<!-- fab:menu_shadowXOffset="1dp"-->
<!-- fab:menu_shadowYOffset="3dp"-->
<!-- fab:menu_showShadow="true">-->
<!-- <com.github.clans.fab.FloatingActionButton-->
<!-- android:id="@+id/accettazione_ordine_inevaso_fab_item1"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:src="@drawable/ic_box"-->
<!-- app:fab_colorNormal="@color/white"-->
<!-- app:fab_colorPressed="@color/white_pressed"-->
<!-- app:fab_colorRipple="#66FFFFFF"-->
<!-- app:onClick="@{() -> view.showCreatedUL()}"-->
<!-- fab:fab_label="@string/action_show_created_ul" />-->
<!-- <com.github.clans.fab.FloatingActionButton-->
<!-- android:id="@+id/accettazione_ordine_inevaso_fab_item2"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:src="@drawable/ic_add_24dp"-->
<!-- app:fab_colorNormal="@color/white"-->
<!-- app:fab_colorPressed="@color/white_pressed"-->
<!-- app:fab_colorRipple="#66FFFFFF"-->
<!-- app:onClick="@{() -> view.createNewLU()}"-->
<!-- fab:fab_label="@string/action_create_ul" />-->
<!-- </com.github.clans.fab.FloatingActionMenu>-->
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -344,7 +344,7 @@
<string name="delivered_on">Consegnato il %s</string>
<string name="title_dynamic_frudis">Personalizzazioni Frudis</string>
<string name="batch_lot_not_enabled">Il lotto <b>%s</b> non è attivo. Continuare?</string>
<string name="batch_lot_not_enabled"><![CDATA[Il lotto: <b>%s</b> non è attivo.]]></string>
<string name="punto_vendita">Punto Vendita</string>
<string name="title_dynamic_saporiveri_pv">SaporiVeri PV</string>
<string name="generate_orders">Genera ordini di acquisto</string>

View File

@@ -351,7 +351,7 @@
<string name="delivered_on">Delivered on %s</string>
<string name="title_dynamic_frudis">Frudis customizations</string>
<string name="batch_lot_not_enabled">Batch lot <b>%s</b> is inactive. Continue?</string>
<string name="batch_lot_not_enabled"><![CDATA[Batch lot: <b>%s</b> is inactive.]]></string>
<string name="other">Other</string>
<string name="home">Home</string>
<string name="logout">Logout</string>

View File

@@ -3,7 +3,7 @@
buildscript {
ext {
kotlin_version = '1.9.0'
agp_version = '8.1.4'
agp_version = '8.2.0'
}
repositories {
@@ -13,7 +13,7 @@ buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.15'
classpath 'com.google.gms:google-services:4.4.0'
classpath 'com.google.firebase:perf-plugin:1.4.2'

View File

@@ -1,6 +1,6 @@
#Mon Feb 13 15:14:43 CET 2023
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME