Finish v1.34.05(389)

This commit is contained in:
Valerio Castellana 2023-07-19 13:14:23 +02:00
commit d63c80d6b7
65 changed files with 927 additions and 274 deletions

10
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<value>
<entry key="app">
<State />
</entry>
</value>
</component>
</project>

10
.idea/migrations.xml generated Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>

View File

@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 382 def appVersionCode = 389
def appVersionName = '1.33.11' def appVersionName = '1.34.05'
signingConfigs { signingConfigs {
release { release {

View File

@ -2,7 +2,6 @@ package it.integry.integrywmsnative;
import android.app.Application; import android.app.Application;
import android.os.Handler; import android.os.Handler;
import android.os.Looper;
import androidx.core.os.HandlerCompat; import androidx.core.os.HandlerCompat;
@ -72,7 +71,7 @@ public class MainApplicationModule {
@Provides @Provides
@Singleton @Singleton
public Handler providesMainThreadHandler() { public Handler providesMainThreadHandler() {
return HandlerCompat.createAsync(Looper.getMainLooper()); return HandlerCompat.createAsync(mApplication.getApplicationContext().getMainLooper());
} }
@Provides @Provides

View File

@ -21,6 +21,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.mapper.InventarioMapper; import it.integry.integrywmsnative.core.mapper.InventarioMapper;
import it.integry.integrywmsnative.core.model.MtbInvent; import it.integry.integrywmsnative.core.model.MtbInvent;
import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityLiveData; import it.integry.integrywmsnative.core.utility.UtilityLiveData;
public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioRoomDTO, InventarioMapper, InventarioLocalDataSource, InventarioRESTConsumer> { public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioRoomDTO, InventarioMapper, InventarioLocalDataSource, InventarioRESTConsumer> {
@ -66,12 +67,16 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioR
if (remoteData == null) remoteData = new ArrayList<>(); if (remoteData == null) remoteData = new ArrayList<>();
resolveFetch(remoteData, internalLiveData.getValue(), List<MtbInvent> finalRemoteData = remoteData;
resolveFetch(finalRemoteData, internalLiveData.getValue(),
(remoteItem, localItem) -> Objects.equals(remoteItem.getIdInventario(), localItem.getIdInventario()), (remoteItem, localItem) -> Objects.equals(remoteItem.getIdInventario(), localItem.getIdInventario()),
(remoteItem, localItem) -> { (remoteItem, localItem) -> {
remoteItem.setRemoteSyncDate(localItem.getRemoteSyncDate()); remoteItem.setRemoteSyncDate(localItem.getRemoteSyncDate());
remoteItem.setNew(false); remoteItem.setNew(false);
}, onComplete, onError); }, () -> handler.post(onComplete), ex -> handler.post(() -> onError.run(ex)),
SettingsManager.iDB().isFlagIsInventarioCacheEnabled());
} catch (Exception e) { } catch (Exception e) {
onError.run(e); onError.run(e);

View File

@ -35,7 +35,8 @@ public abstract class _BaseRepository<
RunnableArgssWithReturn<B, B, Boolean> keyComparator, RunnableArgssWithReturn<B, B, Boolean> keyComparator,
RunnableArgss<B, B> dataCopy, RunnableArgss<B, B> dataCopy,
Runnable onComplete, Runnable onComplete,
RunnableArgs<Exception> onError) { RunnableArgs<Exception> onError,
boolean isCacheEnabled) {
List<B> finalRemoteData = dataMapper.mapRestsToRooms(remoteData); List<B> finalRemoteData = dataMapper.mapRestsToRooms(remoteData);
if (localData == null) localData = new ArrayList<>(); if (localData == null) localData = new ArrayList<>();
@ -53,12 +54,14 @@ public abstract class _BaseRepository<
} }
var dataToUpdate = finalRemoteData.stream() var dataToUpdate = finalRemoteData.stream()
.filter(x -> x.getId() != null && finalLocalData.stream().noneMatch(x::equals)) .filter(x -> x.getId() != null && finalLocalData.stream().noneMatch(x::equals))
.collect(Collectors.toList()); .collect(Collectors.toList());
var dataToDelete = finalLocalData.stream() var dataToDelete = finalLocalData.stream()
.filter(x -> x.isSyncronized() && finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x))) .filter(x -> (!isCacheEnabled || x.isSyncronized()) && finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x)))
.collect(Collectors.toList()); .collect(Collectors.toList());
var dataToInsert = finalRemoteData.stream() var dataToInsert = finalRemoteData.stream()

View File

@ -49,7 +49,7 @@ public class BaseActivity extends AppCompatActivity {
private void openProgress() { private void openProgress() {
BarcodeManager.disable(); BarcodeManager.disable();
if (!progressOpened && !this.mCurrentProgress.isAdded()) { if (!progressOpened && !this.mCurrentProgress.isAdded() && !this.mCurrentProgress.isInLayout()) {
this.progressOpened = true; this.progressOpened = true;
runOnUiThread(() -> { runOnUiThread(() -> {
this.mCurrentProgress.show(getSupportFragmentManager(), "tag"); this.mCurrentProgress.show(getSupportFragmentManager(), "tag");

View File

@ -70,7 +70,7 @@ public class BaseDialogFragment extends DialogFragment implements DialogInterfac
} }
private void openProgress() { private void openProgress() {
if (!progressOpened && !this.mCurrentProgress.isAdded()) { if (!progressOpened && !this.mCurrentProgress.isAdded() && !this.mCurrentProgress.isInLayout()) {
this.progressOpened = true; this.progressOpened = true;
requireActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag"); this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag");

View File

@ -67,7 +67,7 @@ public abstract class BaseFragment extends Fragment {
private void openProgress() { private void openProgress() {
BarcodeManager.disable(); BarcodeManager.disable();
if (!progressOpened && !this.mCurrentProgress.isAdded()) { if (!progressOpened && !this.mCurrentProgress.isAdded() && !this.mCurrentProgress.isInLayout()) {
this.progressOpened = true; this.progressOpened = true;
executorService.execute(() -> { executorService.execute(() -> {
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag"); this.mCurrentProgress.show(requireActivity().getSupportFragmentManager(), "tag");

View File

@ -865,4 +865,262 @@ public class MtbAart extends EntityBase {
public MtbUntMis getFirstUntMis() { public MtbUntMis getFirstUntMis() {
return getMtbUntMis() != null && !getMtbUntMis().isEmpty() ? getMtbUntMis().get(0) : null; return getMtbUntMis() != null && !getMtbUntMis().isEmpty() ? getMtbUntMis().get(0) : null;
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MtbAart mtbAart = (MtbAart) o;
if (!getCodMart().equals(mtbAart.getCodMart())) return false;
if (getDescrizione() != null ? !getDescrizione().equals(mtbAart.getDescrizione()) : mtbAart.getDescrizione() != null)
return false;
if (getUntMis() != null ? !getUntMis().equals(mtbAart.getUntMis()) : mtbAart.getUntMis() != null)
return false;
if (getBarCode() != null ? !getBarCode().equals(mtbAart.getBarCode()) : mtbAart.getBarCode() != null)
return false;
if (getPesoKg() != null ? !getPesoKg().equals(mtbAart.getPesoKg()) : mtbAart.getPesoKg() != null)
return false;
if (getQtaCnf() != null ? !getQtaCnf().equals(mtbAart.getQtaCnf()) : mtbAart.getQtaCnf() != null)
return false;
if (getCodAliq() != null ? !getCodAliq().equals(mtbAart.getCodAliq()) : mtbAart.getCodAliq() != null)
return false;
if (getCodScoArt() != null ? !getCodScoArt().equals(mtbAart.getCodScoArt()) : mtbAart.getCodScoArt() != null)
return false;
if (getCodTcolUi() != null ? !getCodTcolUi().equals(mtbAart.getCodTcolUi()) : mtbAart.getCodTcolUi() != null)
return false;
if (getCodTcolUl() != null ? !getCodTcolUl().equals(mtbAart.getCodTcolUl()) : mtbAart.getCodTcolUl() != null)
return false;
if (getArticoloComposto() != null ? !getArticoloComposto().equals(mtbAart.getArticoloComposto()) : mtbAart.getArticoloComposto() != null)
return false;
if (getEsposizioneComp() != null ? !getEsposizioneComp().equals(mtbAart.getEsposizioneComp()) : mtbAart.getEsposizioneComp() != null)
return false;
if (getDescrizioneEstesa() != null ? !getDescrizioneEstesa().equals(mtbAart.getDescrizioneEstesa()) : mtbAart.getDescrizioneEstesa() != null)
return false;
if (getCodUltForn() != null ? !getCodUltForn().equals(mtbAart.getCodUltForn()) : mtbAart.getCodUltForn() != null)
return false;
if (getDataUltCar() != null ? !getDataUltCar().equals(mtbAart.getDataUltCar()) : mtbAart.getDataUltCar() != null)
return false;
if (getValUltCar() != null ? !getValUltCar().equals(mtbAart.getValUltCar()) : mtbAart.getValUltCar() != null)
return false;
if (getCodUltClie() != null ? !getCodUltClie().equals(mtbAart.getCodUltClie()) : mtbAart.getCodUltClie() != null)
return false;
if (getDataUltScar() != null ? !getDataUltScar().equals(mtbAart.getDataUltScar()) : mtbAart.getDataUltScar() != null)
return false;
if (getValUltScar() != null ? !getValUltScar().equals(mtbAart.getValUltScar()) : mtbAart.getValUltScar() != null)
return false;
if (getTipoCodice() != null ? !getTipoCodice().equals(mtbAart.getTipoCodice()) : mtbAart.getTipoCodice() != null)
return false;
if (getNote() != null ? !getNote().equals(mtbAart.getNote()) : mtbAart.getNote() != null)
return false;
if (getPosizione() != null ? !getPosizione().equals(mtbAart.getPosizione()) : mtbAart.getPosizione() != null)
return false;
if (getColliPedana() != null ? !getColliPedana().equals(mtbAart.getColliPedana()) : mtbAart.getColliPedana() != null)
return false;
if (getUntMis2() != null ? !getUntMis2().equals(mtbAart.getUntMis2()) : mtbAart.getUntMis2() != null)
return false;
if (getRapConv2() != null ? !getRapConv2().equals(mtbAart.getRapConv2()) : mtbAart.getRapConv2() != null)
return false;
if (getFlagInclListino() != null ? !getFlagInclListino().equals(mtbAart.getFlagInclListino()) : mtbAart.getFlagInclListino() != null)
return false;
if (getUntMis3() != null ? !getUntMis3().equals(mtbAart.getUntMis3()) : mtbAart.getUntMis3() != null)
return false;
if (getRapConv3() != null ? !getRapConv3().equals(mtbAart.getRapConv3()) : mtbAart.getRapConv3() != null)
return false;
if (getCodMartStat() != null ? !getCodMartStat().equals(mtbAart.getCodMartStat()) : mtbAart.getCodMartStat() != null)
return false;
if (getCodMcon() != null ? !getCodMcon().equals(mtbAart.getCodMcon()) : mtbAart.getCodMcon() != null)
return false;
if (getCodMgrp() != null ? !getCodMgrp().equals(mtbAart.getCodMgrp()) : mtbAart.getCodMgrp() != null)
return false;
if (getCodMsfa() != null ? !getCodMsfa().equals(mtbAart.getCodMsfa()) : mtbAart.getCodMsfa() != null)
return false;
if (getCodMsgr() != null ? !getCodMsgr().equals(mtbAart.getCodMsgr()) : mtbAart.getCodMsgr() != null)
return false;
if (getCodMstp() != null ? !getCodMstp().equals(mtbAart.getCodMstp()) : mtbAart.getCodMstp() != null)
return false;
if (getCodMtip() != null ? !getCodMtip().equals(mtbAart.getCodMtip()) : mtbAart.getCodMtip() != null)
return false;
if (getDescrizioneStat() != null ? !getDescrizioneStat().equals(mtbAart.getDescrizioneStat()) : mtbAart.getDescrizioneStat() != null)
return false;
if (getFlagStato() != null ? !getFlagStato().equals(mtbAart.getFlagStato()) : mtbAart.getFlagStato() != null)
return false;
if (getCambioDiviCar() != null ? !getCambioDiviCar().equals(mtbAart.getCambioDiviCar()) : mtbAart.getCambioDiviCar() != null)
return false;
if (getCambioDiviScar() != null ? !getCambioDiviScar().equals(mtbAart.getCambioDiviScar()) : mtbAart.getCambioDiviScar() != null)
return false;
if (getGgScadPartita() != null ? !getGgScadPartita().equals(mtbAart.getGgScadPartita()) : mtbAart.getGgScadPartita() != null)
return false;
if (getVolumeMc() != null ? !getVolumeMc().equals(mtbAart.getVolumeMc()) : mtbAart.getVolumeMc() != null)
return false;
if (getFlagEsponiPrz() != null ? !getFlagEsponiPrz().equals(mtbAart.getFlagEsponiPrz()) : mtbAart.getFlagEsponiPrz() != null)
return false;
if (getDataUltVar() != null ? !getDataUltVar().equals(mtbAart.getDataUltVar()) : mtbAart.getDataUltVar() != null)
return false;
if (getPercSfrido() != null ? !getPercSfrido().equals(mtbAart.getPercSfrido()) : mtbAart.getPercSfrido() != null)
return false;
if (getCodBarreImb() != null ? !getCodBarreImb().equals(mtbAart.getCodBarreImb()) : mtbAart.getCodBarreImb() != null)
return false;
if (getFlagCalcPrz() != null ? !getFlagCalcPrz().equals(mtbAart.getFlagCalcPrz()) : mtbAart.getFlagCalcPrz() != null)
return false;
if (getEsposizioneCompAcq() != null ? !getEsposizioneCompAcq().equals(mtbAart.getEsposizioneCompAcq()) : mtbAart.getEsposizioneCompAcq() != null)
return false;
if (getFlagCalcPrzAcq() != null ? !getFlagCalcPrzAcq().equals(mtbAart.getFlagCalcPrzAcq()) : mtbAart.getFlagCalcPrzAcq() != null)
return false;
if (getDiacod() != null ? !getDiacod().equals(mtbAart.getDiacod()) : mtbAart.getDiacod() != null)
return false;
if (getPlu() != null ? !getPlu().equals(mtbAart.getPlu()) : mtbAart.getPlu() != null)
return false;
if (getPartIvaProd() != null ? !getPartIvaProd().equals(mtbAart.getPartIvaProd()) : mtbAart.getPartIvaProd() != null)
return false;
if (getRagSocProd() != null ? !getRagSocProd().equals(mtbAart.getRagSocProd()) : mtbAart.getRagSocProd() != null)
return false;
if (getFlagRapConvVariabile() != null ? !getFlagRapConvVariabile().equals(mtbAart.getFlagRapConvVariabile()) : mtbAart.getFlagRapConvVariabile() != null)
return false;
if (getFlagMovArtMag() != null ? !getFlagMovArtMag().equals(mtbAart.getFlagMovArtMag()) : mtbAart.getFlagMovArtMag() != null)
return false;
if (getFlagTracciabilita() != null ? !getFlagTracciabilita().equals(mtbAart.getFlagTracciabilita()) : mtbAart.getFlagTracciabilita() != null)
return false;
if (getTaraKg() != null ? !getTaraKg().equals(mtbAart.getTaraKg()) : mtbAart.getTaraKg() != null)
return false;
if (getColliStrato() != null ? !getColliStrato().equals(mtbAart.getColliStrato()) : mtbAart.getColliStrato() != null)
return false;
if (getFlagQtaCnfFissa() != null ? !getFlagQtaCnfFissa().equals(mtbAart.getFlagQtaCnfFissa()) : mtbAart.getFlagQtaCnfFissa() != null)
return false;
if (getFlagColliPedanaFisso() != null ? !getFlagColliPedanaFisso().equals(mtbAart.getFlagColliPedanaFisso()) : mtbAart.getFlagColliPedanaFisso() != null)
return false;
if (getCodCconCosti() != null ? !getCodCconCosti().equals(mtbAart.getCodCconCosti()) : mtbAart.getCodCconCosti() != null)
return false;
if (getCodCconRicavi() != null ? !getCodCconRicavi().equals(mtbAart.getCodCconRicavi()) : mtbAart.getCodCconRicavi() != null)
return false;
if (getCodDgrpArt() != null ? !getCodDgrpArt().equals(mtbAart.getCodDgrpArt()) : mtbAart.getCodDgrpArt() != null)
return false;
if (getCodDiviCar() != null ? !getCodDiviCar().equals(mtbAart.getCodDiviCar()) : mtbAart.getCodDiviCar() != null)
return false;
if (getCodDiviScar() != null ? !getCodDiviScar().equals(mtbAart.getCodDiviScar()) : mtbAart.getCodDiviScar() != null)
return false;
if (getCodEcrCat() != null ? !getCodEcrCat().equals(mtbAart.getCodEcrCat()) : mtbAart.getCodEcrCat() != null)
return false;
if (getCodEcrMcat() != null ? !getCodEcrMcat().equals(mtbAart.getCodEcrMcat()) : mtbAart.getCodEcrMcat() != null)
return false;
if (getCodEcrRep() != null ? !getCodEcrRep().equals(mtbAart.getCodEcrRep()) : mtbAart.getCodEcrRep() != null)
return false;
if (getCodEcrStipo() != null ? !getCodEcrStipo().equals(mtbAart.getCodEcrStipo()) : mtbAart.getCodEcrStipo() != null)
return false;
if (getCodEcrTipo() != null ? !getCodEcrTipo().equals(mtbAart.getCodEcrTipo()) : mtbAart.getCodEcrTipo() != null)
return false;
if (getCodGrpBolla() != null ? !getCodGrpBolla().equals(mtbAart.getCodGrpBolla()) : mtbAart.getCodGrpBolla() != null)
return false;
if (getIngredienti() != null ? !getIngredienti().equals(mtbAart.getIngredienti()) : mtbAart.getIngredienti() != null)
return false;
if (getIdArtEqui() != null ? !getIdArtEqui().equals(mtbAart.getIdArtEqui()) : mtbAart.getIdArtEqui() != null)
return false;
if (getDescrCassa() != null ? !getDescrCassa().equals(mtbAart.getDescrCassa()) : mtbAart.getDescrCassa() != null)
return false;
if (getCodNcIntracee() != null ? !getCodNcIntracee().equals(mtbAart.getCodNcIntracee()) : mtbAart.getCodNcIntracee() != null)
return false;
if (getMarchio() != null ? !getMarchio().equals(mtbAart.getMarchio()) : mtbAart.getMarchio() != null)
return false;
if (getSezione() != null ? !getSezione().equals(mtbAart.getSezione()) : mtbAart.getSezione() != null)
return false;
if (getUntMisRifPeso() != mtbAart.getUntMisRifPeso()) return false;
if (getQtaEsistente() != null ? !getQtaEsistente().equals(mtbAart.getQtaEsistente()) : mtbAart.getQtaEsistente() != null)
return false;
if (getQtaImpegnata() != null ? !getQtaImpegnata().equals(mtbAart.getQtaImpegnata()) : mtbAart.getQtaImpegnata() != null)
return false;
if (getNumCnfEsistente() != null ? !getNumCnfEsistente().equals(mtbAart.getNumCnfEsistente()) : mtbAart.getNumCnfEsistente() != null)
return false;
if (getNumCnfImpegnata() != null ? !getNumCnfImpegnata().equals(mtbAart.getNumCnfImpegnata()) : mtbAart.getNumCnfImpegnata() != null)
return false;
return getMtbUntMis() != null ? getMtbUntMis().equals(mtbAart.getMtbUntMis()) : mtbAart.getMtbUntMis() == null;
}
@Override
public int hashCode() {
int result = getCodMart().hashCode();
result = 31 * result + (getDescrizione() != null ? getDescrizione().hashCode() : 0);
result = 31 * result + (getUntMis() != null ? getUntMis().hashCode() : 0);
result = 31 * result + (getBarCode() != null ? getBarCode().hashCode() : 0);
result = 31 * result + (getPesoKg() != null ? getPesoKg().hashCode() : 0);
result = 31 * result + (getQtaCnf() != null ? getQtaCnf().hashCode() : 0);
result = 31 * result + (getCodAliq() != null ? getCodAliq().hashCode() : 0);
result = 31 * result + (getCodScoArt() != null ? getCodScoArt().hashCode() : 0);
result = 31 * result + (getCodTcolUi() != null ? getCodTcolUi().hashCode() : 0);
result = 31 * result + (getCodTcolUl() != null ? getCodTcolUl().hashCode() : 0);
result = 31 * result + (getArticoloComposto() != null ? getArticoloComposto().hashCode() : 0);
result = 31 * result + (getEsposizioneComp() != null ? getEsposizioneComp().hashCode() : 0);
result = 31 * result + (getDescrizioneEstesa() != null ? getDescrizioneEstesa().hashCode() : 0);
result = 31 * result + (getCodUltForn() != null ? getCodUltForn().hashCode() : 0);
result = 31 * result + (getDataUltCar() != null ? getDataUltCar().hashCode() : 0);
result = 31 * result + (getValUltCar() != null ? getValUltCar().hashCode() : 0);
result = 31 * result + (getCodUltClie() != null ? getCodUltClie().hashCode() : 0);
result = 31 * result + (getDataUltScar() != null ? getDataUltScar().hashCode() : 0);
result = 31 * result + (getValUltScar() != null ? getValUltScar().hashCode() : 0);
result = 31 * result + (getTipoCodice() != null ? getTipoCodice().hashCode() : 0);
result = 31 * result + (getNote() != null ? getNote().hashCode() : 0);
result = 31 * result + (getPosizione() != null ? getPosizione().hashCode() : 0);
result = 31 * result + (getColliPedana() != null ? getColliPedana().hashCode() : 0);
result = 31 * result + (getUntMis2() != null ? getUntMis2().hashCode() : 0);
result = 31 * result + (getRapConv2() != null ? getRapConv2().hashCode() : 0);
result = 31 * result + (getFlagInclListino() != null ? getFlagInclListino().hashCode() : 0);
result = 31 * result + (getUntMis3() != null ? getUntMis3().hashCode() : 0);
result = 31 * result + (getRapConv3() != null ? getRapConv3().hashCode() : 0);
result = 31 * result + (getCodMartStat() != null ? getCodMartStat().hashCode() : 0);
result = 31 * result + (getCodMcon() != null ? getCodMcon().hashCode() : 0);
result = 31 * result + (getCodMgrp() != null ? getCodMgrp().hashCode() : 0);
result = 31 * result + (getCodMsfa() != null ? getCodMsfa().hashCode() : 0);
result = 31 * result + (getCodMsgr() != null ? getCodMsgr().hashCode() : 0);
result = 31 * result + (getCodMstp() != null ? getCodMstp().hashCode() : 0);
result = 31 * result + (getCodMtip() != null ? getCodMtip().hashCode() : 0);
result = 31 * result + (getDescrizioneStat() != null ? getDescrizioneStat().hashCode() : 0);
result = 31 * result + (getFlagStato() != null ? getFlagStato().hashCode() : 0);
result = 31 * result + (getCambioDiviCar() != null ? getCambioDiviCar().hashCode() : 0);
result = 31 * result + (getCambioDiviScar() != null ? getCambioDiviScar().hashCode() : 0);
result = 31 * result + (getGgScadPartita() != null ? getGgScadPartita().hashCode() : 0);
result = 31 * result + (getVolumeMc() != null ? getVolumeMc().hashCode() : 0);
result = 31 * result + (getFlagEsponiPrz() != null ? getFlagEsponiPrz().hashCode() : 0);
result = 31 * result + (getDataUltVar() != null ? getDataUltVar().hashCode() : 0);
result = 31 * result + (getPercSfrido() != null ? getPercSfrido().hashCode() : 0);
result = 31 * result + (getCodBarreImb() != null ? getCodBarreImb().hashCode() : 0);
result = 31 * result + (getFlagCalcPrz() != null ? getFlagCalcPrz().hashCode() : 0);
result = 31 * result + (getEsposizioneCompAcq() != null ? getEsposizioneCompAcq().hashCode() : 0);
result = 31 * result + (getFlagCalcPrzAcq() != null ? getFlagCalcPrzAcq().hashCode() : 0);
result = 31 * result + (getDiacod() != null ? getDiacod().hashCode() : 0);
result = 31 * result + (getPlu() != null ? getPlu().hashCode() : 0);
result = 31 * result + (getPartIvaProd() != null ? getPartIvaProd().hashCode() : 0);
result = 31 * result + (getRagSocProd() != null ? getRagSocProd().hashCode() : 0);
result = 31 * result + (getFlagRapConvVariabile() != null ? getFlagRapConvVariabile().hashCode() : 0);
result = 31 * result + (getFlagMovArtMag() != null ? getFlagMovArtMag().hashCode() : 0);
result = 31 * result + (getFlagTracciabilita() != null ? getFlagTracciabilita().hashCode() : 0);
result = 31 * result + (getTaraKg() != null ? getTaraKg().hashCode() : 0);
result = 31 * result + (getColliStrato() != null ? getColliStrato().hashCode() : 0);
result = 31 * result + (getFlagQtaCnfFissa() != null ? getFlagQtaCnfFissa().hashCode() : 0);
result = 31 * result + (getFlagColliPedanaFisso() != null ? getFlagColliPedanaFisso().hashCode() : 0);
result = 31 * result + (getCodCconCosti() != null ? getCodCconCosti().hashCode() : 0);
result = 31 * result + (getCodCconRicavi() != null ? getCodCconRicavi().hashCode() : 0);
result = 31 * result + (getCodDgrpArt() != null ? getCodDgrpArt().hashCode() : 0);
result = 31 * result + (getCodDiviCar() != null ? getCodDiviCar().hashCode() : 0);
result = 31 * result + (getCodDiviScar() != null ? getCodDiviScar().hashCode() : 0);
result = 31 * result + (getCodEcrCat() != null ? getCodEcrCat().hashCode() : 0);
result = 31 * result + (getCodEcrMcat() != null ? getCodEcrMcat().hashCode() : 0);
result = 31 * result + (getCodEcrRep() != null ? getCodEcrRep().hashCode() : 0);
result = 31 * result + (getCodEcrStipo() != null ? getCodEcrStipo().hashCode() : 0);
result = 31 * result + (getCodEcrTipo() != null ? getCodEcrTipo().hashCode() : 0);
result = 31 * result + (getCodGrpBolla() != null ? getCodGrpBolla().hashCode() : 0);
result = 31 * result + (getIngredienti() != null ? getIngredienti().hashCode() : 0);
result = 31 * result + (getIdArtEqui() != null ? getIdArtEqui().hashCode() : 0);
result = 31 * result + (getDescrCassa() != null ? getDescrCassa().hashCode() : 0);
result = 31 * result + (getCodNcIntracee() != null ? getCodNcIntracee().hashCode() : 0);
result = 31 * result + (getMarchio() != null ? getMarchio().hashCode() : 0);
result = 31 * result + (getSezione() != null ? getSezione().hashCode() : 0);
result = 31 * result + (getUntMisRifPeso() != null ? getUntMisRifPeso().hashCode() : 0);
result = 31 * result + (getQtaEsistente() != null ? getQtaEsistente().hashCode() : 0);
result = 31 * result + (getQtaImpegnata() != null ? getQtaImpegnata().hashCode() : 0);
result = 31 * result + (getNumCnfEsistente() != null ? getNumCnfEsistente().hashCode() : 0);
result = 31 * result + (getNumCnfImpegnata() != null ? getNumCnfImpegnata().hashCode() : 0);
result = 31 * result + (getMtbUntMis() != null ? getMtbUntMis().hashCode() : 0);
return result;
}
} }

View File

@ -1,15 +0,0 @@
package it.integry.integrywmsnative.core.model;
public class MtbAartWithFornitore extends MtbAart {
private String codArtFor;
public String getCodArtFor() {
return codArtFor;
}
public MtbAartWithFornitore setCodArtFor(String codArtFor) {
this.codArtFor = codArtFor;
return this;
}
}

View File

@ -1,6 +1,5 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
@ -19,6 +18,7 @@ import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO; import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCodMartRequestDTO;
import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.core.utility.UtilityQuery;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
@ -59,26 +59,28 @@ 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) var codMarts = Stream.of(codMartToFind)
.withoutNulls() .withoutNulls()
.distinct() .distinct().toList();
.collect(Collectors.joining(","));
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class); ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(joinedCods).enqueue(new Callback<>() { articoloRESTConsumer
@Override .getByCodMart(new RetrieveArticoloByCodMartRequestDTO()
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) { .setCodMarts(codMarts))
analyzeAnswer(response, "getByCodMart", (m) -> { .enqueue(new Callback<>() {
onComplete.run(response.body().getEntityList()); @Override
}, onFailed); public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
} analyzeAnswer(response, "getByCodMart", (m) -> {
onComplete.run(response.body().getEntityList());
}, onFailed);
}
@Override @Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });
} }
@ -103,22 +105,25 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
public void getByCodMart(String codMartToFind, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) { public void getByCodMart(String codMartToFind, RunnableArgs<MtbAart> onComplete, RunnableArgs<Exception> onFailed) {
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class); ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(codMartToFind).enqueue(new Callback<>() { articoloRESTConsumer.getByCodMart(
@Override new RetrieveArticoloByCodMartRequestDTO()
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) { .setCodMarts(Collections.singletonList(codMartToFind)))
analyzeAnswer(response, "getByCodMart", (m) -> { .enqueue(new Callback<>() {
if (response.body().getEntityList() != null && !response.body().getEntityList().isEmpty()) { @Override
onComplete.run(response.body().getEntityList().get(0)); public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
} else onComplete.run(null); 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); }, onFailed);
} }
@Override @Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });
} }

View File

@ -5,7 +5,9 @@ import java.util.List;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO; import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCodMartRequestDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query; import retrofit2.http.Query;
@ -16,8 +18,8 @@ public interface ArticoloRESTConsumerService {
@POST("SM2getArticoloByBarcode") @POST("SM2getArticoloByBarcode")
Call<ServiceRESTResponse<MtbAart>> getByBarcodeProd(@Query("barcode") String barcodeProd); Call<ServiceRESTResponse<MtbAart>> getByBarcodeProd(@Query("barcode") String barcodeProd);
@GET("SM2getArticoloByCodMart") @POST("wms/articolo/retrieveByCodMart")
Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Query("codMart") String barcodeProd); Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Body RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest);
@GET("getProductLotStatus") @GET("getProductLotStatus")
Call<ServiceRESTResponse<List<StatoArticoloDTO>>> getStatoPartita(@Query("codMart") String codMart, @Query("partitaMag") String partitaMag); Call<ServiceRESTResponse<List<StatoArticoloDTO>>> getStatoPartita(@Query("codMart") String codMart, @Query("partitaMag") String partitaMag);

View File

@ -58,7 +58,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public void saveCollo(MtbColt mtbColtToSave, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void saveCollo(MtbColt mtbColtToSave, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt mtbColtToSaveClone = (MtbColt) mtbColtToSave.clone(); MtbColt mtbColtToSaveClone = (MtbColt) mtbColtToSave.clone();
mtbColtToSave.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); mtbColtToSaveClone.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
mtbColtToSaveClone.setOnlyPkMaster(false);
mtbColtToSaveClone.setMtbColr(new ObservableArrayList<>()); mtbColtToSaveClone.setMtbColr(new ObservableArrayList<>());

View File

@ -70,7 +70,7 @@ public class InventarioRESTConsumer extends _BaseRESTConsumer {
var request = new InsertInventarioRequestDTO() var request = new InsertInventarioRequestDTO()
.setMtbInvent(inventarioToInsert); .setMtbInvent(inventarioToInsert);
var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 120); var inventarioRESTConsumerService = RESTBuilder.getService(InventarioRESTConsumerService.class, 300);
inventarioRESTConsumerService inventarioRESTConsumerService
.insert(inventarioToInsert.getIdInventario(), request) .insert(inventarioToInsert.getIdInventario(), request)
.enqueue(new Callback<>() { .enqueue(new Callback<>() {

View File

@ -313,7 +313,7 @@ public class Ean128Model {
public String InternalPart; public String InternalPart;
///<summary>Informazioni interne</summary> ///<summary>Informazioni interne</summary>
public String Internal1; public String Internal1; //USED FOR COD_MART
///<summary>Informazioni interne</summary> ///<summary>Informazioni interne</summary>
public String Internal2; public String Internal2;

View File

@ -0,0 +1,17 @@
package it.integry.integrywmsnative.core.rest.model.articolo;
import java.util.List;
public class RetrieveArticoloByCodMartRequestDTO {
private List<String> codMarts;
public List<String> getCodMarts() {
return codMarts;
}
public RetrieveArticoloByCodMartRequestDTO setCodMarts(List<String> codMarts) {
this.codMarts = codMarts;
return this;
}
}

View File

@ -61,6 +61,7 @@ public class DBSettingsModel {
private boolean flagShouldAskToCreateOrUpdateRowInventario = false; private boolean flagShouldAskToCreateOrUpdateRowInventario = false;
private String commessaMagazzino; private String commessaMagazzino;
private boolean flagGeneraDocumentoSpedizione = false; private boolean flagGeneraDocumentoSpedizione = false;
private boolean flagIsInventarioCacheEnabled = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
@ -476,4 +477,13 @@ public class DBSettingsModel {
this.flagGeneraDocumentoSpedizione = flagGeneraDocumentoSpedizione; this.flagGeneraDocumentoSpedizione = flagGeneraDocumentoSpedizione;
return this; return this;
} }
public boolean isFlagIsInventarioCacheEnabled() {
return flagIsInventarioCacheEnabled;
}
public DBSettingsModel setFlagIsInventarioCacheEnabled(boolean flagIsInventarioCacheEnabled) {
this.flagIsInventarioCacheEnabled = flagIsInventarioCacheEnabled;
return this;
}
} }

View File

@ -376,6 +376,10 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("INVENTARIO") .setSection("INVENTARIO")
.setKeySection("FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW")); .setKeySection("FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("INVENTARIO")
.setKeySection("ENABLE_OFFLINE_CACHE"));
stbGestSetupList.add(new StbGestSetup() stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SETUP") .setSection("SETUP")
@ -424,6 +428,7 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagShouldAskToCreateOrUpdateRowInventario(getValueFromList(list, "INVENTARIO", "FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW", Boolean.class, Boolean.FALSE)); 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)); dbSettingsModelIstance.setCommessaMagazzino(getValueFromList(list, "SETUP", "COMMESSA_MAGAZZINO", String.class, CommonConst.Config.COMMESSA_MAG));
dbSettingsModelIstance.setFlagGeneraDocumentoSpedizione(getValueFromList(list, "SPEDIZIONE", "GENERA_DOC", Boolean.class, Boolean.FALSE)); dbSettingsModelIstance.setFlagGeneraDocumentoSpedizione(getValueFromList(list, "SPEDIZIONE", "GENERA_DOC", Boolean.class, Boolean.FALSE));
dbSettingsModelIstance.setFlagIsInventarioCacheEnabled(getValueFromList(list, "INVENTARIO", "ENABLE_OFFLINE_CACHE", 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)

View File

@ -31,9 +31,9 @@ public class UtilityExceptions {
public static void defaultException(Context context, Exception ex, boolean sendEmail) { public static void defaultException(Context context, Exception ex, boolean sendEmail) {
if (ex.getMessage() != null) { if (ex.getMessage() != null) {
Logger.e(ex, Html.fromHtml(ex.getMessage()).toString()); Logger.e(ex, Html.fromHtml(ex.getMessage()).toString(), ex.getStackTrace());
} else { } else {
Logger.e(ex, "Errore"); Logger.e(ex, "Errore", ex.getStackTrace());
} }
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);

View File

@ -178,7 +178,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
v -> initBottomSheetDialogFilter(filterChipDTO)); v -> initBottomSheetDialogFilter(filterChipDTO));
switch (filterChipDTO.getID()) { switch (filterChipDTO.getID()) {
case AccettazionePickingBindings.COD_ART_FILTER_ID: case AccettazionePickingBindings.COD_ART_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentCodArtPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { mAppliedFilterViewModel.getCurrentCodArtPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override @Override
public void run() { public void run() {
@ -199,8 +199,8 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
} }
}); });
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentCodArtPredicate().set(null)); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentCodArtPredicate().set(null));
break; }
case AccettazionePickingBindings.DESCR_FILTER_ID: case AccettazionePickingBindings.DESCR_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override @Override
public void run() { public void run() {
@ -221,8 +221,8 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
} }
}); });
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentDescrPredicate().set(null)); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentDescrPredicate().set(null));
break; }
case AccettazionePickingBindings.POS_FILTER_ID: case AccettazionePickingBindings.POS_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentPosPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { mAppliedFilterViewModel.getCurrentPosPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override @Override
public void run() { public void run() {
@ -243,7 +243,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
} }
}); });
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentPosPredicate().set(null)); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentPosPredicate().set(null));
break; }
} }
this.mBindings.filterChipsGroup.addView(filterChipView); this.mBindings.filterChipsGroup.addView(filterChipView);
@ -262,43 +262,39 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
.getFilterLayoutView(); .getFilterLayoutView();
switch (filterChipDTO.getID()) { switch (filterChipDTO.getID()) {
case AccettazionePickingBindings.COD_ART_FILTER_ID: case AccettazionePickingBindings.COD_ART_FILTER_ID ->
((FilterCodArtLayoutView) filterLayoutView) ((FilterCodArtLayoutView) filterLayoutView)
.setAll(mAppliedFilterViewModel.getAllCodArts()) .setAll(mAppliedFilterViewModel.getAllCodArts())
.setAvailable(mAppliedFilterViewModel.getAvailableCodArts()) .setAvailable(mAppliedFilterViewModel.getAvailableCodArts())
.setOnFilterApplied(mAppliedFilterViewModel::setCodArtFilter) .setOnFilterApplied(mAppliedFilterViewModel::setCodArtFilter)
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue())) .setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.filter(mAppliedFilterViewModel.getCurrentCodArtPredicate().get() == null ? .filter(mAppliedFilterViewModel.getCurrentCodArtPredicate().get() == null ?
x -> false : x -> false :
mAppliedFilterViewModel.getCurrentCodArtPredicate().get()) mAppliedFilterViewModel.getCurrentCodArtPredicate().get())
.map(x -> x.getSitArtOrdDTO().getCodMart()) .map(x -> x.getSitArtOrdDTO().getCodMart())
.toList()); .toList());
break; case AccettazionePickingBindings.DESCR_FILTER_ID ->
case AccettazionePickingBindings.DESCR_FILTER_ID: ((FilterDescrLayoutView) filterLayoutView)
((FilterDescrLayoutView) filterLayoutView) .setAll(mAppliedFilterViewModel.getAllDescrs())
.setAll(mAppliedFilterViewModel.getAllDescrs()) .setAvailable(mAppliedFilterViewModel.getAvailableDescrs())
.setAvailable(mAppliedFilterViewModel.getAvailableDescrs()) .setOnFilterApplied(mAppliedFilterViewModel::setDescrFilter)
.setOnFilterApplied(mAppliedFilterViewModel::setDescrFilter) .setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue())) .filter(mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null ?
.filter(mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null ? x -> false :
x -> false : mAppliedFilterViewModel.getCurrentDescrPredicate().get())
mAppliedFilterViewModel.getCurrentDescrPredicate().get()) .map(x -> x.getSitArtOrdDTO().getDescrizioneEstesaArt())
.map(x -> x.getSitArtOrdDTO().getDescrizioneEstesaArt()) .toList());
.toList()); case AccettazionePickingBindings.POS_FILTER_ID ->
break; ((FilterPosizioneLayoutView) filterLayoutView)
case AccettazionePickingBindings.POS_FILTER_ID: .setAll(mAppliedFilterViewModel.getAllPos())
((FilterPosizioneLayoutView) filterLayoutView) .setAvailable(mAppliedFilterViewModel.getAvailablePos())
.setAll(mAppliedFilterViewModel.getAllPos()) .setOnFilterApplied(mAppliedFilterViewModel::setPosFilter)
.setAvailable(mAppliedFilterViewModel.getAvailablePos()) .setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue()))
.setOnFilterApplied(mAppliedFilterViewModel::setPosFilter) .filter(mAppliedFilterViewModel.getCurrentPosPredicate().get() == null ?
.setPreselected(Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue())) x -> false :
.filter(mAppliedFilterViewModel.getCurrentPosPredicate().get() == null ? mAppliedFilterViewModel.getCurrentPosPredicate().get())
x -> false : .map(x -> x.getMtbAart().getPosizione())
mAppliedFilterViewModel.getCurrentPosPredicate().get()) .toList());
.map(x -> x.getMtbAart().getPosizione())
.toList());
break;
} }
if (!filterLayoutView.isAdded()) if (!filterLayoutView.isAdded())
@ -373,9 +369,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
} }
private void refreshList() { private void refreshList() {
//this.onLoadingStarted();
//new Thread(() -> {
runOnUiThread(() -> { runOnUiThread(() -> {
List<PickingObjectDTO> tmpList; List<PickingObjectDTO> tmpList;
@ -393,7 +386,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
this.mAccettazioneMutableData.addAll(list); this.mAccettazioneMutableData.addAll(list);
this.noItemsToPick.set(!isThereAnyItemToPick(tmpList)); this.noItemsToPick.set(!isThereAnyItemToPick(tmpList));
//this.onLoadingEnded();
}); });
} }
@ -402,21 +394,11 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
.filter(x -> !x.isHidden() && UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaDaEvadere(), BigDecimal.ZERO)) .filter(x -> !x.isHidden() && UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaDaEvadere(), BigDecimal.ZERO))
.toList(); .toList();
List<AccettazioneListModel> sortedList = null; return switch (mCurrentOrderBy) {
case COD_ART_FOR -> convertDataModelToListModel__CodArtForn(tmpList);
switch (mCurrentOrderBy) { case DESCR_ART -> convertDataModelToListModel__DescrArt(tmpList);
case COD_ART_FOR: case RAG_SOC_COM -> convertDataModelToListModel__RagSocCom(tmpList);
sortedList = convertDataModelToListModel__CodArtForn(tmpList); };
break;
case DESCR_ART:
sortedList = convertDataModelToListModel__DescrArt(tmpList);
break;
case RAG_SOC_COM:
sortedList = convertDataModelToListModel__RagSocCom(tmpList);
break;
}
return sortedList;
} }
private List<AccettazioneListModel> convertDataModelToListModel__CodArtForn(List<PickingObjectDTO> dataList) { private List<AccettazioneListModel> convertDataModelToListModel__CodArtForn(List<PickingObjectDTO> dataList) {

View File

@ -383,7 +383,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
} }
new DialogAvailableItemsView(listaMtbAart) new DialogAvailableItemsView(listaMtbAart, null)
.show(getSupportFragmentManager(), "DialogAvailableInventarioItemsView"); .show(getSupportFragmentManager(), "DialogAvailableInventarioItemsView");
} }

View File

@ -44,6 +44,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel; import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemListModel;
import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemsView; import it.integry.integrywmsnative.view.dialogs.available_items.DialogAvailableItemsView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
@ -135,6 +136,9 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
if (menuItem.getItemId() == R.id.export) { if (menuItem.getItemId() == R.id.export) {
requestExportConfirm(); requestExportConfirm();
return true; return true;
} else if (menuItem.getItemId() == R.id.search_art) {
manualSearch();
return true;
} }
return false; return false;
@ -204,6 +208,18 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
.show(getSupportFragmentManager(), "tag"); .show(getSupportFragmentManager(), "tag");
} }
public void manualSearch() {
BarcodeManager.disable();
DialogSimpleInputHelper.makeInputDialog(this,
"Ricerca articolo",
null,
"Cod articolo / Barcode",
barcodeProd ->
this.mViewModel.loadArticoloByCodMartOrBarcode(barcodeProd, BarcodeManager::enable),
BarcodeManager::enable)
.show();
}
@Override @Override
public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, boolean canOverflowOrderQuantity, boolean canPartitaMagBeChanged, boolean canLUBeClosed, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) { public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, boolean canOverflowOrderQuantity, boolean canPartitaMagBeChanged, boolean canLUBeClosed, RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
@ -283,7 +299,7 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
} }
new DialogAvailableItemsView(listaMtbAart) new DialogAvailableItemsView(listaMtbAart, mtbAartClicked -> this.mViewModel.loadArticoloByMtbAart(mtbAartClicked, null))
.show(getSupportFragmentManager(), "DialogAvailableInventarioItemsView"); .show(getSupportFragmentManager(), "DialogAvailableInventarioItemsView");
} }
} }

View File

@ -4,13 +4,16 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository; import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRowRepository; import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRowRepository;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
@Module(subcomponents = PickingInventarioComponent.class) @Module(subcomponents = PickingInventarioComponent.class)
public class PickingInventarioModule { public class PickingInventarioModule {
@Provides @Provides
PickingInventarioViewModel providesPickingInventarioViewModel(InventarioRepository inventarioRepository, InventarioRowRepository inventarioRowRepository) { PickingInventarioViewModel providesPickingInventarioViewModel(InventarioRepository inventarioRepository,
return new PickingInventarioViewModel(inventarioRepository, inventarioRowRepository); InventarioRowRepository inventarioRowRepository,
BarcodeRESTConsumer barcodeRESTConsumer) {
return new PickingInventarioViewModel(inventarioRepository, inventarioRowRepository, barcodeRESTConsumer);
} }
} }

View File

@ -17,10 +17,12 @@ import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDT
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository; import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRowRepository; import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRowRepository;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.exception.NoResultFromCodMartException;
import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.inventario.InventarioArtDTO; import it.integry.integrywmsnative.core.rest.model.inventario.InventarioArtDTO;
@ -28,6 +30,7 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode;
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.UtilityLiveData; import it.integry.integrywmsnative.core.utility.UtilityLiveData;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
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;
@ -35,21 +38,22 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
public class PickingInventarioViewModel extends ViewModel { public class PickingInventarioViewModel extends ViewModel {
private final BarcodeRESTConsumer barcodeRESTConsumer;
private final InventarioRepository inventarioRepository; private final InventarioRepository inventarioRepository;
private final InventarioRowRepository inventarioRowRepository; private final InventarioRowRepository inventarioRowRepository;
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<>();
private boolean canAddUnknownItems;
private boolean flagShouldAskToCreateOrUpdateRowInventario;
private List<InventarioArtDTO> availableInventarioArts; private List<InventarioArtDTO> availableInventarioArts;
private Listener mListener; private Listener mListener;
public PickingInventarioViewModel(InventarioRepository inventarioRepository, InventarioRowRepository inventarioRowRepository) { public PickingInventarioViewModel(InventarioRepository inventarioRepository,
InventarioRowRepository inventarioRowRepository,
BarcodeRESTConsumer barcodeRESTConsumer) {
this.inventarioRepository = inventarioRepository; this.inventarioRepository = inventarioRepository;
this.inventarioRowRepository = inventarioRowRepository; this.inventarioRowRepository = inventarioRowRepository;
this.barcodeRESTConsumer = barcodeRESTConsumer;
} }
public void init(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> inventarioArts, boolean canAddUnknownItems, boolean flagShouldAskToCreateOrUpdateRowInventario) { public void init(InventarioRoomDTO inventarioRoomDTO, List<InventarioArtDTO> inventarioArts, boolean canAddUnknownItems, boolean flagShouldAskToCreateOrUpdateRowInventario) {
@ -87,47 +91,34 @@ public class PickingInventarioViewModel extends ViewModel {
//Cerco tramite etichetta ean peso //Cerco tramite etichetta ean peso
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
} else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
} else { } else {
this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete); this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
} }
} }
public void updateRow(InventarioRowRoomDTO itemToUpdate) { public void loadArticoloByCodMartOrBarcode(String codMart, Runnable onComplete) {
var barcodeList = new ArrayList<String>(); var matchedArt = Stream.of(this.availableInventarioArts)
barcodeList.add(itemToUpdate.getScanCodBarre()); .filter(x -> x.getCodMart().equalsIgnoreCase(codMart) ||
x.getBarcode().contains(codMart))
var matchedArt = availableInventarioArts.stream().filter(x -> itemToUpdate.getCodMart() != null && x.getCodMart().contains(itemToUpdate.getCodMart())).findFirst().orElse(null); .findFirst()
.orElse(null);
MtbAart articolo;
if (canAddUnknownItems && matchedArt == null) {
matchedArt = new InventarioArtDTO().setBarcode(barcodeList).setFlagQtaCnfFissa(true).setPlu(false).setUntMis(itemToUpdate.getUntMis()).setQtaCnf(itemToUpdate.getQtaConf());
}
if (matchedArt != null) {
articolo = matchedArt.toMtbAart().setFlagTracciabilita("N");
dispatchRowEdit(articolo, itemToUpdate);
} else this.sendError(new NoResultFromBarcodeException(itemToUpdate.getScanCodBarre()));
}
public void deleteRow(InventarioRowRoomDTO itemToDelete) {
this.inventarioRowRepository.delete(itemToDelete, () -> {
}, this::sendError);
}
public void exportAll(Runnable onComplete) { if (matchedArt == null) {
if (this.currentInventarioRows.getValue().isEmpty()) { this.sendError(new NoResultFromCodMartException(codMart));
this.sendError(new Exception("Impossibile esportare un inventario senza righe"));
return; return;
} }
this.sendOnLoadingStarted();
currentInventario.getValue().setInventarioRowList(this.currentInventarioRows.getValue());
this.inventarioRepository.export(currentInventario.getValue(), () -> { loadArticolo(matchedArt.getBarcode().get(0), null, onComplete);
this.sendOnLoadingEnded(); }
onComplete.run();
}, this::sendError); public void loadArticoloByMtbAart(MtbAart mtbAart, Runnable onComplete) {
loadArticolo(mtbAart.getBarCode(), null, onComplete);
} }
@ -140,16 +131,49 @@ public class PickingInventarioViewModel extends ViewModel {
} }
} }
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
barcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
String barcodeProd = null;
String codMart = null;
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
barcodeProd = ean128Model.Content;
if (!UtilityString.isNullOrEmpty(ean128Model.Internal1))
codMart = ean128Model.Internal1;
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
this.loadArticolo(barcodeProd, ean128Model, onComplete);
} else if (!UtilityString.isNullOrEmpty(codMart)) {
this.loadArticoloByCodMartOrBarcode(codMart, onComplete);
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
onComplete.run();
}
}, this::sendError);
}
private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Runnable onComplete) { private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Runnable onComplete) {
var barcodeList = new ArrayList<String>(); var barcodeList = new ArrayList<String>();
barcodeList.add(barcodeProd); barcodeList.add(barcodeProd);
var matchedArt = availableInventarioArts.stream().filter(x -> x.getBarcode().contains(barcodeProd)).findFirst().orElse(null); var matchedArt = availableInventarioArts.stream().filter(x -> x.getBarcode().contains(barcodeProd))
.findFirst()
.orElse(null);
if (canAddUnknownItems && matchedArt == null) { if (canAddUnknownItems && matchedArt == null) {
matchedArt = new InventarioArtDTO().setBarcode(barcodeList).setFlagQtaCnfFissa(true).setPlu(false).setUntMis("PZ").setQtaCnf(BigDecimal.ONE); matchedArt = new InventarioArtDTO()
.setBarcode(barcodeList)
.setFlagQtaCnfFissa(true)
.setPlu(false)
.setUntMis("PZ")
.setQtaCnf(BigDecimal.ONE);
} }
if (matchedArt != null) { if (matchedArt != null) {
@ -162,7 +186,7 @@ public class PickingInventarioViewModel extends ViewModel {
this.sendOnItemAlreadyFound(matchedArt, alreadyScannedItems); this.sendOnItemAlreadyFound(matchedArt, alreadyScannedItems);
} }
onComplete.run(); if(onComplete != null) onComplete.run();
} else this.sendError(new NoResultFromBarcodeException(barcodeProd)); } else this.sendError(new NoResultFromBarcodeException(barcodeProd));
} }
@ -306,6 +330,47 @@ public class PickingInventarioViewModel extends ViewModel {
}, this::sendError); }, this::sendError);
} }
public void updateRow(InventarioRowRoomDTO itemToUpdate) {
var barcodeList = new ArrayList<String>();
barcodeList.add(itemToUpdate.getScanCodBarre());
var matchedArt = availableInventarioArts.stream()
.filter(x -> itemToUpdate.getCodMart() != null && x.getCodMart().contains(itemToUpdate.getCodMart()))
.findFirst()
.orElse(null);
MtbAart articolo;
if (canAddUnknownItems && matchedArt == null) {
matchedArt = new InventarioArtDTO().setBarcode(barcodeList).setFlagQtaCnfFissa(true).setPlu(false).setUntMis(itemToUpdate.getUntMis()).setQtaCnf(itemToUpdate.getQtaConf());
}
if (matchedArt != null) {
articolo = matchedArt.toMtbAart().setFlagTracciabilita("N");
dispatchRowEdit(articolo, itemToUpdate);
} else this.sendError(new NoResultFromBarcodeException(itemToUpdate.getScanCodBarre()));
}
public void deleteRow(InventarioRowRoomDTO itemToDelete) {
this.inventarioRowRepository.delete(itemToDelete, () -> {
}, this::sendError);
}
public void exportAll(Runnable onComplete) {
if (this.currentInventarioRows.getValue().isEmpty()) {
this.sendError(new Exception("Impossibile esportare un inventario senza righe"));
return;
}
this.sendOnLoadingStarted();
currentInventario.getValue().setInventarioRowList(this.currentInventarioRows.getValue());
this.inventarioRepository.export(currentInventario.getValue(), () -> {
this.sendOnLoadingEnded();
onComplete.run();
}, this::sendError);
}
private void sendOnLoadingStarted() { private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted(); if (this.mListener != null) mListener.onLoadingStarted();

View File

@ -107,7 +107,7 @@ public class VenditaFiltroOrdiniViewModel {
if (dataConsegna == null) currentDataConsPredicate.set(null); if (dataConsegna == null) currentDataConsPredicate.set(null);
else { else {
currentDataConsPredicate.set(o -> DateUtils.isSameDay(o.getDataConsD(), dataConsegna)); currentDataConsPredicate.set(o -> o.getDataConsD() != null && DateUtils.isSameDay(o.getDataConsD(), dataConsegna));
} }
} }
@ -137,8 +137,7 @@ public class VenditaFiltroOrdiniViewModel {
if (mtbGrupList == null || mtbGrupList.isEmpty()) { if (mtbGrupList == null || mtbGrupList.isEmpty()) {
currentGruppoMercPredicate.set(null); currentGruppoMercPredicate.set(null);
this.selectedMtbGrup = new ArrayList<>(); this.selectedMtbGrup = new ArrayList<>();
} } else {
else {
this.selectedMtbGrup = mtbGrupList; this.selectedMtbGrup = mtbGrupList;
var mtbGrups = Stream.of(mtbGrupList).map(MtbGrup::getCodMgrp).toList(); var mtbGrups = Stream.of(mtbGrupList).map(MtbGrup::getCodMgrp).toList();
currentGruppoMercPredicate.set(o -> Stream.of(o.getAvailableClassMerc()) currentGruppoMercPredicate.set(o -> Stream.of(o.getAvailableClassMerc())
@ -693,6 +692,7 @@ public class VenditaFiltroOrdiniViewModel {
.sortBy(JtbComt::getCodJcom) .sortBy(JtbComt::getCodJcom)
.toList(); .toList();
} }
public List<JtbComt> getAvailableCommesse(List<JtbComt> commesseFullList) { public List<JtbComt> getAvailableCommesse(List<JtbComt> commesseFullList) {
if (currentIdViaggioPredicate.get() == null && if (currentIdViaggioPredicate.get() == null &&

View File

@ -172,14 +172,20 @@ public class ProdDettaglioLineaViewModel {
public void checkBarcodeAndStartOrdine(BarcodeScanDTO dto) { public void checkBarcodeAndStartOrdine(BarcodeScanDTO dto) {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
ProdLineStatusDTO prodLine = lineaProd.getValue(); ProdLineStatusDTO prodLine = lineaProd.getValue();
mBarcodeRESTConsumer.decodeEan128(dto, (ean128) -> { mBarcodeRESTConsumer.decodeEan128(dto, (ean128) -> {
String codMart = ean128.Content; String codMart = ean128.Internal1;
String partitaMag = ean128.BatchLot; String partitaMag = ean128.BatchLot;
if (!prodLine.isStarted()) { if(prodLine == null) {
this.sendError(new Exception("Impossibile leggere lo stato della linea"));
} else if (!prodLine.isStarted()) {
this.sendError(new Exception("Impossibile avviare una produzione su una linea ferma!")); this.sendError(new Exception("Impossibile avviare una produzione su una linea ferma!"));
} else if (UtilityString.isNullOrEmpty(prodLine.getListaOrd())) { } else if (UtilityString.isNullOrEmpty(prodLine.getListaOrd())) {
this.startProduction(codMart, partitaMag); this.startProduction(codMart, partitaMag);
} else { } else {
this.mListener.confirmOrderClose(() -> { this.mListener.confirmOrderClose(() -> {
this.startProduction(codMart, partitaMag); this.startProduction(codMart, partitaMag);

View File

@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
@ -11,6 +13,7 @@ import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.IOrdersLo
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneStatoEnum;
import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException; import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException;
public class ProdRientroMerceViewModel { public class ProdRientroMerceViewModel {
@ -32,7 +35,14 @@ public class ProdRientroMerceViewModel {
String codAnag = SettingsManager.iDB().getFilterFornitoreProd(); String codAnag = SettingsManager.iDB().getFilterFornitoreProd();
this.mMesRESTConsumer.getOrdiniLavorazione("I", null, codAnag, ordiniLavorazioneList -> { this.mMesRESTConsumer.getOrdiniLavorazione("I", null, codAnag, ordiniLavorazioneList -> {
this.mOrdiniLavorazioneAperti.postValue(ordiniLavorazioneList); List<OrdineLavorazioneDTO> filteredList = null;
if(ordiniLavorazioneList != null)
filteredList = Stream.of(ordiniLavorazioneList)
.filter(x -> x.getStatoEnum() != OrdineLavorazioneStatoEnum.PROGRAMMATO)
.toList();
this.mOrdiniLavorazioneAperti.postValue(filteredList);
this.sendOnOrdersLoadingEnded(); this.sendOnOrdersLoadingEnded();
}, ex -> this.sendError(new OrdersLoadException(ex))); }, ex -> this.sendError(new OrdersLoadException(ex)));
} }

View File

@ -183,7 +183,13 @@ public class RettificaGiacenzeViewModel {
mRettificaGiacenzeRESTConsumer.searchArtForn(codAlis, queryText, listaArts -> { mRettificaGiacenzeRESTConsumer.searchArtForn(codAlis, queryText, listaArts -> {
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
List<MtbAart> mtbAarts = Stream.of(listaArts).map(x -> (MtbAart) x).toList(); List<MtbAart> mtbAarts = null;
if (listaArts != null)
mtbAarts = Stream.of(listaArts)
.map(x -> (MtbAart) x.getMtbAart())
.toList();
dispatchArts(mtbAarts); dispatchArts(mtbAarts);
}, this::sendError); }, this::sendError);
} }

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.dto;
public class SearchArticoloByBarcodeOrCodMartRequestDTO {
private String codMartOrBarcode;
public String getCodMartOrBarcode() {
return codMartOrBarcode;
}
public SearchArticoloByBarcodeOrCodMartRequestDTO setCodMartOrBarcode(String codMartOrBarcode) {
this.codMartOrBarcode = codMartOrBarcode;
return this;
}
}

View File

@ -0,0 +1,60 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.dto;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.model.MtbAart;
public class SearchArticoloByBarcodeOrCodMartResponseDTO {
private MtbAart mtbAart;
private BigDecimal qtaEsistente;
private BigDecimal qtaImpegnata;
private BigDecimal numCnfEsistente;
private BigDecimal numCnfImpegnata;
public MtbAart getMtbAart() {
return mtbAart;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public BigDecimal getQtaEsistente() {
return qtaEsistente;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setQtaEsistente(BigDecimal qtaEsistente) {
this.qtaEsistente = qtaEsistente;
return this;
}
public BigDecimal getQtaImpegnata() {
return qtaImpegnata;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setQtaImpegnata(BigDecimal qtaImpegnata) {
this.qtaImpegnata = qtaImpegnata;
return this;
}
public BigDecimal getNumCnfEsistente() {
return numCnfEsistente;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setNumCnfEsistente(BigDecimal numCnfEsistente) {
this.numCnfEsistente = numCnfEsistente;
return this;
}
public BigDecimal getNumCnfImpegnata() {
return numCnfImpegnata;
}
public SearchArticoloByBarcodeOrCodMartResponseDTO setNumCnfImpegnata(BigDecimal numCnfImpegnata) {
this.numCnfImpegnata = numCnfImpegnata;
return this;
}
}

View File

@ -0,0 +1,27 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.dto;
public class SearchArticoloByCodArtFornOrDescrizioneRequestDTO {
private String codAlis;
private String codArtFornOrDescrizione;
public String getCodAlis() {
return codAlis;
}
public SearchArticoloByCodArtFornOrDescrizioneRequestDTO setCodAlis(String codAlis) {
this.codAlis = codAlis;
return this;
}
public String getCodArtFornOrDescrizione() {
return codArtFornOrDescrizione;
}
public SearchArticoloByCodArtFornOrDescrizioneRequestDTO setCodArtFornOrDescrizione(String codArtFornOrDescrizione) {
this.codArtFornOrDescrizione = codArtFornOrDescrizione;
return this;
}
}

View File

@ -0,0 +1,28 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.dto;
import it.integry.integrywmsnative.core.model.MtbAart;
public class SearchArticoloByCodArtFornOrDescrizioneResponseDTO {
private MtbAart mtbAart;
private String codArtFor;
public MtbAart getMtbAart() {
return mtbAart;
}
public SearchArticoloByCodArtFornOrDescrizioneResponseDTO setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public String getCodArtFor() {
return codArtFor;
}
public SearchArticoloByCodArtFornOrDescrizioneResponseDTO setCodArtFor(String codArtFor) {
this.codArtFor = codArtFor;
return this;
}
}

View File

@ -1,25 +1,28 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.rest; package it.integry.integrywmsnative.gest.rettifica_giacenze.rest;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken; 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.Collections;
import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.SaveDocFromPickingRequestDTO; import it.integry.integrywmsnative.core.rest.model.SaveDocFromPickingRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByBarcodeOrCodMartRequestDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByBarcodeOrCodMartResponseDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByCodArtFornOrDescrizioneRequestDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByCodArtFornOrDescrizioneResponseDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@ -45,49 +48,56 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
} }
public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<ArrayList<MtbAartWithFornitore>> onComplete, RunnableArgs<Exception> onFailed) { public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>> onComplete, RunnableArgs<Exception> onError) {
String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart, mtb_part " + final RettificaGiacenzeRESTConsumerService service = RESTBuilder.getService(RettificaGiacenzeRESTConsumerService.class);
" WHERE mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) + service.searchByCodArtFornOrDescrizione(new SearchArticoloByCodArtFornOrDescrizioneRequestDTO()
" AND mtb_lisa.cod_mart = mtb_aart.cod_mart " + .setCodAlis(codAlis)
" AND mtb_lisa.cod_mart = mtb_part.cod_mart " + .setCodArtFornOrDescrizione(codArtForOrDescr))
" AND mtb_part.cod_mdep = '" + SettingsManager.i().getUserSession().getDepo().getCodMdep() + "' " + .enqueue(new Callback<>() {
" AND (mtb_aart.descrizione_estesa LIKE '%" + codArtForOrDescr + "%' OR cod_art_for LIKE '%" + codArtForOrDescr + "%') " + @Override
" ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa"; public void onResponse(Call<ServiceRESTResponse<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>>> call,
Response<ServiceRESTResponse<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>>> response) {
analyzeAnswer(response, "searchByCodArtFornOrDescrizione", onComplete, onError);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>>> call, Throwable t) {
onError.run(new Exception(t));
}
});
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {
}.getType();
mSystemRestConsumer.<ArrayList<MtbAartWithFornitore>>processSql(sql, typeOfObjectsList, value -> {
if (onComplete != null) onComplete.run(value);
}, onFailed);
} }
public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs<ArrayList<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) { public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onError) {
String sql = "SELECT DISTINCT mtb_aart.*," + final RettificaGiacenzeRESTConsumerService service = RESTBuilder.getService(RettificaGiacenzeRESTConsumerService.class);
" qta_esistente, " + service.searchByCodMartOrBarcode(new SearchArticoloByBarcodeOrCodMartRequestDTO()
" qta_imp_cli + qta_imp_lav AS qta_impegnata, " + .setCodMartOrBarcode(codMartOrBarcodeOrDescr))
" num_esistente AS num_cnf_esistente, " + .enqueue(new Callback<>() {
" num_imp_cli + num_imp_lav AS num_cnf_impegnata " + @Override
" FROM mtb_aart " + public void onResponse(Call<ServiceRESTResponse<List<SearchArticoloByBarcodeOrCodMartResponseDTO>>> call,
" LEFT OUTER JOIN mvw_barcode on mtb_aart.cod_mart = mvw_barcode.cod_mart " + Response<ServiceRESTResponse<List<SearchArticoloByBarcodeOrCodMartResponseDTO>>> response) {
" LEFT OUTER JOIN mtb_part mp on mtb_aart.cod_mart = mp.cod_mart " + analyzeAnswer(response, "searchByCodMartOrBarcode", data -> {
" AND mp.cod_mdep = '" + SettingsManager.i().getUserSession().getDepo().getCodMdep() + "'" +
" WHERE CASE" +
" WHEN LEN(mvw_barcode.cod_barre) > 13 THEN mvw_barcode.cod_barre " +
" ELSE Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre " +
" END LIKE '%' + CASE " +
" WHEN LEN('" + codMartOrBarcodeOrDescr + "') > 13 THEN '" + codMartOrBarcodeOrDescr + "' " +
" ELSE Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" +
" END " +
"OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' " +
"OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() { var listToReturn = Stream.of(data)
}.getType(); .map(x -> x.getMtbAart()
mSystemRestConsumer.<ArrayList<MtbAart>>processSql(sql, typeOfObjectsList, value -> { .setQtaEsistente(x.getQtaEsistente())
if (onComplete != null) onComplete.run(value); .setQtaImpegnata(x.getQtaImpegnata())
}, onFailed); .setNumCnfEsistente(x.getNumCnfEsistente())
.setNumCnfImpegnata(x.getNumCnfImpegnata()))
.toList();
onComplete.run(listToReturn);
}, onError);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<SearchArticoloByBarcodeOrCodMartResponseDTO>>> call, Throwable t) {
onError.run(new Exception(t));
}
});
} }

View File

@ -1,7 +1,13 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.rest; package it.integry.integrywmsnative.gest.rettifica_giacenze.rest;
import java.util.List;
import it.integry.integrywmsnative.core.rest.model.SaveDocFromPickingRequestDTO; import it.integry.integrywmsnative.core.rest.model.SaveDocFromPickingRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByBarcodeOrCodMartRequestDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByBarcodeOrCodMartResponseDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByCodArtFornOrDescrizioneRequestDTO;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.SearchArticoloByCodArtFornOrDescrizioneResponseDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.POST; import retrofit2.http.POST;
@ -9,6 +15,14 @@ import retrofit2.http.POST;
public interface RettificaGiacenzeRESTConsumerService { public interface RettificaGiacenzeRESTConsumerService {
@POST("wms/articolo/searchByCodArtFornOrDescrizione")
Call<ServiceRESTResponse<List<SearchArticoloByCodArtFornOrDescrizioneResponseDTO>>> searchByCodArtFornOrDescrizione(
@Body SearchArticoloByCodArtFornOrDescrizioneRequestDTO searchArticoloByCodArtFornOrDescrizioneRequest);
@POST("wms/articolo/searchByCodMartOrBarcode")
Call<ServiceRESTResponse<List<SearchArticoloByBarcodeOrCodMartResponseDTO>>> searchByCodMartOrBarcode(
@Body SearchArticoloByBarcodeOrCodMartRequestDTO searchArticoloByBarcodeOrCodMartRequest);
@POST("saveDocFromPickingPvm") @POST("saveDocFromPickingPvm")
Call<ServiceRESTResponse<Void>> saveDocFromPickingPvm(@Body SaveDocFromPickingRequestDTO saveDocFromPickingRequestDTO); Call<ServiceRESTResponse<Void>> saveDocFromPickingPvm(@Body SaveDocFromPickingRequestDTO saveDocFromPickingRequestDTO);

View File

@ -95,6 +95,7 @@ public class SpedizioneViewModel {
private Listener mListener; private Listener mListener;
private String mDefaultRagSocOfUL = null;
private GestioneEnum mDefaultGestioneOfUL = null; private GestioneEnum mDefaultGestioneOfUL = null;
private int mDefaultSegnoCol = -1; private int mDefaultSegnoCol = -1;
private String mDefaultCodMdep = null; private String mDefaultCodMdep = null;
@ -205,6 +206,12 @@ public class SpedizioneViewModel {
private void initDefaultVars() { private void initDefaultVars() {
if (this.mTestateOrdini != null && this.mTestateOrdini.size() > 0) { if (this.mTestateOrdini != null && this.mTestateOrdini.size() > 0) {
List<String> foundRagSoc = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getRagSocOrd).distinctBy(x -> x).toList();
if (foundRagSoc != null && foundRagSoc.size() == 1) {
mDefaultRagSocOfUL = foundRagSoc.get(0);
}
if (mDefaultGestioneOfUL == null) { if (mDefaultGestioneOfUL == null) {
//Definizione della gestione collo di default //Definizione della gestione collo di default
List<GestioneEnum> foundGestioni = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getGestioneEnum).withoutNulls().distinct().toList(); List<GestioneEnum> foundGestioni = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getGestioneEnum).withoutNulls().distinct().toList();
@ -1230,6 +1237,7 @@ public class SpedizioneViewModel {
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(createdUDS, mTestateOrdini); mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(createdUDS, mTestateOrdini);
this.mCurrentMtbColt = createdUDS; this.mCurrentMtbColt = createdUDS;
this.mCurrentMtbColt.setRagSocCliente(mDefaultRagSocOfUL);
this.mIsNewLU = true; this.mIsNewLU = true;
if (onComplete != null) onComplete.run(); if (onComplete != null) onComplete.run();

View File

@ -9,6 +9,9 @@ public class DialogAvailableItemListModel {
private boolean aggiunto; private boolean aggiunto;
private boolean clickable;
private MtbAart originalModel;
public boolean isAggiunto() { public boolean isAggiunto() {
return aggiunto; return aggiunto;
} }
@ -36,9 +39,43 @@ public class DialogAvailableItemListModel {
return this; return this;
} }
public boolean isClickable() {
return clickable;
}
public DialogAvailableItemListModel setClickable(boolean clickable) {
this.clickable = clickable;
return this;
}
public MtbAart getOriginalModel() {
return originalModel;
}
public DialogAvailableItemListModel setOriginalModel(MtbAart originalModel) {
this.originalModel = originalModel;
return this;
}
public static DialogAvailableItemListModel fromMtbAart(MtbAart mtbAart) { public static DialogAvailableItemListModel fromMtbAart(MtbAart mtbAart) {
return new DialogAvailableItemListModel() return new DialogAvailableItemListModel()
.setCodMart(mtbAart.getCodMart()) .setCodMart(mtbAart.getCodMart())
.setDescrizioneEstesa(mtbAart.getDescrizioneEstesa()); .setDescrizioneEstesa(mtbAart.getDescrizioneEstesa())
.setOriginalModel(mtbAart);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
DialogAvailableItemListModel that = (DialogAvailableItemListModel) o;
return getOriginalModel().equals(that.getOriginalModel());
}
@Override
public int hashCode() {
return getOriginalModel().hashCode();
} }
} }

View File

@ -6,27 +6,42 @@ import android.view.LayoutInflater;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.widget.SearchView;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
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 com.ravikoradiya.liveadapter.Type;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.BR; import it.integry.integrywmsnative.BR;
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.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.databinding.DialogAvailableIntventarioItemsItemModelBinding;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding; import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class DialogAvailableItemsView extends BaseDialogFragment { public class DialogAvailableItemsView extends BaseDialogFragment {
private final List<DialogAvailableItemListModel> mListaArts; private final List<DialogAvailableItemListModel> mListaArts;
private final ObservableList<DialogAvailableItemListModel> mFilteredListaArts = new ObservableArrayList<>();
public DialogAvailableItemsView(List<DialogAvailableItemListModel> listaArts) { private final RunnableArgs<MtbAart> mOnItemSelected;
public DialogAvailableItemsView(List<DialogAvailableItemListModel> listaArts, RunnableArgs<MtbAart> onItemSelected) {
super(); super();
this.mListaArts = listaArts; this.mListaArts = listaArts;
this.mFilteredListaArts.addAll(mListaArts);
this.mOnItemSelected = onItemSelected;
} }
@ -37,7 +52,12 @@ public class DialogAvailableItemsView extends BaseDialogFragment {
binding.titleText.setText(R.string.articoli_disponibili); binding.titleText.setText(R.string.articoli_disponibili);
initRecyclerView(binding, mListaArts); for (var item : mListaArts) {
if (mOnItemSelected != null) item.setClickable(true);
}
initSearchView(binding);
initRecyclerView(binding);
var alertDialog = new MaterialAlertDialogBuilder(requireContext()) var alertDialog = new MaterialAlertDialogBuilder(requireContext())
.setView(binding.getRoot()) .setView(binding.getRoot())
@ -49,17 +69,52 @@ public class DialogAvailableItemsView extends BaseDialogFragment {
return alertDialog; return alertDialog;
} }
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<DialogAvailableItemListModel> dataset) { private void initSearchView(DialogChooseArtFromListaArtBinding binding) {
binding.searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
final List<DialogAvailableItemListModel> matchItems = Stream.of(mListaArts)
.filter(x -> x.getCodMart().toLowerCase().contains(newText.toLowerCase())
|| x.getDescrizioneEstesa().toLowerCase().contains(newText.toLowerCase()))
.toList();
mFilteredListaArts.clear();
mFilteredListaArts.addAll(matchItems);
return false;
}
});
}
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding) {
binding.itemsList.setHasFixedSize(true); binding.itemsList.setHasFixedSize(true);
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL); SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireContext(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider)); itemDecorator.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider));
binding.itemsList.addItemDecoration(itemDecorator); binding.itemsList.addItemDecoration(itemDecorator);
var itemType = new Type<DialogAvailableItemListModel, DialogAvailableIntventarioItemsItemModelBinding>(R.layout.dialog_available_intventario_items__item_model, BR.item);
new LiveAdapter(dataset, BR.item) itemType.areItemSame((x, y) -> x.getOriginalModel().getCodMart().equals(y.getOriginalModel().getCodMart()));
.map(DialogAvailableItemListModel.class, R.layout.dialog_available_intventario_items__item_model) itemType.areContentsTheSame(DialogAvailableItemListModel::equals);
if (mOnItemSelected != null) {
itemType.onClick(x -> {
mOnItemSelected.run(x.getBinding().getItem().getOriginalModel());
dismiss();
return null;
});
}
new LiveAdapter(mFilteredListaArts)
.map(DialogAvailableItemListModel.class, itemType)
.into(binding.itemsList); .into(binding.itemsList);
} }
} }

View File

@ -26,33 +26,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<!-- <it.integry.integrywmsnative.ui.ElevatedToolbar-->
<!-- android:id="@+id/elevated_toolbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content">-->
<!-- <androidx.appcompat.widget.Toolbar-->
<!-- android:id="@+id/toolbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="?attr/actionBarSize">-->
<!-- <androidx.appcompat.widget.AppCompatImageButton-->
<!-- android:id="@+id/reset_values"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="50dp"-->
<!-- android:layout_gravity="end"-->
<!-- android:adjustViewBounds="true"-->
<!-- android:scaleType="fitCenter"-->
<!-- android:src="@drawable/ic_black_upload"-->
<!-- android:backgroundTint="@android:color/transparent"-->
<!-- android:onClick="@{() -> view.requestExportConfirm()}"-->
<!-- android:tint="?attr/colorControlNormal" />-->
<!-- </androidx.appcompat.widget.Toolbar>-->
<!-- </it.integry.integrywmsnative.ui.ElevatedToolbar>-->
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@ -21,9 +21,9 @@
android:id="@+id/linearLayout" android:id="@+id/linearLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:orientation="vertical" android:orientation="vertical"
android:paddingBottom="8dp" android:padding="8dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent">

View File

@ -16,7 +16,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:paddingTop="16dp"
android:paddingBottom="16dp">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked" style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked"
@ -30,10 +31,20 @@
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked" style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="@string/dialog_choose_art_from_lista_art" /> android:text="@string/dialog_choose_art_from_lista_art" />
<androidx.appcompat.widget.SearchView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:backgroundTint="@android:color/white"
android:hint="@string/search"
app:iconifiedByDefault="false"/>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/items_list" android:id="@+id/items_list"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -20,11 +20,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingTop="8dp" android:padding="8dp"
android:paddingBottom="8dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
android:background="?android:attr/selectableItemBackground"> android:background="?attr/selectableItemBackground">
<RelativeLayout <RelativeLayout

View File

@ -22,7 +22,7 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="8dp"> android:padding="8dp">

View File

@ -12,7 +12,7 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="16dp" android:paddingStart="16dp"

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -16,7 +16,7 @@
<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:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}" android:onClick="@{() -> item.selected.toggle()}"
android:orientation="horizontal" android:orientation="horizontal"

View File

@ -18,7 +18,7 @@
<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:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}" android:onClick="@{() -> item.selected.toggle()}"
android:orientation="horizontal" android:orientation="horizontal"

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingHorizontal="8dp" android:paddingHorizontal="8dp"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:clickable="@{item.enabled}" android:clickable="@{item.enabled}"
android:onClick="@{() -> item.selected.toggle()}"> android:onClick="@{() -> item.selected.toggle()}">

View File

@ -25,7 +25,7 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:orientation="horizontal" android:orientation="horizontal"
android:padding="8dp"> android:padding="8dp">

View File

@ -9,5 +9,12 @@
android:contentDescription="@string/action_export" android:contentDescription="@string/action_export"
app:showAsAction="always" /> app:showAsAction="always" />
<item
android:id="@+id/search_art"
android:title="@string/search"
android:icon="@drawable/ic_search_black_24dp"
android:contentDescription="@string/search"
app:showAsAction="always" />
</menu> </menu>

View File

@ -460,4 +460,5 @@
<string name="confirm_export_invalid_product"><![CDATA[Uno o più articoli ordinati non sono presenti nella lista selezionata! <br>Sei sicuro di voler continuare?]]></string> <string name="confirm_export_invalid_product"><![CDATA[Uno o più articoli ordinati non sono presenti nella lista selezionata! <br>Sei sicuro di voler continuare?]]></string>
<string name="expired_list_session"><![CDATA[La lista di prodotti è stata caricata troppo tempo fa!]]></string> <string name="expired_list_session"><![CDATA[La lista di prodotti è stata caricata troppo tempo fa!]]></string>
<string name="grid_details">Griglie disponibili</string> <string name="grid_details">Griglie disponibili</string>
<string name="searchbar_hint">Cerca</string>
</resources> </resources>

View File

@ -469,4 +469,5 @@
<string name="confirm_export_invalid_product"><![CDATA[One or more ordered products are not available in the selected list! <br> Do you wish to continue?]]></string> <string name="confirm_export_invalid_product"><![CDATA[One or more ordered products are not available in the selected list! <br> Do you wish to continue?]]></string>
<string name="expired_list_session"><![CDATA[The product list was loaded too much time ago!]]></string> <string name="expired_list_session"><![CDATA[The product list was loaded too much time ago!]]></string>
<string name="grid_details">Available grids</string> <string name="grid_details">Available grids</string>
<string name="searchbar_hint">Search</string>
</resources> </resources>

View File

@ -3,7 +3,7 @@
buildscript { buildscript {
ext { ext {
kotlin_version = '1.8.0' kotlin_version = '1.8.0'
agp_version = '8.0.1' agp_version = '8.0.2'
} }
repositories { repositories {

View File

@ -42,6 +42,8 @@ public class ZebraBarcodeReader implements BarcodeReaderInterface {
return true; return true;
} else if (model.equalsIgnoreCase("TC20")) { } else if (model.equalsIgnoreCase("TC20")) {
return true; return true;
} else if (model.equalsIgnoreCase("MBA5")) {
return true;
} else return false; } else return false;
} }

View File

@ -17,6 +17,12 @@ public class ZebraBarcodeTypeMapper {
case "LABEL-TYPE-CODE39": case "LABEL-TYPE-CODE39":
return BarcodeType.CODE39; return BarcodeType.CODE39;
case "LABEL-TYPE-IATA2OF5":
return BarcodeType.IATA_2OF5;
case "LABEL-TYPE-I2OF5":
return BarcodeType.INTERLEAVED_2OF5;
case "LABEL-TYPE-EAN13": case "LABEL-TYPE-EAN13":
return BarcodeType.EAN13; return BarcodeType.EAN13;
case "LABEL-TYPE-EAN8": case "LABEL-TYPE-EAN8":