Implementato popup che chiede se modificare o aggiungere una riga nel caso di articolo già inventariato

This commit is contained in:
Giuseppe Scorrano 2023-03-29 13:48:22 +02:00
parent 6a998d6605
commit 7ef0299282
4 changed files with 87 additions and 11 deletions

View File

@ -56,6 +56,7 @@ public class DBSettingsModel {
private boolean showCodFornSpedizione = true; private boolean showCodFornSpedizione = true;
private boolean flagCanCreateInventario = true; private boolean flagCanCreateInventario = true;
private boolean flagCanAddUnknownItemsInventario = true; private boolean flagCanAddUnknownItemsInventario = true;
private boolean flagShouldAskToCreateOrUpdateRowInventario = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
@ -418,6 +419,15 @@ public class DBSettingsModel {
return this; return this;
} }
public boolean isFlagShouldAskToCreateOrUpdateRowInventario() {
return flagShouldAskToCreateOrUpdateRowInventario;
}
public DBSettingsModel setFlagShouldAskToCreateOrUpdateRowInventario(boolean flagShouldAskToCreateOrUpdateRowInventario) {
this.flagShouldAskToCreateOrUpdateRowInventario = flagShouldAskToCreateOrUpdateRowInventario;
return this;
}
public boolean isFlagConsentiFuoriPianoLogistico() { public boolean isFlagConsentiFuoriPianoLogistico() {
return flagConsentiFuoriPianoLogistico; return flagConsentiFuoriPianoLogistico;
} }

View File

@ -363,6 +363,10 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("INVENTARIO") .setSection("INVENTARIO")
.setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS")); .setKeySection("FLAG_CAN_ADD_UNKNOWN_ITEMS"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("INVENTARIO")
.setKeySection("FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW"));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> { mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> {
@ -398,6 +402,7 @@ public class SettingsManager {
dbSettingsModelIstance.setGroupShippingByCommodityGroup(getValueFromList(list, "SPEDIZIONE", "FLAG_GROUP_BY_GRP_MERC", Boolean.class, Boolean.FALSE)); dbSettingsModelIstance.setGroupShippingByCommodityGroup(getValueFromList(list, "SPEDIZIONE", "FLAG_GROUP_BY_GRP_MERC", Boolean.class, Boolean.FALSE));
dbSettingsModelIstance.setFlagCanCreateInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_CREATE_INVENTARIO", Boolean.class, Boolean.TRUE)); 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.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));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null) if (notePerdita != null)
@ -435,7 +440,7 @@ public class SettingsManager {
} else if (clazz == Integer.class && value.getValue() != null) { } else if (clazz == Integer.class && value.getValue() != null) {
return clazz.cast(Integer.parseInt(value.getValue())); return clazz.cast(Integer.parseInt(value.getValue()));
} }
} else { } else if(defaultValue == null) {
if (clazz == Boolean.class) { if (clazz == Boolean.class) {
return clazz.cast(Boolean.FALSE); return clazz.cast(Boolean.FALSE);
} else if (clazz == Integer.class) { } else if (clazz == Integer.class) {

View File

@ -36,6 +36,8 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.ActivityPickingInventarioBinding; import it.integry.integrywmsnative.databinding.ActivityPickingInventarioBinding;
import it.integry.integrywmsnative.databinding.ActivityPickingInventarioListItemBinding; import it.integry.integrywmsnative.databinding.ActivityPickingInventarioListItemBinding;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_actions.BottomSheetInventarioRowActionsView; import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_actions.BottomSheetInventarioRowActionsView;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
@ -99,7 +101,8 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
mViewModel.init( mViewModel.init(
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO)), DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO)),
DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS)), DataCache.retrieveItem(getIntent().getStringExtra(KEY_INVENTARIO_ARTS)),
SettingsManager.iDB().isFlagCanAddUnknownItemsInventario()); SettingsManager.iDB().isFlagCanAddUnknownItemsInventario(),
SettingsManager.iDB().isFlagShouldAskToCreateOrUpdateRowInventario());
initToolbar(); initToolbar();
initBarcodeReader(); initBarcodeReader();
@ -236,6 +239,36 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
.show(getSupportFragmentManager(), "tag"); .show(getSupportFragmentManager(), "tag");
} }
@Override
public void onItemAlreadyFound(InventarioArtDTO matchedArt, List<InventarioRowRoomDTO> alreadyScannedItems) {
final List<DialogSelectDocRowsItemListModel<Object>> dialogSelectDocRowsItemListModels = Stream.of(alreadyScannedItems)
.map(x -> new DialogSelectDocRowsItemListModel<>()
.setBarcode(x.getScanCodBarre())
.setCodMart(x.getCodMart())
.setDescrizione(x.getDescrizione())
.setQtaOrd(x.getQta())
.setUntMisOrd(x.getUntMis())
.setNew(false)
.setOriginalModel(x))
.toList();
dialogSelectDocRowsItemListModels.add(new DialogSelectDocRowsItemListModel<>()
.setCodMart(matchedArt.getCodMart())
.setDescrizione(matchedArt.getDescrizione())
.setQtaOrd(BigDecimal.ZERO)
.setUntMisOrd(matchedArt.getUntMis())
.setNew(true));
DialogSelectDocRowsView.newInstance(dialogSelectDocRowsItemListModels, data -> {
if(data.isNew())
this.mViewModel.dispatchRowInsert(null, matchedArt, null);
else
this.mViewModel.dispatchRowEdit(matchedArt.toMtbAart(), (InventarioRowRoomDTO) data.getOriginalModel());
}, () -> {
}).show(this.getSupportFragmentManager(), "DialogSelectDocRowsView");
}
public void showAvailableArts() { public void showAvailableArts() {
var listaMtbAart = Stream.of(this.mViewModel.getAvailableArts()) var listaMtbAart = Stream.of(this.mViewModel.getAvailableArts())
.map(InventarioArtDTO::toMtbAart) .map(InventarioArtDTO::toMtbAart)

View File

@ -4,6 +4,8 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModel;
import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
@ -37,6 +39,7 @@ public class PickingInventarioViewModel extends ViewModel {
private final InventarioRowRepository inventarioRowRepository; private final InventarioRowRepository inventarioRowRepository;
private boolean canAddUnknownItems; private boolean canAddUnknownItems;
private boolean flagShouldAskToCreateOrUpdateRowInventario;
public MutableLiveData<InventarioRoomDTO> currentInventario = new MutableLiveData<>(); public MutableLiveData<InventarioRoomDTO> currentInventario = new MutableLiveData<>();
public LiveData<List<InventarioRowRoomDTO>> currentInventarioRows = new MutableLiveData<>(); public LiveData<List<InventarioRowRoomDTO>> currentInventarioRows = new MutableLiveData<>();
@ -51,8 +54,9 @@ public class PickingInventarioViewModel extends ViewModel {
this.inventarioRowRepository = inventarioRowRepository; this.inventarioRowRepository = inventarioRowRepository;
} }
public void init(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> inventarioArts, boolean canAddUnknownItems) { public void init(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> inventarioArts, boolean canAddUnknownItems, boolean flagShouldAskToCreateOrUpdateRowInventario) {
this.canAddUnknownItems = canAddUnknownItems; this.canAddUnknownItems = canAddUnknownItems;
this.flagShouldAskToCreateOrUpdateRowInventario = flagShouldAskToCreateOrUpdateRowInventario;
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
@ -168,15 +172,32 @@ public class PickingInventarioViewModel extends ViewModel {
} }
if (matchedArt != null) { if (matchedArt != null) {
var alreadyScannedItems = searchArtInAlreadyScannedItems(matchedArt);
if (alreadyScannedItems == null || alreadyScannedItems.isEmpty() || !flagShouldAskToCreateOrUpdateRowInventario)
this.dispatchRowInsert(barcodeProd, matchedArt, ean128Model); this.dispatchRowInsert(barcodeProd, matchedArt, ean128Model);
else {
this.sendOnItemAlreadyFound(matchedArt, alreadyScannedItems);
}
onComplete.run(); onComplete.run();
} else } else
this.sendError(new NoResultFromBarcodeException(barcodeProd)); this.sendError(new NoResultFromBarcodeException(barcodeProd));
}
private List<InventarioRowRoomDTO> searchArtInAlreadyScannedItems(InventarioArtDTO inventarioArtDTO) {
final List<InventarioRowRoomDTO> inventarioRows = this.currentInventarioRows.getValue();
if (inventarioRows == null) return null;
return Stream.of(inventarioRows)
.filter(x -> x.getCodMart().equalsIgnoreCase(inventarioArtDTO.getCodMart()))
.toList();
} }
private void dispatchRowInsert(String barcode, InventarioArtDTO inventarioArtDTO, Ean128Model ean128Model) { public void dispatchRowInsert(String barcode, InventarioArtDTO inventarioArtDTO, Ean128Model ean128Model) {
var mtbAart = inventarioArtDTO.toMtbAart(); var mtbAart = inventarioArtDTO.toMtbAart();
mtbAart.setFlagTracciabilita("N"); mtbAart.setFlagTracciabilita("N");
@ -290,7 +311,7 @@ public class PickingInventarioViewModel extends ViewModel {
} }
} }
private void dispatchRowEdit(MtbAart mtbAart, InventarioRowRoomDTO inventarioRowRoomDTO) { public void dispatchRowEdit(MtbAart mtbAart, InventarioRowRoomDTO inventarioRowRoomDTO) {
final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
.setMtbAart(mtbAart); .setMtbAart(mtbAart);
@ -393,6 +414,11 @@ public class PickingInventarioViewModel extends ViewModel {
onComplete); onComplete);
} }
private void sendOnItemAlreadyFound(InventarioArtDTO matchedArt, List<InventarioRowRoomDTO> alreadyScannedItems) {
if(this.mListener != null)
this.mListener.onItemAlreadyFound(matchedArt, alreadyScannedItems);
}
public PickingInventarioViewModel setListener(Listener listener) { public PickingInventarioViewModel setListener(Listener listener) {
this.mListener = listener; this.mListener = listener;
return this; return this;
@ -419,5 +445,7 @@ public class PickingInventarioViewModel extends ViewModel {
RunnableArgss<PickedQuantityDTO, Boolean> onComplete); RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
void onItemAlreadyFound(InventarioArtDTO matchedArt, List<InventarioRowRoomDTO> alreadyScannedItems);
} }
} }