diff --git a/.idea/appInsightsSettings.xml b/.idea/appInsightsSettings.xml index e9268407..bc0e1560 100644 --- a/.idea/appInsightsSettings.xml +++ b/.idea/appInsightsSettings.xml @@ -4,6 +4,20 @@ + + + + + + + + + + + + + + diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index f23a4811..1d0d251a 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,10 +4,10 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 392b4fef..3dc9d556 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 461 - def appVersionName = '1.42.01' + def appVersionCode = 463 + def appVersionName = '1.42.03' signingConfigs { release { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f5a45a2e..3a265d22 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,8 +24,8 @@ android:allowBackup="true" android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" - android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" + android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true" diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 00000000..4d5d53a1 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 214f6815..8f5d1df8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -144,6 +144,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUModule; +import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoComponent; +import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoModule; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiComponent; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiModule; @@ -221,7 +223,8 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracc ArticoliInGiacenzaModule.class, DialogTracciamentoImballiModule.class, DialogAskVettoreModule.class, - DialogCreateNewArtModule.class + DialogCreateNewArtModule.class, + DialogSwitchUserDepoModule.class }) public interface MainApplicationComponent { @@ -370,6 +373,8 @@ public interface MainApplicationComponent { DialogCreateNewArtComponent.Factory dialogCreateNewArtComponent(); + DialogSwitchUserDepoComponent.Factory dialogSwitchUserDepoComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java index 5cf92c86..7dd9641e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java @@ -53,16 +53,16 @@ public class BaseActivity extends AppCompatActivity { private void openProgress() { BarcodeManager.disable(); - //executorService.execute(() -> { +// executorService.execute(() -> { this.mCurrentProgress.show(getSupportFragmentManager()); - //}); +// }); } private void closeProgress() { BarcodeManager.enable(); - //executorService.execute(() -> { +// executorService.execute(() -> { mCurrentProgress.dismiss(); - //}); +// }); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioRowMapper.java b/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioRowMapper.java index f54b84c9..36768b5f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioRowMapper.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioRowMapper.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.mapper; import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDTO; import it.integry.integrywmsnative.core.model.MtbInvenr; +import it.integry.integrywmsnative.core.settings.SettingsManager; public class InventarioRowMapper extends BaseMapper { @@ -32,6 +33,7 @@ public class InventarioRowMapper extends BaseMapper onFailed) { - - String codMdep = posizione.getCodMdep(); - String posizioneString = posizione.getPosizione(); - + public void spostaUL(MtbColt mtbColtToMove, String codMdep, String posizione, boolean createDocAutomatically, Runnable onComplete, RunnableArgs onFailed) { MtbColt mtbColtToMoveClone = (MtbColt) mtbColtToMove.clone(); for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) { @@ -417,26 +416,66 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setMtbPartitaMag(null); } + SpostaULRequestDTO spostaUlRequestDTO = new SpostaULRequestDTO() + .setCodMdep(codMdep) + .setPosizione(posizione) + .setMtbColtsToMove(Collections.singletonList(mtbColtToMoveClone)) + .setCreateDocAutomatically(createDocAutomatically); + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService - .spostaULInPosizione(codMdep, - posizioneString, - mtbColtToMoveClone) - .enqueue(new Callback>() { + .spostaUL(spostaUlRequestDTO) + .enqueue(new Callback<>() { @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "changePosizione", mtbColts -> { + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "spostaUL", mtbColts -> { onComplete.run(); }, onFailed); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call> call, Throwable t) { if (onFailed != null) onFailed.run(new Exception(t)); } }); } + public void spostaUL(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs onFailed) { + + String codMdep = posizione.getCodMdep(); + String posizioneString = posizione.getPosizione(); + + spostaUL(mtbColtToMove, codMdep, posizioneString, true, onComplete, onFailed); + } + + public void updateTipoUL(MtbColt mtbColt, String codTcol, Runnable onComplete, RunnableArgs onFailed) { + + MtbColt mtbColtClone = (MtbColt) mtbColt.clone(); + mtbColtClone.setMtbColr(new ObservableArrayList<>()); + + UpdateTipoULRequestDTO updateTipoULRequest = new UpdateTipoULRequestDTO() + .setMtbColt(mtbColtClone) + .setCodTcol(codTcol); + + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + colliMagazzinoRESTConsumerService + .updateTipoUL(updateTipoULRequest) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "updateTipoUL", mtbColts -> { + onComplete.run(); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + if (onFailed != null) onFailed.run(new Exception(t)); + } + }); + + } + public void updateDataFine(MtbColt mtbColt, Runnable onComplete, RunnableArgs onFailed) { MtbColt cloneMtbColt = (MtbColt) mtbColt.clone(); @@ -517,14 +556,14 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() { @Override - public void onResponse(Call> call, Response> response) { + public void onResponse(Call> call, Response> response) { analyzeAnswer(response, "spostaArtsTraUL", data -> { onComplete.run(); }, onFailed); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call> call, Throwable t) { if (onFailed != null) onFailed.run(new Exception(t)); } }); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java index 1e13a7d0..5da77d5e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java @@ -7,6 +7,8 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.SpostaULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.UpdateTipoULRequestDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CanULBeDeletedRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; @@ -31,11 +33,14 @@ public interface ColliMagazzinoRESTConsumerService { @POST("creaRettificaCollo") Call> creaRettificaCollo(@Query("codMdep") String codMdep, @Body RettificaULDTO rettificaULDTO); - @POST("wms/spostaULInPosizione") - Call> spostaULInPosizione(@Query("codMdep") String codMdep, @Query("posizione") String posizione, @Body MtbColt mtbColtToMove); + @POST("wms/updateTipoUL") + Call> updateTipoUL(@Body UpdateTipoULRequestDTO requestDto); + + @POST("wms/spostaUL") + Call> spostaUL(@Body SpostaULRequestDTO requestDto); @POST("wms/spostaArtsTraUL") - Call> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO); + Call> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO); @POST("wms/assegnaLottoSuColloScarico") Call> assegnaLottoSuColloScarico(@Body MtbColt mtbColt); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaULRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaULRequestDTO.java new file mode 100644 index 00000000..e25ef0db --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaULRequestDTO.java @@ -0,0 +1,61 @@ +package it.integry.integrywmsnative.core.rest.model; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class SpostaULRequestDTO { + + private String codMdep; + private String posizione; + private String annotazioni; + private boolean createDocAutomatically = true; + private List mtbColtsToMove = new ArrayList<>(); + + + public String getCodMdep() { + return codMdep; + } + + public SpostaULRequestDTO setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } + + public String getPosizione() { + return posizione; + } + + public SpostaULRequestDTO setPosizione(String posizione) { + this.posizione = posizione; + return this; + } + + public String getAnnotazioni() { + return annotazioni; + } + + public SpostaULRequestDTO setAnnotazioni(String annotazioni) { + this.annotazioni = annotazioni; + return this; + } + + public boolean isCreateDocAutomatically() { + return createDocAutomatically; + } + + public SpostaULRequestDTO setCreateDocAutomatically(boolean createDocAutomatically) { + this.createDocAutomatically = createDocAutomatically; + return this; + } + + public List getMtbColtsToMove() { + return mtbColtsToMove; + } + + public SpostaULRequestDTO setMtbColtsToMove(List mtbColtsToMove) { + this.mtbColtsToMove = mtbColtsToMove; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/UpdateTipoULRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/UpdateTipoULRequestDTO.java new file mode 100644 index 00000000..066476af --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/UpdateTipoULRequestDTO.java @@ -0,0 +1,27 @@ +package it.integry.integrywmsnative.core.rest.model; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class UpdateTipoULRequestDTO { + + private MtbColt mtbColt; + private String codTcol; + + public MtbColt getMtbColt() { + return mtbColt; + } + + public UpdateTipoULRequestDTO setMtbColt(MtbColt mtbColt) { + this.mtbColt = mtbColt; + return this; + } + + public String getCodTcol() { + return codTcol; + } + + public UpdateTipoULRequestDTO setCodTcol(String codTcol) { + this.codTcol = codTcol; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index ba237dd3..1606cc9c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -85,6 +85,7 @@ public class DBSettingsModel { private String docInterniRequestNumDoc; private boolean flagEnableArtCreation; private List allowedCodMgrpForArtCreation; + private boolean flagAccettazioneGroupListForn = false; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -733,4 +734,12 @@ public class DBSettingsModel { this.flagPositionChangeRequest = flagPositionChangeRequest; return this; } + + public boolean isFlagAccettazioneGroupListForn() { + return flagAccettazioneGroupListForn; + } + + public void setFlagAccettazioneGroupListForn(boolean flagAccettazioneGroupListForn) { + this.flagAccettazioneGroupListForn = flagAccettazioneGroupListForn; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 5b59af13..1a4f4bd9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -243,6 +243,11 @@ public class SettingsManager { .setSection("ACCETTAZIONE") .setKeySection("FLAG_AUTO_OPEN_NEW_UL") .setSetter(dbSettingsModelIstance::setFlagCanAutoOpenNewULAccettazione)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("ACCETTAZIONE") + .setKeySection("FLAG_GROUP_LIST_FORN") + .setSetter(dbSettingsModelIstance::setFlagAccettazioneGroupListForn)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE") diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoFragment.java index ecb7bda6..187a9895 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_elenco/MainAccettazioneBollaElencoFragment.java @@ -25,6 +25,7 @@ import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBollaBinding; import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.SitBollaAccettazioneDTO; @@ -166,7 +167,7 @@ public class MainAccettazioneBollaElencoFragment extends BaseFragment implements this.mBolleInevaseMutableData.clear(); - if(tmpList != null) + if (tmpList != null) this.mBolleInevaseMutableData.addAll(convertDataModelToListModel(tmpList)); } @@ -182,33 +183,44 @@ public class MainAccettazioneBollaElencoFragment extends BaseFragment implements } - - - private List convertDataModelToListModel(List dataList) { - if(dataList == null) - return null; + boolean group = !SettingsManager.iDB().isFlagAccettazioneGroupListForn(); + if (dataList == null) return null; - final Comparator comparer = Comparator.comparing(TestataBollaAccettazioneDTO::getListino) - .thenComparing(TestataBollaAccettazioneDTO::getRagSoc) - .thenComparing(TestataBollaAccettazioneDTO::getNumDoc); + Stream stream = Stream.of(dataList); - return Stream.of(dataList) - .sorted(comparer) - .map(x -> { - MainAccettazioneBolleElencoListModel listModel = new MainAccettazioneBolleElencoListModel(); + if (group) { + final Comparator comparer = Comparator.comparing(TestataBollaAccettazioneDTO::getListino) + .thenComparing(TestataBollaAccettazioneDTO::getRagSoc) + .thenComparing(TestataBollaAccettazioneDTO::getNumDoc); + stream = stream.sorted(comparer); + } else { + stream = stream.sortBy(x -> x.getRagSoc() + UtilityDate.formatDate(x.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)); + } - listModel.setOriginalModel(x); - listModel.setGroupTitle(x.getListino() + " - " + x.getRagSoc()); - listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumDoc(), UtilityDate.formatDate(x.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + return stream.map(x -> { + MainAccettazioneBolleElencoListModel listModel = new MainAccettazioneBolleElencoListModel(); + listModel.setOriginalModel(x); - listModel.setSubDescription(x.getDescrizioneListino()); - listModel.setRightDescription(x.getCodAnag()); - listModel.setRightSubDescription(x.getCodJcom()); + if (group) + listModel.setGroupTitle(x.getListino() + " - " + x.getRagSoc()); + else + listModel.setGroupTitle(x.getRagSoc()); - return listModel; - }) - .toList(); + listModel.setDescription(String.format(getString(R.string.ord_acq_testata), + x.getNumDoc(), + UtilityDate.formatDate(x.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + + if (group) + listModel.setSubDescription(x.getDescrizioneListino()); + else + listModel.setSubDescription(x.getListino() + " - " + x.getDescrizioneListino()); + + listModel.setRightDescription(x.getCodAnag()); + listModel.setRightSubDescription(x.getCodJcom()); + + return listModel; + }).toList(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java index 6ae8b99d..31572319 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java @@ -464,6 +464,8 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac .findFirstOrElse(null) .isCanBeRecovered(), + false, + ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO)); this.startActivityForResult(myIntent, PICK_UL_REQUEST); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java index 6e8b80eb..0e94d5e8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java @@ -544,10 +544,6 @@ public class AccettazioneBollaPickingViewModel { initialQtaCnf = qtaCnfDaPrelevare; initialQtaTot = qtaColDaPrelevare; - } else if (totalQtaDoc != null) { - initialNumCnf = totalNumCnfDoc; - initialQtaCnf = qtaCnfDoc; - initialQtaTot = totalQtaDoc; } else { initialNumCnf = BigDecimal.ONE; initialQtaCnf = mtbAart.getQtaCnf(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java index bf8f8a83..3b81d9c4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java @@ -2,10 +2,12 @@ package it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui; import android.content.Context; import android.graphics.Color; +import android.os.Build; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.res.ResourcesCompat; import androidx.databinding.ObservableArrayList; @@ -15,7 +17,11 @@ import androidx.recyclerview.widget.RecyclerView; import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; @@ -62,10 +68,29 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd this.mShowSecondaryUntMis = showSecondaryUntMis; mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() { + @RequiresApi(api = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) @Override public void onChanged(ObservableList sender) { + List listaOrdinata = new ArrayList<>(); + if (!sender.isEmpty()) { + listaOrdinata = new ArrayList<>(sender); + + Collections.sort(listaOrdinata, (a, b) -> { + + boolean condA = a.getQtaEvasa().subtract(a.getQtaTot()).floatValue() == 0; + boolean condB = b.getQtaEvasa().subtract(b.getQtaTot()).floatValue() == 0; + + if (condA && !condB) { + return -1; + } else if (!condA && condB) { + return 1; + } + return 0; + }); + } + mDataset.clear(); - mDataset.addAll(sender); + mDataset.addAll(listaOrdinata); notifyDataSetChanged(); notifyDataChanged(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java index 0b3909e3..22835d2e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java @@ -88,6 +88,7 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi .create() .inject(this); + mViewModel.setListener(this); mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index 2686d2b0..1873e18b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -41,6 +41,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; @@ -51,6 +52,7 @@ import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.databinding.FragmentMainBinding; import it.integry.integrywmsnative.databinding.FragmentMainMenuGroupLayoutBinding; import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoView; /** * A simple {@link Fragment} subclass. @@ -153,6 +155,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab initSessionData(); initRecuperoCollo(); + + mBindings.switchDepoButton.setVisibility(SettingsManager.iDB().getAvailableCodMdep().size() > 1 ? View.VISIBLE : View.GONE); } private void initSessionData() { @@ -278,8 +282,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab private void initGestMenu() { int menuSpanCount = 2; - if (UtilityDimension.getDisplayInchs(this.getActivity()) > 8) menuSpanCount = 4; - else if (UtilityDimension.getDisplayInchs(this.getActivity()) > 6.5) menuSpanCount = 3; + if (UtilityDimension.getDisplayInchs(this.requireActivity()) > 8) menuSpanCount = 4; + else if (UtilityDimension.getDisplayInchs(this.requireActivity()) > 6.5) menuSpanCount = 3; MenuConfiguration baseMenuConfiguration = new MenuConfiguration(); List menuGroups = baseMenuConfiguration.getGroups(); @@ -319,7 +323,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab } catch (Exception exception) { - exception.printStackTrace(); + UtilityExceptions.defaultException(requireActivity(), exception); } } @@ -421,4 +425,14 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab colorFadeTitleTextColor.setDuration(animationTimeMillis); colorFadeTitleTextColor.start(); } + + public void changeUserDepo() { + DialogSwitchUserDepoView.newInstance(SettingsManager.iDB().getAvailableCodMdep(), this::onUserDepoChanged) + .show(getParentFragmentManager(), "switch-user-depo"); + } + + private void onUserDepoChanged(AvailableCodMdepsDTO newDepo) { + SettingsManager.i().getUserSession().setDepo(newDepo); + initSessionData(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index d41252ba..5a6bd055 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -50,11 +50,12 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGExcep import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; -import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; +import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView; 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.yes_no.DialogYesNoView; public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener { @@ -392,18 +393,22 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Override public void onLUPrintRequest(RunnableArgs onComplete) { - DialogAskShouldPrint.make(this, "Packing List", onComplete).show(); + DialogYesNoView.newInstance(getString(R.string.action_print), + String.format(getString(R.string.message_print_packing_list), "Packing List"), + result -> { + onComplete.run(result == DialogConsts.Results.YES); + }) + .show(getSupportFragmentManager(), "dialog-print"); } @Override public void onLUPrintError(Exception ex, Runnable onComplete) { this.onLoadingEnded(); - DialogSimpleMessageView.makeErrorDialog( - new SpannableString(ex.getMessage()), - null, - null, - R.string.button_ignore_print, - onComplete) + DialogSimpleMessageView.makeErrorDialog(new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete) .show(getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java index f08c9147..e30ca795 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java @@ -143,7 +143,7 @@ public class ProdRiposizionamentoDaProdViewModel { this.sendError(new ScannedPositionNotExistException()); } else { if (mtbColt != null) { - mColliMagazzinoRESTConsumer.changePosizione(mtbColt, mtbDepoPosizione, () -> { + mColliMagazzinoRESTConsumer.spostaUL(mtbColt, mtbDepoPosizione, () -> { List mvwSitArtUdcDetInventarioList = mMvwSitArtUdcDetInventarioLiveData.getValue(); if (mvwSitArtUdcDetInventarioList != null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 2ca1a6a5..b001f6de 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -70,7 +70,6 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView; -import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -81,7 +80,6 @@ import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAgg import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView; 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.exception.OverflowQtaTotOrderedQuantityException; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiView; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView; @@ -818,7 +816,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo @Override public void onLUPrintRequest(RunnableArgs onComplete) { - DialogAskShouldPrint.make(this, "Packing List", onComplete).show(); + DialogYesNoView.newInstance(getString(R.string.action_print), + String.format(getString(R.string.message_print_packing_list), "Packing List"), + result -> { + onComplete.run(result == DialogConsts.Results.YES); + }) + .show(getSupportFragmentManager(), "dialog-print"); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index 8a4b558b..db57f139 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -855,7 +855,7 @@ public class SpedizioneViewModel { private void loadMatchedRows(List matchedRows) { - if (matchedRows == null || matchedRows.size() == 0) { + if (matchedRows == null || matchedRows.isEmpty()) { this.sendError(new NoArtsFoundException()); } else if (matchedRows.size() == 1) { PickingObjectDTO matchedItem = matchedRows.get(0); @@ -898,9 +898,6 @@ public class SpedizioneViewModel { public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, boolean canPartitaMagBeChanged) { - //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta -// MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; - if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt() != null && pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null) { @@ -1100,8 +1097,12 @@ public class SpedizioneViewModel { BigDecimal initialQtaTot = mUseColliPedana ? initialNumCnf.multiply(initialQtaCnf) : mUseQtaOrd ? qtaColDaPrelevare : null; MtbColt finalRefMtbColt = refMtbColt; + this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); + + }); } @@ -1430,50 +1431,80 @@ public class SpedizioneViewModel { insertUDSRowRequestDto .setDataScad(dataScad); - this.mColliScaricoRESTConsumer.insertUDSRow(insertUDSRowRequestDto, createdMtbColr -> { - pickingObjectDTO.getWithdrawMtbColrs().add(createdMtbColr); - this.mCurrentMtbColt.getMtbColr().add(createdMtbColr); + executeDepositChangeIfNeeded(refMtbColt, + () -> executeTipoUlChangeIfNeeded(refMtbColt, + () -> this.mColliScaricoRESTConsumer.insertUDSRow(insertUDSRowRequestDto, createdMtbColr -> { + pickingObjectDTO.getWithdrawMtbColrs().add(createdMtbColr); + this.mCurrentMtbColt.getMtbColr().add(createdMtbColr); - createdMtbColr - .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) - .setMtbAart(pickingObjectDTO.getMtbAart()); + createdMtbColr + .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) + .setMtbAart(pickingObjectDTO.getMtbAart()); - if (mEnableGiacenza) { - MtbColr refMtbColr = new MtbColr() - .setCodMart(createdMtbColr.getCodMart()) - .setPartitaMag(createdMtbColr.getPartitaMag()) - .setCodTagl(createdMtbColr.getCodTagl()) - .setCodCol(createdMtbColr.getCodCol()); + if (mEnableGiacenza) { + MtbColr refMtbColr = new MtbColr() + .setCodMart(createdMtbColr.getCodMart()) + .setPartitaMag(createdMtbColr.getPartitaMag()) + .setCodTagl(createdMtbColr.getCodTagl()) + .setCodCol(createdMtbColr.getCodCol()); - if (refMtbColt != null) { + if (refMtbColt != null) { - MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && refMtbColt.getMtbColr().size() > 0 ? refMtbColt.getMtbColr().get(0) : null; + MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && !refMtbColt.getMtbColr().isEmpty() ? refMtbColt.getMtbColr().get(0) : null; - if (originalRefMtbColr != null) { - refMtbColr.setId(originalRefMtbColr.getId()); - } + if (originalRefMtbColr != null) { + refMtbColr.setId(originalRefMtbColr.getId()); + } - refMtbColr.setNumCollo(refMtbColt.getNumCollo()) - .setDataCollo(refMtbColt.getDataColloS()) - .setSerCollo(refMtbColt.getSerCollo()) - .setGestione(refMtbColt.getGestione()); - } - createdMtbColr.setRefMtbColr(refMtbColr); - } + refMtbColr.setNumCollo(refMtbColt.getNumCollo()) + .setDataCollo(refMtbColt.getDataColloS()) + .setSerCollo(refMtbColt.getSerCollo()) + .setGestione(refMtbColt.getGestione()); + } + createdMtbColr.setRefMtbColr(refMtbColr); + } - //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei - resetMatchedRows(); + //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei + resetMatchedRows(); - this.sendOnRowSaved(); - this.sendOnLoadingEnded(); + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); - if (shouldCloseLU) requestCloseLU(shouldPrint); + if (shouldCloseLU) requestCloseLU(shouldPrint); - }, this::sendError); + }, this::sendError))); } + private void executeDepositChangeIfNeeded(MtbColt refMtbColt, Runnable onComplete) { + //Considero solo la prima UDC scansionata + boolean shouldChangeCodMdep = refMtbColt != null && !refMtbColt.getCodMdep().equalsIgnoreCase(mCurrentMtbColt.getCodMdep()) && + mCurrentMtbColt.getMtbColr().isEmpty(); + String newCodMdep = shouldChangeCodMdep ? refMtbColt.getCodMdep() : null; + + if (shouldChangeCodMdep) { + mColliMagazzinoRESTConsumer.spostaUL(mCurrentMtbColt, newCodMdep, null, false, () -> { + mCurrentMtbColt.setCodMdep(newCodMdep); + onComplete.run(); + }, this::sendError); + } else onComplete.run(); + } + + private void executeTipoUlChangeIfNeeded(MtbColt refMtbColt, Runnable onComplete) { + boolean shouldChangeCodTcol = refMtbColt != null && refMtbColt.getCodTcol() != null && + !refMtbColt.getCodTcol().equalsIgnoreCase(mCurrentMtbColt.getCodTcol()) && + mCurrentMtbColt.getMtbColr().isEmpty(); + String newTipoUL = shouldChangeCodTcol ? refMtbColt.getCodTcol() : null; + + if (shouldChangeCodTcol) { + mColliMagazzinoRESTConsumer.updateTipoUL(mCurrentMtbColt, newTipoUL, () -> { + mCurrentMtbColt.setCodTcol(newTipoUL); + onComplete.run(); + }, this::sendError); + } else onComplete.run(); + } + private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { this.sendOnLoadingStarted(); @@ -1732,7 +1763,7 @@ public class SpedizioneViewModel { } private void askInfoAggiuntive(Runnable onComplete) { - if (mDefaultSegnoCol != -1 || !SettingsManager.iDB().isFlagAskInfoAggiuntiveSpedizione()) { + if (!SettingsManager.iDB().isFlagAskInfoAggiuntiveSpedizione()) { onComplete.run(); return; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java index 8edf5632..4a2388ef 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java @@ -302,7 +302,7 @@ public class VersamentoMerceViewModel { public void updatePosizione(MtbDepoPosizione mtbDepoPosizione) { this.sendOnLoadingStarted(); - mColliMagazzinoRESTConsumer.changePosizione(mCurrentMtbColt.getValue(), mtbDepoPosizione, () -> { + mColliMagazzinoRESTConsumer.spostaUL(mCurrentMtbColt.getValue(), mtbDepoPosizione, () -> { this.sendOnLoadingEnded(); this.sendOnDataSaved(); }, this::sendError); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java deleted file mode 100644 index b5753990..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_should_print/DialogAskShouldPrint.java +++ /dev/null @@ -1,47 +0,0 @@ -package it.integry.integrywmsnative.view.dialogs.ask_should_print; - -import android.app.Dialog; -import android.content.Context; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.view.LayoutInflater; - -import androidx.databinding.DataBindingUtil; -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.databinding.DialogAskShouldPrintBinding; - -public class DialogAskShouldPrint { - - private Dialog currentDialog; - - public static Dialog make(final Context context, final String nomeEtichettaEN, RunnableArgs onDialogDismiss) { - return new DialogAskShouldPrint(context, nomeEtichettaEN, onDialogDismiss).currentDialog; - } - - private DialogAskShouldPrint(Context context, String nomeEtichettaEN, RunnableArgs onDialogDismiss) { - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - DialogAskShouldPrintBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_should_print, null, false); - - currentDialog = new Dialog(context); - currentDialog.setContentView(bindings.getRoot()); - - currentDialog.setCanceledOnTouchOutside(false); - currentDialog.setCancelable(false); - currentDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - bindings.descriptionText.setText(String.format(context.getResources().getString(R.string.message_print_packing_list), nomeEtichettaEN)); - - bindings.buttonConfirm.setOnClickListener(v -> { - currentDialog.dismiss(); - onDialogDismiss.run(true); - }); - - bindings.buttonAbort.setOnClickListener(v -> { - currentDialog.dismiss(); - onDialogDismiss.run(false); - }); - - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java index 6189f6b9..69bde96f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java @@ -136,31 +136,26 @@ public class DialogSimpleMessageView extends BaseDialogFragment { private void initContent() { int colorBackgroundTitle = -1; - Drawable titleIconRes = null; - - switch (mType) { - case INFO: + Drawable titleIconRes = switch (mType) { + case INFO -> { colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.colorPrimary); - titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_info_78dp, null); - break; - - case SUCCESS: + yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_info_78dp, null); + } + case SUCCESS -> { colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.green_300); - titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_done_white_24dp, null); - break; - - case WARNING: + yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_done_white_24dp, null); + } + case WARNING -> { colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.yellow_600); - titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_warning_white_24dp, null); - break; - - case ERROR: + yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_warning_white_24dp, null); + } + case ERROR -> { colorBackgroundTitle = ContextCompat.getColor(requireContext(), R.color.red_300); - titleIconRes = ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_mood_bad_24dp, null); - break; - } + yield ResourcesCompat.getDrawable(requireContext().getResources(), R.drawable.ic_mood_bad_24dp, null); + } + }; - this.positiveButtonText = requireContext().getText(R.string.ok).toString(); + this.positiveButtonText = requireContext().getText(mOnNegativeClick != null ? R.string.yes : R.string.ok).toString(); this.negativeButtonText = requireContext().getText(R.string.no).toString(); //Title VIEW diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoComponent.java new file mode 100644 index 00000000..fb3dedcb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.switch_user_depo; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogSwitchUserDepoComponent { + + @Subcomponent.Factory + interface Factory { + DialogSwitchUserDepoComponent create(); + } + + void inject(DialogSwitchUserDepoView dialogSwitchUserDepoView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoModule.java new file mode 100644 index 00000000..7f05d9e5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.switch_user_depo; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogSwitchUserDepoComponent.class) +public class DialogSwitchUserDepoModule { + + @Provides + DialogSwitchUserDepoViewModel providesDialogSwitchUserDepoViewModel() { + return new DialogSwitchUserDepoViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoView.java new file mode 100644 index 00000000..1026465e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoView.java @@ -0,0 +1,93 @@ +package it.integry.integrywmsnative.view.dialogs.switch_user_depo; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.di.binders.recyclerview.BindingRecyclerViewAdapter; +import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinder; +import it.integry.integrywmsnative.core.di.binders.recyclerview.ItemBinderBase; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; +import it.integry.integrywmsnative.databinding.DialogSwitchUserDepoBinding; + +public class DialogSwitchUserDepoView extends BaseDialogFragment { + + @Inject + DialogSwitchUserDepoViewModel mViewModel; + + private DialogSwitchUserDepoBinding mBindings; + private Context mContext; + + private final List availableCodMdeps; + private final RunnableArgs onComplete; + + //Pass here all external parameters + public static DialogSwitchUserDepoView newInstance(List availableCodMdeps, RunnableArgs onComplete) { + return new DialogSwitchUserDepoView(availableCodMdeps, onComplete); + } + + private DialogSwitchUserDepoView(List availableCodMdeps, RunnableArgs onComplete) { + super(); + + this.availableCodMdeps = availableCodMdeps; + this.onComplete = onComplete; + + MainApplication.appComponent + .dialogSwitchUserDepoComponent() + .create() + .inject(this); + } + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogSwitchUserDepoBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + setCancelable(true); + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(isCancelable()) + .create(); + + alertDialog.setCanceledOnTouchOutside(isCancelable()); + alertDialog.setOnShowListener(this); + + return alertDialog; + } + + @Override + public void onInit(DialogInterface dialogInterface) { + super.onInit(dialogInterface); + + ItemBinder itemBinder = new ItemBinderBase<>(BR.item, R.layout.dialog_switch_user_depo__list_item); + + BindingRecyclerViewAdapter adapter = new BindingRecyclerViewAdapter<>(itemBinder, availableCodMdeps); + adapter.setClickHandler(data -> { + onComplete.run(data); + dismiss(); + }); + + mBindings.availableDepoList.setAdapter(adapter); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoViewModel.java new file mode 100644 index 00000000..97cfeaca --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/switch_user_depo/DialogSwitchUserDepoViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.view.dialogs.switch_user_depo; + +public class DialogSwitchUserDepoViewModel { + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/yes_no/DialogYesNoView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/yes_no/DialogYesNoView.java index 7151f400..a6fa284e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/yes_no/DialogYesNoView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/yes_no/DialogYesNoView.java @@ -11,6 +11,7 @@ import androidx.fragment.app.DialogFragment; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogYesNoBinding; @@ -56,10 +57,10 @@ public class DialogYesNoView extends DialogFragment { var alertDialog = new MaterialAlertDialogBuilder(requireContext()) .setView(binding.getRoot()) .setCancelable(false) - .setPositiveButton("Ok", (dialog, which) -> { + .setPositiveButton(R.string.yes, (dialog, which) -> { if (onDialogDismiss != null) onDialogDismiss.run(DialogConsts.Results.YES); }) - .setNegativeButton("Annulla", (dialog, which) -> { + .setNegativeButton(R.string.no, (dialog, which) -> { if (onDialogDismiss != null) onDialogDismiss.run(DialogConsts.Results.NO); }) .create(); diff --git a/app/src/main/res/drawable/app_round_icon.xml b/app/src/main/res/drawable/app_round_icon.xml index 943787b8..249bed37 100644 --- a/app/src/main/res/drawable/app_round_icon.xml +++ b/app/src/main/res/drawable/app_round_icon.xml @@ -1,37 +1,39 @@ - - - - - - - - - - - - - \ No newline at end of file + android:width="222.9dp" + android:height="222.9dp" + android:viewportWidth="222.9" + android:viewportHeight="222.9"> + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..d7972540 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_rounded_change_circle_24.xml b/app/src/main/res/drawable/ic_rounded_change_circle_24.xml new file mode 100644 index 00000000..ed34fc5d --- /dev/null +++ b/app/src/main/res/drawable/ic_rounded_change_circle_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 02f04f8a..da3cfa4c 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -33,12 +33,10 @@ android:layout_gravity="center"> + android:padding="8dp" + android:clickable="true" + android:focusable="true" + android:background="?attr/selectableItemBackground"> + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_switch_user_depo__list_item.xml b/app/src/main/res/layout/dialog_switch_user_depo__list_item.xml new file mode 100644 index 00000000..a5734899 --- /dev/null +++ b/app/src/main/res/layout/dialog_switch_user_depo__list_item.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 113a1ee6..bc792173 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -79,7 +79,7 @@ android:padding="16dp"> - + android:orientation="vertical" + android:layout_marginEnd="16dp" + android:layout_toEndOf="@id/user_icon" + android:layout_toStartOf="@id/switch_depo_button"> + tools:text="MARIO ROSSI" /> + tools:text="Deposito: 01 - Centrale" /> - + + + + + - + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 036d09bc..7353dbd1 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 5a51dba6..00000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 00000000..6582824d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png deleted file mode 100644 index f5fbca90..00000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index c887da06..00000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 00000000..ce973e52 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 42fd3eb1..00000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 00000000..a48e025e Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png deleted file mode 100644 index d1ad74fa..00000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index d4d733d4..00000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 00000000..f7ec9b38 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index bab2c009..00000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 00000000..5a364803 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index bb45d61a..00000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 4cd8e716..00000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..fd26a792 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 3c6949bc..00000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 00000000..4534f365 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png deleted file mode 100644 index e3fa253e..00000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 488aa103..00000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..875eb4c9 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 8e638e32..00000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 00000000..af06cbd2 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png deleted file mode 100644 index 7106807b..00000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 374091fc..00000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..64c524bc Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 0d69b7d9..b65ea13f 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -313,7 +313,7 @@ No Posizionamento - Vuoi procedere con la stampa di una %s + Vuoi procedere con la stampa di una %s? Vuoi stampare le packing list degli ordini chiusi? Vuoi stampare le etichette SSCC degli ordini chiusi? Stampa solo le nuove etichette @@ -481,4 +481,7 @@ Griglie disponibili Cerca + + Cambia deposito + Cambia il deposito principale su cui stai lavorando tra quelli a te disponibili \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bcf8bed7..696bed5e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -488,4 +488,7 @@ Available grids Search + + Change deposit + Change the main deposit you are working on among those available to you