This commit is contained in:
Marco Elefante 2024-04-09 10:04:12 +02:00
parent 6edc1917e1
commit 95f765756c
10 changed files with 86 additions and 63 deletions

View File

@ -136,6 +136,14 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
return null; return null;
}); });
itemType.areContentsTheSame((oldObject, newObject) ->
oldObject.getCodMart().equalsIgnoreCase(newObject.getCodMart()) &&
oldObject.getNumOrd().equals(newObject.getNumOrd()) &&
oldObject.getDataOrd().equals(newObject.getDataOrd())
);
itemType.areItemSame((oldObject, newObject) -> oldObject == newObject);
new LiveAdapter(mItemsInventario) new LiveAdapter(mItemsInventario)
.map(ArtsInGiacenzaDTO.class, itemType) .map(ArtsInGiacenzaDTO.class, itemType)
.into(this.mBindings.inventarioList); .into(this.mBindings.inventarioList);
@ -199,10 +207,10 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
.setOnFilterApplied(mFilterViewModel::setPositionFilter) .setOnFilterApplied(mFilterViewModel::setPositionFilter)
.setPreselected( .setPreselected(
Stream.of(Objects.requireNonNull(mViewModel.getItemsInventario().getValue())) Stream.of(Objects.requireNonNull(mViewModel.getItemsInventario().getValue()))
.filter(mFilterViewModel.getCurrentPositionPredicate().get() == null ? .filter(mFilterViewModel.getCurrentPositionPredicate().get() == null ?
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentPositionPredicate().get())) x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentPositionPredicate().get()))
.map(ArtsInGiacenzaDTO::getPosizione) .map(ArtsInGiacenzaDTO::getPosizione)
.toList() .toList()
); );
} }
@ -213,6 +221,7 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
public void onInfoClick(ArtsInGiacenzaDTO item) { public void onInfoClick(ArtsInGiacenzaDTO item) {
try { try {
BarcodeManager.disable();
DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName()); DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName());
} catch (Exception e) { } catch (Exception e) {
UtilityExceptions.defaultException(this.getContext(), e); UtilityExceptions.defaultException(this.getContext(), e);

View File

@ -179,7 +179,24 @@ public class ProdRiposizionamentoDaProdViewModel {
Objects.equals(x.getNumOrd(), dtoList.get(0).getNumOrd()) && Objects.equals(x.getNumOrd(), dtoList.get(0).getNumOrd()) &&
Objects.equals(x.getDataOrd(), dtoList.get(0).getDataOrd()) Objects.equals(x.getDataOrd(), dtoList.get(0).getDataOrd())
) )
.findFirstOrElse(null); .findFirstOrElse(new StatoArtInventarioDTO());
MvwSitArtUdcDetInventario mvwInventario = mvwSitArtUdcDetInventario.get();
if (mvwInventario.getCodMart().equalsIgnoreCase(dtoList.get(0).getCodMart()) &&
Objects.equals(mvwInventario.getNumOrd(), dtoList.get(0).getNumOrd()) &&
Objects.equals(mvwInventario.getDataOrd(), dtoList.get(0).getDataOrd())) {
BigDecimal colliMag = statoArticolo.getColliMag();
Integer pedMag = statoArticolo.getPedMag();
BigDecimal qtaMag = statoArticolo.getQtaMag();
BigDecimal numCnf = mvwInventario.getNumCnf();
BigDecimal qtaCol = mvwInventario.getQtaCol();
statoArticolo.setColliMag(colliMag.add(numCnf));
statoArticolo.setQtaMag(qtaMag.add(qtaCol));
statoArticolo.setPedMag(pedMag + 1);
}
return new ArtsInGiacenzaDTO() return new ArtsInGiacenzaDTO()
.setCodMart(dtoList.get(0).getCodMart()) .setCodMart(dtoList.get(0).getCodMart())

View File

@ -10,13 +10,9 @@ import android.view.View;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.annimon.stream.Stream;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.ravikoradiya.liveadapter.LiveAdapter; import com.ravikoradiya.liveadapter.LiveAdapter;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.integrywmsnative.BR; import it.integry.integrywmsnative.BR;
@ -24,7 +20,6 @@ import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaBinding; import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaBinding;
import it.integry.integrywmsnative.databinding.DialogInfoGiacenzaSituazioneArticoloBinding;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO; import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO; import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.StatoArtInventarioDTO;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
@ -34,8 +29,7 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
DialogInfoGiacenzaViewModel mViewModel; DialogInfoGiacenzaViewModel mViewModel;
private DialogInfoGiacenzaBinding mBindings; private DialogInfoGiacenzaBinding mBindings;
private Context mContext; private final ArtsInGiacenzaDTO item;
private ArtsInGiacenzaDTO item;
public static DialogInfoGiacenzaView newInstance(ArtsInGiacenzaDTO item) { public static DialogInfoGiacenzaView newInstance(ArtsInGiacenzaDTO item) {
return new DialogInfoGiacenzaView(item); return new DialogInfoGiacenzaView(item);
@ -48,9 +42,9 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
@NonNull @NonNull
@Override @Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext(); Context mContext = requireContext();
mBindings = DialogInfoGiacenzaBinding.inflate(LayoutInflater.from(this.mContext), null, false); mBindings = DialogInfoGiacenzaBinding.inflate(LayoutInflater.from(mContext), null, false);
mBindings.setLifecycleOwner(this); mBindings.setLifecycleOwner(this);
MainApplication.appComponent MainApplication.appComponent
@ -60,7 +54,7 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
setCancelable(true); setCancelable(true);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext) var alertDialog = new MaterialAlertDialogBuilder(mContext)
.setView(mBindings.getRoot()) .setView(mBindings.getRoot())
.setNeutralButton(R.string.action_close, null) .setNeutralButton(R.string.action_close, null)
.setCancelable(isCancelable()) .setCancelable(isCancelable())
@ -86,17 +80,8 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
if (availableItems == null) if (availableItems == null)
return; return;
var listItem = Stream.of(availableItems)
.flatMap(x -> Stream.of(x.getMvwSitArtUdcDetInventarioDTO())
.map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario)
)
.toList();
List<StatoArtInventarioDTO> statoArticolo = null;
StatoArtInventarioDTO statoArtInventario = availableItems.getStatoArtInventario(); StatoArtInventarioDTO statoArtInventario = availableItems.getStatoArtInventario();
if (statoArtInventario != null) { if (statoArtInventario != null) {
statoArticolo = Stream.of(statoArtInventario).toList();
if (statoArtInventario.colliArrivoIsLessThenZero() && if (statoArtInventario.colliArrivoIsLessThenZero() &&
statoArtInventario.colliMagIsLessThenZero()) { statoArtInventario.colliMagIsLessThenZero()) {
this.mBindings.situazioneArticolo.setVisibility(View.GONE); this.mBindings.situazioneArticolo.setVisibility(View.GONE);
@ -105,11 +90,11 @@ public class DialogInfoGiacenzaView extends BaseDialogFragment {
this.mBindings.situazioneArticolo.setVisibility(View.GONE); this.mBindings.situazioneArticolo.setVisibility(View.GONE);
} }
new LiveAdapter(listItem, BR.item) new LiveAdapter(this.item.getSituazioneArticoloAvailableListItem(), BR.item)
.map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_giacenza_list_item) .map(DialogInfoSituazioneArticoloAvailableListItem.class, R.layout.dialog_info_giacenza_list_item)
.into(this.mBindings.availableList); .into(this.mBindings.availableList);
new LiveAdapter(statoArticolo, BR.item) new LiveAdapter(this.item.getStatoInventario(), BR.item)
.map(StatoArtInventarioDTO.class, R.layout.dialog_info_giacenza_situazione_articolo) .map(StatoArtInventarioDTO.class, R.layout.dialog_info_giacenza_situazione_articolo)
.into(this.mBindings.situazioneArticolo); .into(this.mBindings.situazioneArticolo);
} }

View File

@ -1,10 +1,13 @@
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto; package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto;
import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.ui.DialogInfoSituazioneArticoloAvailableListItem;
public class ArtsInGiacenzaDTO { public class ArtsInGiacenzaDTO {
@ -113,4 +116,16 @@ public class ArtsInGiacenzaDTO {
this.dataOrd = dataOrd; this.dataOrd = dataOrd;
return this; return this;
} }
public List<DialogInfoSituazioneArticoloAvailableListItem> getSituazioneArticoloAvailableListItem() {
return Stream.of(this)
.flatMap(x -> Stream.of(x.getMvwSitArtUdcDetInventarioDTO())
.map(DialogInfoSituazioneArticoloAvailableListItem::fromMvwSitArtUdcDetInventario)
)
.toList();
}
public List<StatoArtInventarioDTO> getStatoInventario(){
return Stream.of(this.statoArtInventario).toList();
}
} }

View File

@ -403,32 +403,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
String codMart = dialogInputQuantityV2DTO.getMtbAart().getCodMart(); String codMart = dialogInputQuantityV2DTO.getMtbAart().getCodMart();
String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato(); String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato();
if (flagStato.equalsIgnoreCase("I")) { checkIfItemIsActive(flagStato, codMart, () -> {
DialogSimpleMessageView.makeWarningDialog(
new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))),
null,
() -> {
if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
.setOnComplete((resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())
.setQtaCnf(resultDTO.getQtaCnf())
.setQtaTot(resultDTO.getQtaTot())
.setPartitaMag(resultDTO.getPartitaMag())
.setDataScad(resultDTO.getDataScad());
this.onLoadingStarted();
onComplete.run(pickedQuantityDTO, shouldCloseLU);
})
.setOnAbort(this::onLoadingEnded)
.show(requireActivity().getSupportFragmentManager(), "tag");
},
this::onLoadingEnded)
.show(getActivity().getSupportFragmentManager(), "tag");
} else {
this.onLoadingEnded();
if (!mDialogInputQuantityV2View.isVisible()) if (!mDialogInputQuantityV2View.isVisible())
mDialogInputQuantityV2View mDialogInputQuantityV2View
.setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO) .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
@ -440,13 +415,23 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
.setPartitaMag(resultDTO.getPartitaMag()) .setPartitaMag(resultDTO.getPartitaMag())
.setDataScad(resultDTO.getDataScad()); .setDataScad(resultDTO.getDataScad());
this.onLoadingStarted();
onComplete.run(pickedQuantityDTO, shouldCloseLU); onComplete.run(pickedQuantityDTO, shouldCloseLU);
}) })
.setOnAbort(this::onLoadingEnded)
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), "tag");
}, () -> {});
}
private void checkIfItemIsActive(String flagStato, String codMart, Runnable onContinue, Runnable onNegativeClick){
if (flagStato.equalsIgnoreCase("I")) {
DialogSimpleMessageView.makeWarningDialog(
new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))),
null,
onContinue,
onNegativeClick)
.show(getActivity().getSupportFragmentManager(), "tag");
} else {
onContinue.run();
} }
;
} }
@Override @Override

View File

@ -271,7 +271,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
this.mViewModel.validate(validated -> { this.mViewModel.validate(validated -> {
if (validated) { if (validated) {
this.mAbort = false; this.mAbort = false;
dismiss();this.onLoadingEnded(); dismiss();
this.mOnComplete.run(this.mViewModel.getResult(), true); this.mOnComplete.run(this.mViewModel.getResult(), true);
}else { }else {
this.onLoadingEnded(); this.onLoadingEnded();

View File

@ -485,7 +485,6 @@ public class DialogInputQuantityV2ViewModel {
} }
public void validate(RunnableArgs<Boolean> onValidated) { public void validate(RunnableArgs<Boolean> onValidated) {
this.sendOnLoadingStarted();
new Thread(() -> { new Thread(() -> {
if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) {
@ -611,7 +610,6 @@ public class DialogInputQuantityV2ViewModel {
} }
} }
this.sendOnLoadingEnded();
onValidated.run(true); onValidated.run(true);
}).start(); }).start();
} }

View File

@ -3,6 +3,7 @@ package it.integry.integrywmsnative.view.dialogs.scan_or_create_lu;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.exception.AlreadyAttachedDocumentToLUException; import it.integry.integrywmsnative.core.exception.AlreadyAttachedDocumentToLUException;
import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException; import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
@ -114,7 +115,20 @@ public class DialogScanOrCreateLUViewModel {
if (mtbColt == null) { if (mtbColt == null) {
if (mEnableCreation) { if (mEnableCreation) {
this.mColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(barcodeScanDTO, GestioneEnum.LAVORAZIONE, createdMtbColt -> { Integer customNumCollo = null;
try {
customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue());
} catch (Exception ex) {
this.sendError(ex);
}
var createUdcRequest = new CreateUDCRequestDTO()
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
.setNumCollo(customNumCollo)
.setSerCollo(CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE);
this.mColliLavorazioneRESTConsumer.createUDC(createUdcRequest, createdMtbColt -> {
onComplete.run(); onComplete.run();
this.sendOnLUOpened(createdMtbColt, true); this.sendOnLUOpened(createdMtbColt, true);
}, this::sendError); }, this::sendError);

View File

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

View File

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