diff --git a/app/build.gradle b/app/build.gradle index 2ba7a2de..5dfd6148 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 339 - def appVersionName = '1.31.05' + def appVersionCode = 340 + def appVersionName = '1.32.00' signingConfigs { release { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 836facd1..e5de414b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,14 +1,24 @@ - + - - + + + + + + + + + android:windowSoftInputMode="adjustNothing" + android:configChanges="orientation|screenSize|keyboardHidden" /> + android:windowSoftInputMode="adjustNothing" + android:configChanges="orientation|screenSize|keyboardHidden" /> + android:windowSoftInputMode="adjustNothing" + android:configChanges="orientation|screenSize|keyboardHidden" /> + android:windowSoftInputMode="adjustNothing" + android:configChanges="orientation|screenSize|keyboardHidden" /> + android:theme="@style/Light" + android:configChanges="orientation|screenSize|keyboardHidden" /> - + android:theme="@style/Light" + android:configChanges="orientation|screenSize|keyboardHidden" /> + + android:theme="@style/Light" + android:configChanges="orientation|screenSize|keyboardHidden" /> + android:theme="@style/Light" + android:configChanges="orientation|screenSize|keyboardHidden" /> + android:theme="@style/Light" + android:configChanges="orientation|screenSize|keyboardHidden"/> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null))) + .addItem(new MenuItem() + .setID(R.id.nav_rettifica_spedizione) + .setCodMenu("MG064") + .setTitleText(R.string.rettifica_spedizione_fragment_title) + .setTitleIcon(R.drawable.ic_dashboard_rettifica_spedizione) + .setDrawerIcon(R.drawable.ic_rettifica_spedizione_drawer) + .setFragmentFactory(() -> RettificaGiacenzeFragment.newInstance(GestioneEnum.VENDITA))) + .addItem(new MenuItem() .setID(R.id.nav_free_picking) .setCodMenu("MG047") diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java index 9fe6386d..c57f85f9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java @@ -24,6 +24,7 @@ import androidx.databinding.BindingAdapter; import androidx.databinding.BindingConversion; import androidx.databinding.Observable; import androidx.databinding.ObservableField; +import androidx.lifecycle.MutableLiveData; import com.google.android.material.datepicker.MaterialDatePicker; import com.google.android.material.textfield.TextInputEditText; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java index 1166cc28..e513aeca 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java @@ -101,6 +101,7 @@ public abstract class _BaseRESTConsumer { if (response.getEsito() == EsitoType.OK) { if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) { onFailed.run(new Exception(response.getErrorMessage())); + return; } else { T dataObj = response.getDto() != null ? response.getDto() : diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocFromPickingDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SaveDocFromPickingRequestDTO.java similarity index 61% rename from app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocFromPickingDTO.java rename to app/src/main/java/it/integry/integrywmsnative/core/rest/model/SaveDocFromPickingRequestDTO.java index 4041729a..372a3f1f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocFromPickingDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SaveDocFromPickingRequestDTO.java @@ -1,22 +1,29 @@ -package it.integry.integrywmsnative.gest.contab_doc_interni.dto; +package it.integry.integrywmsnative.core.rest.model; +import com.annimon.stream.Stream; + import java.math.BigDecimal; import java.util.Date; import java.util.List; -public class DocFromPickingDTO { - String codAnag, codVdes, tipoLista, noteDoc; - Date dataDoc; - Integer numDoc; - List colli; - List pedane; +import it.integry.integrywmsnative.core.model.MtbColt; + +public class SaveDocFromPickingRequestDTO { + private String codAnag; + private String codVdes; + private String tipoLista; + private String noteDoc; + private Date dataDoc; + private Integer numDoc; + private List colli; + private List pedane; public String getCodAnag() { return codAnag; } - public DocFromPickingDTO setCodAnag(String codAnag) { + public SaveDocFromPickingRequestDTO setCodAnag(String codAnag) { this.codAnag = codAnag; return this; } @@ -25,7 +32,7 @@ public class DocFromPickingDTO { return codVdes; } - public DocFromPickingDTO setCodVdes(String codVdes) { + public SaveDocFromPickingRequestDTO setCodVdes(String codVdes) { this.codVdes = codVdes; return this; } @@ -34,7 +41,7 @@ public class DocFromPickingDTO { return tipoLista; } - public DocFromPickingDTO setTipoLista(String tipoLista) { + public SaveDocFromPickingRequestDTO setTipoLista(String tipoLista) { this.tipoLista = tipoLista; return this; } @@ -43,7 +50,7 @@ public class DocFromPickingDTO { return noteDoc; } - public DocFromPickingDTO setNoteDoc(String noteDoc) { + public SaveDocFromPickingRequestDTO setNoteDoc(String noteDoc) { this.noteDoc = noteDoc; return this; } @@ -52,7 +59,7 @@ public class DocFromPickingDTO { return dataDoc; } - public DocFromPickingDTO setDataDoc(Date dataDoc) { + public SaveDocFromPickingRequestDTO setDataDoc(Date dataDoc) { this.dataDoc = dataDoc; return this; } @@ -61,7 +68,7 @@ public class DocFromPickingDTO { return numDoc; } - public DocFromPickingDTO setNumDoc(Integer numDoc) { + public SaveDocFromPickingRequestDTO setNumDoc(Integer numDoc) { this.numDoc = numDoc; return this; } @@ -70,11 +77,24 @@ public class DocFromPickingDTO { return colli; } - public DocFromPickingDTO setColli(List colli) { + public SaveDocFromPickingRequestDTO setColli(List colli) { this.colli = colli; return this; } + public SaveDocFromPickingRequestDTO setColliFromMtbColts(List colli) { + if(colli == null) return this; + + this.colli = Stream.of(colli) + .map(x -> new DatiCollo() + .setDataCollo(x.getDataColloD()) + .setSerCollo(x.getSerCollo()) + .setNumCollo(x.getNumCollo()) + .setGestione(x.getGestione())) + .toList(); + return this; + } + public List getPedane() { return pedane; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java index aef9d815..3044f791 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java @@ -20,11 +20,7 @@ public class PermissionsHelper { public static void askPermissions(SplashActivity activity, Runnable onPermissionsConfirmed, RunnableArgs onPermissionsDenied) { List permissionsToAsk = new ArrayList<>(); - permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE); - permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); permissionsToAsk.add(Manifest.permission.CAMERA); - //permissionsToAsk.add(Manifest.permission.INTERNET); - //permissionsToAsk.add(Manifest.permission.ACCESS_WIFI_STATE); if(Build.VERSION.SDK_INT >= 23) { @@ -34,6 +30,15 @@ public class PermissionsHelper { permissionsToAsk.add(Manifest.permission.BLUETOOTH_CONNECT); } + if(Build.VERSION.SDK_INT < 33) { + permissionsToAsk.add(Manifest.permission.READ_EXTERNAL_STORAGE); + permissionsToAsk.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); + } else { + permissionsToAsk.add(Manifest.permission.READ_MEDIA_IMAGES); + permissionsToAsk.add(Manifest.permission.READ_MEDIA_AUDIO); + permissionsToAsk.add(Manifest.permission.READ_MEDIA_VIDEO); + } + String[] permissionArray = new String[permissionsToAsk.size()]; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java index 69373d0b..3dec6240 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java @@ -7,10 +7,6 @@ import it.integry.integrywmsnative.BuildConfig; public class UtilityLogger { - public static void trace(String message) { - Logger.d(message, getPreviousStackTraceElement()); - } - public static void info(String message) { Logger.i(message); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java index 0a2e3a28..8911f876 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java @@ -89,6 +89,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + setRetainInstance(true); if (savedInstanceState != null && savedInstanceState.containsKey("mToolbar")) mToolbar = DataCache.retrieveItem(savedInstanceState.getString("mToolbar")); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java index 190e36b0..2df4a159 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java @@ -29,8 +29,8 @@ import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoView; -import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormActivity; @@ -70,6 +70,7 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + setRetainInstance(true); mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_doc_interni, container, false); MainApplication.appComponent @@ -114,28 +115,23 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, } @Override - public void onDocDetailsChanged(DialogSelectDocInfoViewModel selection) { - if (selection.isInputValid()) { - mViewModel.setSelectedDocDetails(selection); - mBinding.mainFab.setVisibility(View.VISIBLE); - } else { - mBinding.mainFab.setVisibility(View.GONE); - } + public void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection) { + mViewModel.setSelectedDocDetails(selection); - if (selection.requiresFornitore()) { + if (selection.isFornitoreRequired()) { mBinding.codAnagContainer.setVisibility(View.VISIBLE); } else { mBinding.codAnagContainer.setVisibility(View.GONE); } - if (selection.getSelectedGruppoArt() != null) { + if (selection.getGruppoArt() != null) { mBinding.mtbGrpContainer.setVisibility(View.VISIBLE); } else { mBinding.mtbGrpContainer.setVisibility(View.GONE); } - if (selection.requiresDocData()) { + if (selection.isDocumentRequired()) { mBinding.docContainer.setVisibility(View.VISIBLE); mBinding.document.setText(Html.fromHtml(getString(R.string.doc_testata, String.valueOf(selection.getNumDoc()), UtilityDate.formatDate(selection.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)))); } else { @@ -156,16 +152,12 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, public void selectDocInfo() { if (this.dialogInitialized) { + DialogSelectDocInfoView.newInstance( - mDocInterniSetupDTO, - this.mViewModel.dtbTipi.getValue(), - this.mViewModel.mtbGrup.getValue(), - this.mViewModel.fornitore.getValue(), - this.mViewModel.dataDoc.getValue(), - this.mViewModel.numDoc.getValue(), - this.mViewModel.note.getValue(), - this::onDocDetailsChanged - ).show(requireActivity().getSupportFragmentManager(), "tag"); + mDocInterniSetupDTO, + this::onDocDetailsChanged, + this::popMe) + .show(requireActivity().getSupportFragmentManager(), "tag"); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java index ac5a30c9..18a402cb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java @@ -15,12 +15,12 @@ import it.integry.integrywmsnative.core.di.BindableInteger; import it.integry.integrywmsnative.core.exception.NoDocTypeSelectedException; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoViewModel; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; public class DocInterniViewModel { @@ -35,8 +35,8 @@ public class DocInterniViewModel { private GrigliaArticoliDTO productsList; private final MutableLiveData> mDocsList = new MutableLiveData<>(); - public final MutableLiveData dtbTipi = new MutableLiveData<>(); - public final MutableLiveData mtbGrup = new MutableLiveData<>(); + public final MutableLiveData dtbTipi = new MutableLiveData<>(); + public final MutableLiveData mtbGrup = new MutableLiveData<>(); public final MutableLiveData fornitore = new MutableLiveData<>(); public final MutableLiveData dataDoc = new MutableLiveData<>(); public final MutableLiveData numDoc = new MutableLiveData<>(); @@ -82,16 +82,16 @@ public class DocInterniViewModel { return mDocsList; } - public void setSelectedDocDetails(DialogSelectDocInfoViewModel selection) { + public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection) { - this.fornitore.postValue(selection.getSelectedFornitore()); - this.mtbGrup.postValue(selection.getSelectedGruppoArt()); + this.fornitore.postValue(selection.getFornitore()); + this.mtbGrup.postValue(selection.getGruppoArt()); this.dataDoc.postValue(selection.getDataDoc()); - this.numDoc.postValue(selection.getNumDoc()); + this.numDoc.postValue(selection.getNumDoc() != null ? selection.getNumDoc().toString() : null); this.note.postValue(selection.getNote()); - if (selection.getSelectedTipoDoc() != null) { - this.dtbTipi.postValue(selection.getSelectedTipoDoc()); + if (selection.getTipoDoc() != null) { + this.dtbTipi.postValue(selection.getTipoDoc()); } } @@ -140,7 +140,7 @@ public class DocInterniViewModel { return this.dtbTipi.getValue().getCodDtip(); } - public TipiDocDTO getTipoDoc() { + public TipoDocDTO getTipoDoc() { if (this.dtbTipi.getValue() == null) { return null; } @@ -197,7 +197,7 @@ public class DocInterniViewModel { void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO); - void onDocDetailsChanged(DialogSelectDocInfoViewModel selection); + void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection); void onDocumentEditRequest(SqlMtbColt document, GrigliaArticoliDTO arts); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoComponent.java index bc9442f7..f2d33d73 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoComponent.java @@ -10,7 +10,5 @@ public interface DialogSelectDocInfoComponent { DialogSelectDocInfoComponent create(); } - void inject(DialogSelectDocInfoView dialogSelectDocInfoView); - -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoModule.java index 07dc5ce4..0145fe43 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoModule.java @@ -1,17 +1,14 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; -import javax.inject.Singleton; - import dagger.Module; import dagger.Provides; @Module(subcomponents = DialogSelectDocInfoComponent.class) public class DialogSelectDocInfoModule { - @Singleton @Provides - DialogSelectDocInfoViewModel dialogSelectMgrpDtipPairViewModel() { + DialogSelectDocInfoViewModel providesDialogDialogSelectDocInfoNewViewViewModel() { return new DialogSelectDocInfoViewModel(); } -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoResponseDTO.java new file mode 100644 index 00000000..988df534 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoResponseDTO.java @@ -0,0 +1,102 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; + +import java.util.Date; + +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; + +public class DialogSelectDocInfoResponseDTO { + + private TipoDocDTO tipoDoc; + private GruppoArticoloDTO gruppoArt; + private FornitoreDTO fornitore; + private Date dataDoc; + private Integer numDoc; + private String note; + private boolean fornitoreRequired; + private boolean documentRequired; + private boolean noteRequired; + + + public TipoDocDTO getTipoDoc() { + return tipoDoc; + } + + public DialogSelectDocInfoResponseDTO setTipoDoc(TipoDocDTO tipoDoc) { + this.tipoDoc = tipoDoc; + return this; + } + + public GruppoArticoloDTO getGruppoArt() { + return gruppoArt; + } + + public DialogSelectDocInfoResponseDTO setGruppoArt(GruppoArticoloDTO gruppoArt) { + this.gruppoArt = gruppoArt; + return this; + } + + public FornitoreDTO getFornitore() { + return fornitore; + } + + public DialogSelectDocInfoResponseDTO setFornitore(FornitoreDTO fornitore) { + this.fornitore = fornitore; + return this; + } + + public Date getDataDoc() { + return dataDoc; + } + + public DialogSelectDocInfoResponseDTO setDataDoc(Date dataDoc) { + this.dataDoc = dataDoc; + return this; + } + + public Integer getNumDoc() { + return numDoc; + } + + public DialogSelectDocInfoResponseDTO setNumDoc(Integer numDoc) { + this.numDoc = numDoc; + return this; + } + + public String getNote() { + return note; + } + + public DialogSelectDocInfoResponseDTO setNote(String note) { + this.note = note; + return this; + } + + public boolean isFornitoreRequired() { + return fornitoreRequired; + } + + public DialogSelectDocInfoResponseDTO setFornitoreRequired(boolean fornitoreRequired) { + this.fornitoreRequired = fornitoreRequired; + return this; + } + + public boolean isDocumentRequired() { + return documentRequired; + } + + public DialogSelectDocInfoResponseDTO setDocumentRequired(boolean documentRequired) { + this.documentRequired = documentRequired; + return this; + } + + public boolean isNoteRequired() { + return noteRequired; + } + + public DialogSelectDocInfoResponseDTO setNoteRequired(boolean noteRequired) { + this.noteRequired = noteRequired; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoView.java index a64d9ba2..f5f6e760 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoView.java @@ -1,240 +1,242 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; +import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.ArrayAdapter; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; +import androidx.appcompat.app.AlertDialog; import androidx.databinding.ObservableField; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + import java.util.Date; import javax.inject.Inject; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityObservable; -import it.integry.integrywmsnative.databinding.DialogSelectDocInfoBinding; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.DialogSelectDocInfoViewBinding; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_FornitoreAdapter; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_GroupArtAdapter; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_NoteAdapter; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter.DialogSelectDocInfo_TipoDocAdapter; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.FornitoreRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.NoteRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.TipoDocRequiredException; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; -public class DialogSelectDocInfoView extends BaseDialogFragment implements DialogSelectDocInfoViewModel.Listener { +public class DialogSelectDocInfoView extends BaseDialogFragment { @Inject DialogSelectDocInfoViewModel mViewModel; - private Context mCurrentContext; + + private DialogSelectDocInfoViewBinding mBindings; + private Context mContext; + + private final DocInterniSetupDTO mDocInputData; + private final RunnableArgs onConfirm; + private final Runnable onAbort; - public BindableString codDtip = new BindableString(); - public BindableString codMgrp = new BindableString(); - public BindableString codAnag = new BindableString(); - public BindableString numDoc = new BindableString(); - public BindableString note = new BindableString(); - public ObservableField dataDoc = new ObservableField<>(); + public ObservableField selectedTipoDoc = new ObservableField<>(); + public ObservableField selectedGroupArt = new ObservableField<>(); + public ObservableField selectedFornitore = new ObservableField<>(); + public ObservableField selectedNumDoc = new ObservableField<>(); + public ObservableField selectedDataDoc = new ObservableField<>(); + public ObservableField selectedNote = new ObservableField<>(); - private ArrayAdapter arrayAdapterCodDtips; - private ArrayAdapter arrayAdapterCodMgrps; - private ArrayAdapter arrayAdapterCodAnags; - private ArrayAdapter arrayAdapterNote; - private DialogSelectDocInfoBinding mBindings; + public ObservableField isFornitoreRequired = new ObservableField<>(); + public ObservableField isDocumentRequired = new ObservableField<>(); + public ObservableField isNoteRequired = new ObservableField<>(); - private final RunnableArgs currentOnFilterDone; - private final DocInterniSetupDTO docInterniSetupDTO; - private final TipiDocDTO selectedDtip; - private final GruppiArticoloDTO selectedGrp; - private final FornitoreDTO selectedAnag; - private final Date selectedDataDoc; - private final String selectedNumDoc; - private final String selectedNote; - - public static DialogSelectDocInfoView newInstance( - DocInterniSetupDTO docInterniSetupDTO, - TipiDocDTO tipiDocDTO, - GruppiArticoloDTO gruppiArticoloDTO, - FornitoreDTO fornitoreDTO, - Date dataDoc, - String numDoc, - String note, - RunnableArgs onDismiss - ) { - return new DialogSelectDocInfoView(docInterniSetupDTO, tipiDocDTO, gruppiArticoloDTO, fornitoreDTO, dataDoc, numDoc,note, onDismiss); + public static DialogSelectDocInfoView newInstance(DocInterniSetupDTO docInputData, + RunnableArgs onConfirm, + Runnable onAbort) { + return new DialogSelectDocInfoView(docInputData, onConfirm, onAbort); } - - private DialogSelectDocInfoView(DocInterniSetupDTO docInterniSetupDTO, - TipiDocDTO tipiDocDTO, - GruppiArticoloDTO gruppiArticoloDTO, - FornitoreDTO fornitoreDTO, - Date dataDoc, - String numDoc, - String note, - RunnableArgs onDismiss) { + private DialogSelectDocInfoView(DocInterniSetupDTO docInputData, + RunnableArgs onConfirm, + Runnable onAbort) { super(); - currentOnFilterDone = onDismiss; - this.docInterniSetupDTO = docInterniSetupDTO; - selectedDtip = tipiDocDTO; - selectedGrp = gruppiArticoloDTO; - selectedDataDoc = dataDoc; - selectedNumDoc = numDoc; - selectedNote = note; - selectedAnag = fornitoreDTO; + + this.mDocInputData = docInputData; + this.onConfirm = onConfirm; + this.onAbort = onAbort; } + + @NonNull @Override - public void onDismiss(@NonNull DialogInterface dialog) { - super.onDismiss(dialog); - if (currentOnFilterDone != null) currentOnFilterDone.run(mViewModel); - } + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - this.mCurrentContext = this.requireActivity(); - - mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_select_doc_info, container, false); - mBindings.setLifecycleOwner(this); - - MainApplication - .appComponent - .dialogSelectMgrpDtipPairComponent() + MainApplication.appComponent + .dialogSelectDocInfoNewViewComponent() .create() .inject(this); - mViewModel.init(docInterniSetupDTO); - mViewModel.setListeners(this); + + mBindings = DialogSelectDocInfoViewBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); mBindings.setView(this); - mBindings.setViewmodel(mViewModel); - getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - initView(); + mViewModel.setFornitori(mDocInputData.getFornitori()); + var cancelable = true; - mBindings.positiveBtn.setOnClickListener(view -> { - if (this.isInputValid()) { - getDialog().dismiss(); + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(cancelable) + .setPositiveButton(R.string.confirm, (dialog, which) -> { + //Volutamente vuoto + }) + .setNegativeButton(R.string.abort, (dialog, which) -> { + //Volutamente vuoto + }) + .create(); + + alertDialog.setOnShowListener(this); + alertDialog.setCanceledOnTouchOutside(cancelable); + + return alertDialog; + } + + @Override + public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); + + var alertDialog = ((AlertDialog) dialogInterface); + + var positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); + positiveButton.setOnClickListener(view -> { + try { + mBindings.inputCodDtip.setErrorEnabled(false); + mBindings.inputCodDtip.setError(null); + mBindings.inputCodAnagForn.setErrorEnabled(false); + mBindings.inputCodAnagForn.setError(null); + mBindings.inputNumDocLayout.setErrorEnabled(false); + mBindings.inputNumDoc.setError(null); + mBindings.inputDataDocLayout.setErrorEnabled(false); + mBindings.inputDataDoc.setError(null); + mBindings.inputNoteLayout.setErrorEnabled(false); + mBindings.inputNoteLayout.setError(null); + + mViewModel.validate(); + alertDialog.dismiss(); + + if (this.onConfirm != null) + this.onConfirm.run(new DialogSelectDocInfoResponseDTO() + .setTipoDoc(selectedTipoDoc.get()) + .setFornitore(selectedFornitore.get()) + .setGruppoArt(selectedGroupArt.get()) + .setDataDoc(selectedDataDoc.get()) + .setNumDoc(!UtilityString.isNullOrEmpty(selectedNumDoc.get()) ? Integer.parseInt(selectedNumDoc.get()) : null) + .setNote(selectedNote.get())); + } catch (TipoDocRequiredException tipoDocRequiredException) { + mBindings.inputCodDtip.setErrorEnabled(true); + mBindings.inputCodDtip.setError("Campo richiesto"); + } catch (FornitoreRequiredException fornitoreRequiredException) { + mBindings.inputCodAnagForn.setErrorEnabled(true); + mBindings.inputCodAnagForn.setError("Campo richiesto"); + } catch (DocumentRequiredException documentRequiredException) { + mBindings.inputNumDocLayout.setErrorEnabled(true); + mBindings.inputNumDocLayout.setError("Campo richiesto"); + mBindings.inputDataDocLayout.setErrorEnabled(true); + mBindings.inputDataDocLayout.setError("Campo richiesto"); + } catch (NoteRequiredException noteRequiredException) { + mBindings.inputNoteLayout.setErrorEnabled(true); + mBindings.inputNoteLayout.setError("Campo richiesto"); } }); - return mBindings.getRoot(); + var negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE); + negativeButton.setOnClickListener(view -> { + alertDialog.dismiss(); + if (this.onAbort != null) this.onAbort.run(); + }); + + this.initBindings(); + this.initAdapters(); } - private void initView() { - initArrayAdapters(); - initBindables(); - if (selectedDtip != null) { - codDtip.set(selectedDtip.getLabel()); - } - if (selectedGrp != null) { - codMgrp.set(selectedGrp.getLabel()); - } - if (selectedAnag != null) { - codAnag.set(selectedAnag.getLabel()); - } - if (selectedDataDoc != null) { - dataDoc.set(selectedDataDoc); - } - if (selectedNumDoc != null) { - numDoc.set(selectedNumDoc); - } - if (selectedNote != null) { - note.set(selectedNote); - } + private void initBindings() { + this.isFornitoreRequired.set(mViewModel.isFornitoreRequired().getValue()); + mViewModel.isFornitoreRequired().observe(this, val -> this.isFornitoreRequired.set(val)); + + this.isDocumentRequired.set(mViewModel.isDocumentRequired().getValue()); + mViewModel.isDocumentRequired().observe(this, val -> this.isDocumentRequired.set(val)); + + this.isNoteRequired.set(mViewModel.isNoteRequired().getValue()); + mViewModel.isNoteRequired().observe(this, val -> this.isNoteRequired.set(val)); + + + UtilityObservable.addPropertyChanged(this.selectedTipoDoc, mViewModel::setTipoDoc); + UtilityObservable.addPropertyChanged(this.selectedGroupArt, mViewModel::setGruppoArt); + UtilityObservable.addPropertyChanged(this.selectedFornitore, mViewModel::setFornitore); + UtilityObservable.addPropertyChanged(this.selectedDataDoc, mViewModel::setDataDoc); + UtilityObservable.addPropertyChanged(this.selectedNumDoc, + value -> this.mViewModel.setNumDoc(UtilityString.isNullOrEmpty(value) ? null : Integer.parseInt(value))); + UtilityObservable.addPropertyChanged(this.selectedNote, mViewModel::setNote); + + mViewModel.isFornitoreRequired() + .observe(this, val -> { + if (!val) { + this.selectedFornitore.set(null); + mBindings.filledExposedDropdownCodAnagList.setText(""); + } + }); + + mViewModel.isNoteRequired() + .observe(this, val -> { + if (!val) { + this.selectedNote.set(null); + mBindings.filledExposedDropdownNote.setText(""); + } + }); } - private boolean isInputValid() { - if (this.mViewModel.getSelectedTipoDoc() == null) { - mBindings.inputCodDtip.setErrorEnabled(true); - mBindings.inputCodDtip.setError("Seleziona un tipo documento"); - return false; - } - - if (this.mViewModel.requiresFornitore() && this.mViewModel.getSelectedFornitore() == null) { - mBindings.inputCodAnagForn.setErrorEnabled(true); - mBindings.inputCodAnagForn.setError("Seleziona un fornitore/destinatario"); - return false; - } - - if (this.mViewModel.requiresDocData() && this.mViewModel.getDataDoc() == null){ - mBindings.inputDataDoc.setError("Seleziona la data del documento"); - return false; - } - - if (this.mViewModel.requiresDocData() && (this.mViewModel.getNumDoc() == null || this.mViewModel.getNumDoc().isEmpty() )){ - mBindings.inputNumDoc.setError("Seleziona il numero del documento"); - return false; - } - - if (this.mViewModel.requiresNote() && (this.mViewModel.getNote() == null || this.mViewModel.getNote().isEmpty() )){ - mBindings.inputNoteLayout.setErrorEnabled(true); - mBindings.inputNoteLayout.setError("Specifica delle note per il documento"); - return false; - } - - return true; - } - - private void initArrayAdapters() { - - arrayAdapterCodDtips = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); - arrayAdapterCodDtips.addAll(mViewModel.getAvailableCodDtips()); + private void initAdapters() { + var arrayAdapterCodDtips = new DialogSelectDocInfo_TipoDocAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getTipiDoc()); mBindings.filledExposedDropdownCodDtips.setAdapter(arrayAdapterCodDtips); + mBindings.filledExposedDropdownCodDtips.setOnItemClickListener((adapterView, view, i, l) -> { + this.selectedTipoDoc.set( + ((DialogSelectDocInfo_TipoDocAdapter.ListModel) adapterView.getItemAtPosition(i)) + .getOriginalModel()); + }); - arrayAdapterCodMgrps = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); - arrayAdapterCodMgrps.addAll(mViewModel.getAvailableCodMgrps()); + var arrayAdapterCodMgrps = new DialogSelectDocInfo_GroupArtAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getGruppiArt()); mBindings.filledExposedDropdownCodMgrps.setAdapter(arrayAdapterCodMgrps); + mBindings.filledExposedDropdownCodMgrps.setOnItemClickListener((adapterView, view, i, l) -> { + this.selectedGroupArt.set( + ((DialogSelectDocInfo_GroupArtAdapter.ListModel) adapterView.getItemAtPosition(i)) + .getOriginalModel()); + }); - arrayAdapterCodAnags = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); - arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori()); - mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterCodAnags); + var arrayAdapterFornitori = new DialogSelectDocInfo_FornitoreAdapter(mContext, R.layout.array_adapter_single_item, mDocInputData.getFornitori()); + mBindings.filledExposedDropdownCodAnagList.setAdapter(arrayAdapterFornitori); + mBindings.filledExposedDropdownCodAnagList.setOnItemClickListener((adapterView, view, i, l) -> { + this.selectedFornitore.set( + ((DialogSelectDocInfo_FornitoreAdapter.ListModel) adapterView.getItemAtPosition(i)) + .getOriginalModel()); + }); - arrayAdapterNote = new ArrayAdapter<>(mCurrentContext, R.layout.dialog_select_doc_info__single_item); - arrayAdapterNote.addAll(mViewModel.getAdditionalNotes()); + var arrayAdapterNote = new DialogSelectDocInfo_NoteAdapter(mContext, R.layout.array_adapter_single_item, SettingsManager.iDB().getNotePerditaDocInterni()); mBindings.filledExposedDropdownNote.setAdapter(arrayAdapterNote); } - private void initBindables() { - BindableString.registerListener(codDtip, codDtip -> { - mViewModel.setCodDtip(codDtip); - mBindings.inputCodAnagForn.setVisibility(mViewModel.requiresFornitore() ? View.VISIBLE : View.GONE); - mBindings.inputDataDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE); - mBindings.inputNumDocLayout.setVisibility(mViewModel.requiresDocData() ? View.VISIBLE : View.GONE); - mBindings.inputNoteLayout.setVisibility(mViewModel.requiresNote() ? View.VISIBLE : View.GONE); - }); - BindableString.registerListener(codMgrp, mViewModel::setCodMgrp); - BindableString.registerListener(codAnag, mViewModel::setCodAnag); - BindableString.registerListener(numDoc, mViewModel::setNumDoc); - BindableString.registerListener(note, mViewModel::setNote); - UtilityObservable.addPropertyChanged(this.dataDoc, (value) -> { - this.mViewModel.setDataDoc(value); - }); - } - - - @Override - public void onDocTypeSelected() { - arrayAdapterCodAnags.clear(); - if (mViewModel.getSelectedFornitore() != null && !mViewModel.getAvailableFornitori().contains(mViewModel.getSelectedFornitore().getLabel())) { - codAnag.set(""); - } - if (mViewModel.getNote() != null && ! mViewModel.requiresNote()){ - mViewModel.setNote(null); - } - arrayAdapterCodAnags.addAll(mViewModel.getAvailableFornitori()); - } -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java index 38a80d64..17fa4087 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java @@ -1,198 +1,163 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + import com.annimon.stream.Stream; -import java.util.ArrayList; import java.util.Date; import java.util.List; -import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.FornitoreRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.NoteRequiredException; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.TipoDocRequiredException; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; + +public class DialogSelectDocInfoViewModel extends ViewModel { + + private final MutableLiveData tipoDoc = new MutableLiveData<>(); + private final MutableLiveData gruppoArt = new MutableLiveData<>(); + private final MutableLiveData fornitore = new MutableLiveData<>(); + private final MutableLiveData dataDoc = new MutableLiveData<>(); + private final MutableLiveData numDoc = new MutableLiveData<>(); + private final MutableLiveData note = new MutableLiveData<>(); + + private final MutableLiveData> availableFornitori = new MutableLiveData<>(); -public class DialogSelectDocInfoViewModel { + private final MutableLiveData fornitoreRequired = new MutableLiveData<>(false); + private final MutableLiveData documentRequired = new MutableLiveData<>(false); + private final MutableLiveData noteRequired = new MutableLiveData<>(false); + public DialogSelectDocInfoViewModel() { + tipoDoc.observeForever(val -> + fornitoreRequired.postValue( + val != null && + (val.getGestioneDoc().equals("T") || + val.getGestioneDoc().equals("A") || + (val.getGestioneDoc().equals("P") && + !val.getGestione().equals("L"))))); - private DocInterniSetupDTO mDocInterniSetupDTO; + tipoDoc.observeForever(val -> + documentRequired.postValue( + val != null && + val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L"))); - private String mTipoDoc; - - private String mGruppoArt; - - private String mFornitore; - - private Date mDataDoc; - - private String mNumDoc; - - private String mNote; - - private Listener mListener; - - public void init(DocInterniSetupDTO initialList) { - this.mDocInterniSetupDTO = initialList; - this.mTipoDoc = null; - this.mGruppoArt = null; - this.mFornitore = null; - this.mDataDoc = null; - this.mNumDoc = null; - this.mNote = null; - this.mListener = null; + tipoDoc.observeForever(val -> + noteRequired.postValue( + val != null && + val.getGestioneDoc().equals("P") && + val.getGestione().equals("L"))); } - public String getCodDtip() { - return mTipoDoc; + public void setFornitori(List fornitori) { + tipoDoc.observeForever(val -> { + availableFornitori.postValue(Stream.of(fornitori) + .filter(forn -> { + if (val.getGestioneDoc().equalsIgnoreCase("T")) { + return forn.getTipoAnag().equalsIgnoreCase("D") && + forn.getGestioneAnag().equalsIgnoreCase( + val.getGestione().equalsIgnoreCase("V") ? "V" : "A" + ); + } else { + return forn.getTipoAnag().equalsIgnoreCase("F"); + } + }) + .toList()); + }); } - public void setCodDtip(String codDtip) { - this.mTipoDoc = codDtip; - if (this.getSelectedTipoDoc() != null) { - this.mListener.onDocTypeSelected(); - } + + public MutableLiveData isFornitoreRequired() { + return fornitoreRequired; } - public String getCodMgrp() { - return mGruppoArt; + public MutableLiveData isDocumentRequired() { + return documentRequired; } - public void setCodMgrp(String codMgrp) { - this.mGruppoArt = codMgrp; + public MutableLiveData isNoteRequired() { + return noteRequired; } - public void setCodAnag(String codAnag) { - this.mFornitore = codAnag; + + public MutableLiveData getTipoDoc() { + return tipoDoc; + } + + public DialogSelectDocInfoViewModel setTipoDoc(TipoDocDTO tipoDoc) { + this.tipoDoc.postValue(tipoDoc); + return this; + } + + public GruppoArticoloDTO getGruppoArt() { + return gruppoArt.getValue(); + } + + public DialogSelectDocInfoViewModel setGruppoArt(GruppoArticoloDTO gruppoArt) { + this.gruppoArt.postValue(gruppoArt); + return this; + } + + public FornitoreDTO getFornitore() { + return fornitore.getValue(); + } + + public DialogSelectDocInfoViewModel setFornitore(FornitoreDTO fornitore) { + this.fornitore.postValue(fornitore); + return this; } public Date getDataDoc() { - return mDataDoc; + return dataDoc.getValue(); } - public void setDataDoc(Date mDataDoc) { - this.mDataDoc = mDataDoc; + public DialogSelectDocInfoViewModel setDataDoc(Date dataDoc) { + this.dataDoc.postValue(dataDoc); + return this; } - public String getNumDoc() { - return mNumDoc; + public Integer getNumDoc() { + return numDoc.getValue(); } - public void setNumDoc(String numDoc) { - this.mNumDoc = numDoc; + public DialogSelectDocInfoViewModel setNumDoc(Integer numDoc) { + this.numDoc.postValue(numDoc); + return this; } public String getNote() { - return mNote; + return note.getValue(); } public DialogSelectDocInfoViewModel setNote(String note) { - this.mNote = note; + this.note.postValue(note); return this; } - public DialogSelectDocInfoViewModel setListeners(Listener listener) { - this.mListener = listener; - return this; - } - public List getAvailableCodDtips() { - return mDocInterniSetupDTO.getTipiDoc() != null ? Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList() : new ArrayList<>(); - } - - public List getAvailableCodMgrps() { - return mDocInterniSetupDTO.getGruppiArt() != null ? Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList() : new ArrayList<>(); - } - - public List getAvailableFornitori() { - if (!this.requiresFornitore()) { - return new ArrayList<>(); - } - TipiDocDTO selectedDocType = getSelectedTipoDoc(); - - return Stream.of(mDocInterniSetupDTO.getFornitori()) - .filter(forn -> { - if (selectedDocType.getGestioneDoc().equalsIgnoreCase("T")) { - return forn.getTipoAnag().equalsIgnoreCase("D") && - forn.getGestioneAnag().equalsIgnoreCase( - selectedDocType.getGestione().equalsIgnoreCase("V") ? "V" : "A" - ); - } else { - return forn.getTipoAnag().equalsIgnoreCase("F"); - } - }) - .map(FornitoreDTO::getLabel).toList(); - } - - public TipiDocDTO getSelectedTipoDoc() { - return Stream.of(mDocInterniSetupDTO.getTipiDoc()).filter(x -> x.getLabel().equals(mTipoDoc)).findFirstOrElse(null); - } - - public FornitoreDTO getSelectedFornitore() { - return Stream.of(mDocInterniSetupDTO.getFornitori()).filter(x -> x.getLabel().equals(mFornitore)).findFirstOrElse(null); - } - - public GruppiArticoloDTO getSelectedGruppoArt() { - if (mGruppoArt == null) { - return null; + public boolean validate() throws TipoDocRequiredException, FornitoreRequiredException, DocumentRequiredException, NoteRequiredException { + if (this.getTipoDoc().getValue() == null) { + throw new TipoDocRequiredException(); } - return Stream.of(mDocInterniSetupDTO.getGruppiArt()).filter(x -> x.getLabel().equals(mGruppoArt)).findFirstOrElse(null); - } - - public boolean requiresFornitore() { - return this.getSelectedTipoDoc() != null && ( - this.getSelectedTipoDoc().getGestioneDoc().equals("T") || - this.getSelectedTipoDoc().getGestioneDoc().equals("A") || - ( - this.getSelectedTipoDoc().getGestioneDoc().equals("P") && - !this.getSelectedTipoDoc().getGestione().equals("L") - ) - ); - } - - public boolean requiresNote() { - return this.getSelectedTipoDoc() != null && - this.getSelectedTipoDoc().getGestioneDoc().equals("P") && - this.getSelectedTipoDoc().getGestione().equals("L"); - } - - public boolean isInputValid() { - if (this.getSelectedTipoDoc() == null) { - return false; + if (Boolean.TRUE.equals(this.isFornitoreRequired().getValue()) && this.getFornitore() == null) { + throw new FornitoreRequiredException(); } - if (this.requiresFornitore() && this.getSelectedFornitore() == null) { - return false; - } - - if (this.requiresDocData() && (this.getDataDoc() == null || this.getNumDoc() == null)) { - return false; + if (Boolean.TRUE.equals(this.isDocumentRequired().getValue()) && (this.getDataDoc() == null || this.getNumDoc() == null)) { + throw new DocumentRequiredException(); } - if (this.requiresNote() && (this.getNote() == null || this.getNote().length() <= 0)) { - return false; + if (Boolean.TRUE.equals(this.isNoteRequired().getValue()) && UtilityString.isNullOrEmpty(this.getNote())) { + throw new NoteRequiredException(); } return true; } - - public boolean requiresDocData() { - TipiDocDTO doc = this.getSelectedTipoDoc(); - return doc != null && doc.getGestioneDoc().equalsIgnoreCase("P") && !doc.getGestione().equalsIgnoreCase("L"); - } - - public List getAdditionalNotes() { - return SettingsManager.iDB().getNotePerditaDocInterni(); - } - - public interface Listener extends ILoadingListener { - - void onError(Exception ex); - - void onDocTypeSelected(); - - } -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_FornitoreAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_FornitoreAdapter.java new file mode 100644 index 00000000..7b394ab2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_FornitoreAdapter.java @@ -0,0 +1,50 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import com.annimon.stream.Stream; + +import java.util.List; + +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; + +public class DialogSelectDocInfo_FornitoreAdapter extends ArrayAdapter { + + public DialogSelectDocInfo_FornitoreAdapter(@NonNull Context context, int resource, List inputData) { + super(context, resource); + + if (inputData == null) return; + + List mDataset = Stream.of(inputData) + .map(x -> new ListModel() + .setOriginalModel(x)) + .toList(); + + addAll(mDataset); + } + + public static class ListModel { + + private FornitoreDTO originalModel; + + public FornitoreDTO getOriginalModel() { + return originalModel; + } + + public ListModel setOriginalModel(FornitoreDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + @Override + public String toString() { + return this.getOriginalModel().getCodAnag() + + (this.getOriginalModel().getCodVdes() != null ? " - " + this.getOriginalModel().getCodVdes() : "") + + " ( " + this.getOriginalModel().getDescrizione() + " )"; + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_GroupArtAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_GroupArtAdapter.java new file mode 100644 index 00000000..58b9e809 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_GroupArtAdapter.java @@ -0,0 +1,47 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import com.annimon.stream.Stream; + +import java.util.List; + +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; + +public class DialogSelectDocInfo_GroupArtAdapter extends ArrayAdapter { + + public DialogSelectDocInfo_GroupArtAdapter(@NonNull Context context, int resource, List inputData) { + super(context, resource); + + if(inputData == null) return; + + List mDataset = Stream.of(inputData) + .map(x -> new ListModel() + .setOriginalModel(x)) + .toList(); + + addAll(mDataset); + } + + public static class ListModel { + + private GruppoArticoloDTO originalModel; + + public GruppoArticoloDTO getOriginalModel() { + return originalModel; + } + public ListModel setOriginalModel(GruppoArticoloDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + @Override + public String toString() { + return this.getOriginalModel().getCodMgrp() + " - " + this.getOriginalModel().getDescrizione(); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_NoteAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_NoteAdapter.java new file mode 100644 index 00000000..22095bbb --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_NoteAdapter.java @@ -0,0 +1,20 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import java.util.List; + +public class DialogSelectDocInfo_NoteAdapter extends ArrayAdapter { + + public DialogSelectDocInfo_NoteAdapter(@NonNull Context context, int resource, List inputData) { + super(context, resource); + + if (inputData == null) return; + + addAll(inputData); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_TipoDocAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_TipoDocAdapter.java new file mode 100644 index 00000000..15ad83f5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/adapter/DialogSelectDocInfo_TipoDocAdapter.java @@ -0,0 +1,47 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; + +import androidx.annotation.NonNull; + +import com.annimon.stream.Stream; + +import java.util.List; + +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; + +public class DialogSelectDocInfo_TipoDocAdapter extends ArrayAdapter { + + public DialogSelectDocInfo_TipoDocAdapter(@NonNull Context context, int resource, List inputData) { + super(context, resource); + + if(inputData == null) return; + + List mDataset = Stream.of(inputData) + .map(x -> new ListModel() + .setOriginalModel(x)) + .toList(); + + addAll(mDataset); + } + + public static class ListModel { + + private TipoDocDTO originalModel; + + public TipoDocDTO getOriginalModel() { + return originalModel; + } + public ListModel setOriginalModel(TipoDocDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + @Override + public String toString() { + return this.getOriginalModel().getCodDtip() + " - " + this.getOriginalModel().getDescrizione(); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/DocumentRequiredException.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/DocumentRequiredException.java new file mode 100644 index 00000000..f61b690b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/DocumentRequiredException.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception; + +public class DocumentRequiredException extends Exception { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/FornitoreRequiredException.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/FornitoreRequiredException.java new file mode 100644 index 00000000..25e2b15c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/FornitoreRequiredException.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception; + +public class FornitoreRequiredException extends Exception { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/NoteRequiredException.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/NoteRequiredException.java new file mode 100644 index 00000000..dde91622 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/NoteRequiredException.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception; + +public class NoteRequiredException extends Exception { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/TipoDocRequiredException.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/TipoDocRequiredException.java new file mode 100644 index 00000000..ce58215d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/exception/TipoDocRequiredException.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception; + +public class TipoDocRequiredException extends Exception { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocInterniSetupDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocInterniSetupDTO.java index 619a6fb2..c00109a6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocInterniSetupDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DocInterniSetupDTO.java @@ -5,26 +5,26 @@ import java.util.List; public class DocInterniSetupDTO { - private List tipiDoc; + private List tipiDoc; - private List gruppiArt; + private List gruppiArt; private List fornitori; - public List getTipiDoc() { + public List getTipiDoc() { return tipiDoc; } - public void setTipiDoc(List tipiDoc) { + public void setTipiDoc(List tipiDoc) { this.tipiDoc = tipiDoc; } - public List getGruppiArt() { + public List getGruppiArt() { return gruppiArt; } - public void setGruppiArt(List gruppiArt) { + public void setGruppiArt(List gruppiArt) { this.gruppiArt = gruppiArt; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppiArticoloDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppoArticoloDTO.java similarity index 94% rename from app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppiArticoloDTO.java rename to app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppoArticoloDTO.java index 8cc28f35..832169bc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppiArticoloDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GruppoArticoloDTO.java @@ -1,6 +1,6 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dto; -public class GruppiArticoloDTO { +public class GruppoArticoloDTO { private String codMgrp; private String descrizione; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipiDocDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java similarity index 92% rename from app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipiDocDTO.java rename to app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java index e8173c43..1dffd4ac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipiDocDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java @@ -1,6 +1,6 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dto; -public class TipiDocDTO { +public class TipoDocDTO { private String codDtip; private String descrizione; @@ -48,7 +48,7 @@ public class TipiDocDTO { return requireNote; } - public TipiDocDTO setRequireNote(boolean requireNote) { + public TipoDocDTO setRequireNote(boolean requireNote) { this.requireNote = requireNote; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index 0aa317b2..a4c4a295 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -39,7 +39,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; @@ -77,7 +77,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter public BindableBoolean isDocumentExportable = new BindableBoolean(false); private final ObservableArrayList documentRowsObservableList = new ObservableArrayList<>(); - public static Intent newInstance(Context context, SqlMtbColt document, GrigliaArticoliDTO productList, TipiDocDTO tipoDoc) { + public static Intent newInstance(Context context, SqlMtbColt document, GrigliaArticoliDTO productList, TipoDocDTO tipoDoc) { Intent myIntent = new Intent(context, DocInterniEditFormActivity.class); String doc = DataCache.addItem(document); @@ -100,7 +100,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT)); GrigliaArticoliDTO griglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST)); List productList = griglia.getGrigliaAcquistiChild(); - TipiDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC)); + TipoDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC)); this.initViewModel(); this.viewModel.setDocument(document); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 4ad5de32..f8257cf5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -27,7 +27,7 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ResultDTO; @@ -40,7 +40,7 @@ public class DocInterniEditFormViewModel { private final DocInterniRESTConsumer docInterniRESTConsumer; private DocInterniEditFormViewModel.Listener listener; private List productsList; - private TipiDocDTO tipoDoc; + private TipoDocDTO tipoDoc; private boolean isCheckPartitaMag = false; private JSONObject checkFornitoreRules = null; public MutableLiveData document = new MutableLiveData<>(); @@ -302,7 +302,7 @@ public class DocInterniEditFormViewModel { return Stream.of(productsList).filter(prod -> prod.getCodMart().equalsIgnoreCase(codMart)).findFirstOrElse(null); } - public DocInterniEditFormViewModel setTipoDoc(TipiDocDTO docType) { + public DocInterniEditFormViewModel setTipoDoc(TipoDocDTO docType) { this.tipoDoc = docType; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariFragment.java index 77a0306a..7ef4f4cb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariFragment.java @@ -65,6 +65,7 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + setRetainInstance(true); mBinding = FragmentElencoInventarioBinding.inflate(inflater, container, false); mBinding.setLifecycleOwner(this); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index 44b3b696..c6431f7a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -134,6 +134,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setRetainInstance(true); + mCurrentGestioneOrd = GestioneEnum.fromString(getArguments().getString("gestioneOrd")); String gestioneCol = getArguments().getString("gestioneCol"); mCurrentGestioneCol = gestioneCol != null ? GestioneEnum.fromString(gestioneCol) : null; @@ -795,8 +797,10 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF listModel.setSubDescription(x.getRifOrd()); - String testataDataConsString = String.format(getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - listModel.setRightDescription(testataDataConsString); + if(x.getDataConsD() != null) { + String testataDataConsString = String.format(getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + listModel.setRightDescription(testataDataConsString); + } listModel.setOriginalModel(x); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index f052ea47..db8fd627 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -110,6 +110,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setRetainInstance(true); mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione")); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java index 70e8f03f..20fc7072 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/ProdOrdineProduzioneElencoFragment.java @@ -89,6 +89,7 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setRetainInstance(true); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java index 999fa4f7..b334be87 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/ProdFabbisognoLineeProdFragment.java @@ -58,6 +58,7 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setRetainInstance(true); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java index 28bf4b07..b1d20c34 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_linee_produzione/ProdLineeProduzioneFragment.java @@ -50,6 +50,7 @@ public class ProdLineeProduzioneFragment extends BaseFragment implements ITitled @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + setRetainInstance(true); mBinding = FragmentLineeProdBinding.inflate(inflater, container, false); MainApplication.appComponent .prodLineeProduzioneComponent() diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java index 508c4d2a..f33cbcce 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java @@ -86,6 +86,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + setRetainInstance(true); mBinding = FragmentProdRecuperoMaterialeBinding.inflate(inflater, container, false); MainApplication.appComponent @@ -263,7 +264,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl @Override public void onLURequest(boolean canLUBeCreated, boolean shouldCheckIfDocExist, RunnableArgss onComplete) { - DialogScanOrCreateLUView.newInstance(canLUBeCreated, shouldCheckIfDocExist, onComplete) + DialogScanOrCreateLUView.newInstance(canLUBeCreated, shouldCheckIfDocExist, true, onComplete) .show(requireActivity().getSupportFragmentManager(), "tag"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java index 85acdbc7..242d2eba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeFragment.java @@ -75,6 +75,7 @@ public class ProdVersamentoMaterialeFragment extends BaseFragment implements Pro public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment + setRetainInstance(true); mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_versamento_materiale, container, false); MainApplication.appComponent @@ -174,7 +175,7 @@ public class ProdVersamentoMaterialeFragment extends BaseFragment implements Pro } private void openLU() { - DialogScanOrCreateLUView.newInstance(false, false, true, false, (mtbColt, created) -> { + DialogScanOrCreateLUView.newInstance(false, false, true, false, true, (mtbColt, created) -> { if (mtbColt == null) { popMe(); } else if ((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE || mtbColt.getGestioneEnum() == GestioneEnum.VENDITA) && mtbColt.getSegno().equals(+1)) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index c77a0082..cb69f2d2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -88,6 +88,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment + setRetainInstance(true); mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_acquisto, container, false); mBinding.setViewmodel(this); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 623304fb..2dc39ce2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -43,6 +43,7 @@ import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -83,6 +84,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr private RettificaGiacenzeMainListAdapter mAdapter; private int barcodeScannerIstanceID = -1; + private GestioneEnum mCurrentGestione; public RettificaGiacenzeFragment() { // Required empty public constructor @@ -90,13 +92,28 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr public static RettificaGiacenzeFragment newInstance() { + return newInstance(null); + } + + + public static RettificaGiacenzeFragment newInstance(GestioneEnum gestione) { RettificaGiacenzeFragment fragment = new RettificaGiacenzeFragment(); + Bundle args = new Bundle(); + + if (gestione != null) + args.putString("gestione", gestione.getText()); + + fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { - requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); +// requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + + if (getArguments() != null && getArguments().containsKey("gestione")) + mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione")); + super.onCreate(savedInstanceState); } @@ -122,6 +139,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + setRetainInstance(true); mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_rettifica_giacenze, container, false); @@ -198,7 +216,8 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr mViewModel.init( SettingsManager.i().getUser().getFullname(), - SettingsManager.i().getUserSession().getDepo().getCodMdep()); + SettingsManager.i().getUserSession().getDepo().getCodMdep(), + mCurrentGestione); } @Override @@ -287,8 +306,8 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr } @Override - public void onLUOpenRequest(RunnableArgss onComplete) { - DialogScanOrCreateLUView.newInstance(true, false, (mtbColt, created) -> { + public void onLUOpenRequest(boolean enableCreation, boolean checkIfDocumentExists, boolean warnOnOpeningVendita, RunnableArgss onComplete) { + DialogScanOrCreateLUView.newInstance(enableCreation, checkIfDocumentExists, warnOnOpeningVendita, (mtbColt, created) -> { if (mtbColt == null) { popMe(); } else { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index 0f34b02e..6c8483fe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -24,6 +24,7 @@ import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; @@ -51,6 +52,8 @@ public class RettificaGiacenzeViewModel { private RettificaGiacenzeViewModel.Listener mListener; + private GestioneEnum mDefaultGestione; + private String mCurrentUser; private String mCurrentCodMdep; private boolean mIsCreatedLU; @@ -71,9 +74,10 @@ public class RettificaGiacenzeViewModel { } - public void init(String currentUser, String currentCodMdep) { + public void init(String currentUser, String currentCodMdep, GestioneEnum defaultGestione) { this.mCurrentUser = currentUser; this.mCurrentCodMdep = currentCodMdep; + this.mDefaultGestione = defaultGestione; this.sendOnLoadingStarted(); @@ -87,12 +91,15 @@ public class RettificaGiacenzeViewModel { } public void requestLU() { - this.sendOnLUOpenRequest((mtbColt, created) -> { - this.mCurrentMtbColt = mtbColt; - this.mIsCreatedLU = created; + this.sendOnLUOpenRequest(mDefaultGestione == null || mDefaultGestione != GestioneEnum.VENDITA, + mDefaultGestione != null && mDefaultGestione == GestioneEnum.VENDITA, + mDefaultGestione == null || mDefaultGestione != GestioneEnum.VENDITA, + (mtbColt, created) -> { + this.mCurrentMtbColt = mtbColt; + this.mIsCreatedLU = created; - this.sendLUOpened(mtbColt); - }); + this.sendLUOpened(mtbColt); + }); } public RettificaGiacenzeViewModel setListener(RettificaGiacenzeViewModel.Listener listener) { @@ -435,19 +442,14 @@ public class RettificaGiacenzeViewModel { Runnable saveAction = () -> { this.mColliMagazzinoRESTConsumer.updateDataFine( mCurrentMtbColt, () -> { - this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> { - if (shouldChangePosition) { - this.savePosizione(mtbDepoPosizione, () -> { - this.mAnyEditDone = false; - postSaveBehaviour(onComplete); - }); - } else { + this.askPostionChange(mCurrentMtbColt, () -> { + this.createDoc(mCurrentMtbColt, () -> { this.mAnyEditDone = false; postSaveBehaviour(onComplete); - } - + }); }); + }, this::sendError); }; @@ -463,6 +465,33 @@ public class RettificaGiacenzeViewModel { } + private void askPostionChange(MtbColt mtbColt, Runnable onComplete) { + if (mtbColt.getGestioneEnum() == GestioneEnum.VENDITA || mtbColt.getSegno() == -1) { + onComplete.run(); + return; + } + + + this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> { + if (shouldChangePosition) { + this.savePosizione(mtbDepoPosizione, () -> { + onComplete.run(); + }); + } else { + onComplete.run(); + } + }); + } + + private void createDoc(MtbColt mtbColt, Runnable onComplete) { + if (mtbColt.getGestioneEnum() != GestioneEnum.VENDITA && mtbColt.getSegno() != -1) { + onComplete.run(); + return; + } + + mRettificaGiacenzeRESTConsumer.saveDoc(this.mCurrentMtbColt, onComplete, this::sendError); + } + private void saveCausaleRettificaGiacenze(Runnable onComplete) { this.mColliMagazzinoRESTConsumer.confirmGiacenzaUL(mCurrentMtbColt, onComplete, this::sendError); } @@ -691,8 +720,9 @@ public class RettificaGiacenzeViewModel { if (this.mListener != null) mListener.onArtListLoaded(artList, onArtChoosed); } - private void sendOnLUOpenRequest(RunnableArgss onComplete) { - if (this.mListener != null) mListener.onLUOpenRequest(onComplete); + private void sendOnLUOpenRequest(boolean enableCreation, boolean checkIfDocumentExists, boolean warnOnOpeningVendita, RunnableArgss onComplete) { + if (this.mListener != null) + mListener.onLUOpenRequest(enableCreation, checkIfDocumentExists, warnOnOpeningVendita, onComplete); } private void sendError(Exception ex) { @@ -778,7 +808,7 @@ public class RettificaGiacenzeViewModel { void onArtListLoaded(ArrayList artList, RunnableArgs onArtChoosed); - void onLUOpenRequest(RunnableArgss onComplete); + void onLUOpenRequest(boolean enableCreation, boolean checkIfDocumentExists, boolean warnOnOpeningVendita, RunnableArgss onComplete); void onLUOpened(MtbColt mtbColt); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java index fe77a742..366b0211 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumer.java @@ -4,17 +4,25 @@ import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.Collections; import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; 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.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.SaveDocFromPickingRequestDTO; +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 retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; @Singleton public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer { @@ -82,4 +90,25 @@ public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer { }, onFailed); } + + public void saveDoc(MtbColt mtbColt, Runnable onComplete, RunnableArgs onError) { + + var request = new SaveDocFromPickingRequestDTO() + .setColliFromMtbColts(Collections.singletonList(mtbColt)); + + final RettificaGiacenzeRESTConsumerService service = RESTBuilder.getService(RettificaGiacenzeRESTConsumerService.class); + service.saveDocFromPickingPvm(request) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswerList(response, "saveDocFromPickingPvm", data -> onComplete.run(), onError); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onError.run(new Exception(t)); + } + }); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumerService.java new file mode 100644 index 00000000..fd6ae1d7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/rest/RettificaGiacenzeRESTConsumerService.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.rettifica_giacenze.rest; + +import it.integry.integrywmsnative.core.rest.model.SaveDocFromPickingRequestDTO; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.POST; + +public interface RettificaGiacenzeRESTConsumerService { + + + @POST("saveDocFromPickingPvm") + Call> saveDocFromPickingPvm(@Body SaveDocFromPickingRequestDTO saveDocFromPickingRequestDTO); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java index d9fccf32..cd3acf7c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java @@ -6,7 +6,6 @@ import android.os.Bundle; import android.text.Html; import android.text.SpannableString; import android.util.Base64; -import android.util.Base64OutputStream; import android.widget.Toast; import androidx.annotation.NonNull; @@ -20,11 +19,13 @@ import androidx.preference.PreferenceFragmentCompat; import com.annimon.stream.Stream; import com.harrysoft.androidbluetoothserial.BluetoothManager; -import java.io.ByteArrayOutputStream; +import java.io.BufferedReader; import java.io.File; -import java.io.FileInputStream; +import java.io.FileReader; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.concurrent.ExecutorService; import javax.inject.Inject; @@ -50,6 +51,10 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT public SystemRESTConsumer systemRESTConsumer; @Inject public DialogProgressView mCurrentProgress; + @Inject + public ExecutorService executorService; + + private boolean progressOpened; private final ArrayList onPreDestroyList = new ArrayList<>(); @@ -64,6 +69,7 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setRetainInstance(true); MainApplication .appComponent @@ -214,49 +220,49 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT DialogYesNoView.newInstance("Esportazione log", "Vuoi inviare il log degli eventi al supporto?", result -> { this.openProgress(); - File yourFile = appContext.getLogFilePath(); - var files = yourFile.listFiles(); + executorService.execute(() -> { - var fileToShare = Stream.of(files) - .sortBy(x -> -1 * x.lastModified()) - .findFirstOrElse(null); - try { - FileInputStream fis = new FileInputStream(fileToShare); - byte[] buffer = new byte[fis.available()];//specify the size to allow - int bytesRead; - ByteArrayOutputStream output = new ByteArrayOutputStream(); - Base64OutputStream output64 = new Base64OutputStream(output, Base64.DEFAULT); + File yourFile = appContext.getLogFilePath(); + var files = yourFile.listFiles(); - while ((bytesRead = fis.read(buffer)) != -1) { - output64.write(buffer, 0, bytesRead); + var fileToShare = Stream.of(files) + .sortBy(x -> -1 * x.lastModified()) + .findFirstOrElse(null); + try { + var htmlContent = createAppLogAttachment(fileToShare); + + byte[] buffer = htmlContent.getBytes();//specify the size to allow. + String base64 = Base64.encodeToString(buffer, Base64.NO_WRAP); + + var attachment = new MailAttachmentDTO() + .setFileName("wms_log.html") + .setFileb64Content(base64); + + var mailRequest = new MailRequestDTO() + .setTo("developer@integry.it") + .setMsgText("Questo รจ una mail che contiene il log del WMS") + .setSubject("U vuemmeess") + .setAttachments(new ArrayList<>()); + + mailRequest.getAttachments().add(attachment); + + systemRESTConsumer.sendMail(mailRequest, this::closeProgress, ex -> { + this.closeProgress(); + requireActivity().runOnUiThread(() -> { + DialogSimpleMessageView + .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) + .show(requireActivity().getSupportFragmentManager(), "tag"); + }); + }); + } catch (Exception ex) { + requireActivity().runOnUiThread(() -> { + DialogSimpleMessageView + .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) + .show(requireActivity().getSupportFragmentManager(), "tag"); + }); } - - output64.close(); - - var attachment = new MailAttachmentDTO() - .setFileName("wms_log.log") - .setFileb64Content(output.toString()); - - var mailRequest = new MailRequestDTO() - .setTo("developer@integry.it") - .setMsgText("Questo รจ una mail che contiene il log del WMS") - .setSubject("U vuemmeess") - .setAttachments(new ArrayList<>()); - - mailRequest.getAttachments().add(attachment); - - systemRESTConsumer.sendMail(mailRequest, this::closeProgress, ex -> { - this.closeProgress(); - DialogSimpleMessageView - .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) - .show(requireActivity().getSupportFragmentManager(), "tag"); - }); - } catch (Exception ex) { - DialogSimpleMessageView - .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) - .show(requireActivity().getSupportFragmentManager(), "tag"); - } + }); }) .show(getParentFragmentManager(), "tag"); } @@ -279,4 +285,90 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT }); } } + + + private String createAppLogAttachment(File logFile) { + //Read text from file + StringBuilder text = new StringBuilder(); + + try { + BufferedReader br = new BufferedReader(new FileReader(logFile)); + String line; + + while ((line = br.readLine()) != null) { + text.append(line); + text.append('\n'); + } + br.close(); + } catch (IOException e) { + //You'll need to add proper error handling here + } + + StringBuilder htmlContent = new StringBuilder("\n" + + "\n" + + " WMS Log\n" + + "\n" + + " \n" + + "\n" + + "\n" + + ""); + + String[] lines = text.toString().split("\n"); + + for (String line : lines) { + String datetime = line.substring(14, 37); + String tmp = line.substring(38); + String logLevel = tmp.substring(0, tmp.indexOf(",")); + tmp = tmp.substring(logLevel.length() + 1); + String title = tmp.substring(0, tmp.indexOf(",")); + String message = tmp.substring(title.length() + 1); + + htmlContent.append("").append(datetime).append("
"); + htmlContent.append("
").append(logLevel).append(" ").append(title).append("
"); + htmlContent.append("").append(message).append(""); + htmlContent.append("
"); + } + + htmlContent.append("\n" + "\n" + "\n" + ""); + + return htmlContent.toString(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java index ea61c82e..a6f159fb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java @@ -104,7 +104,7 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag public void openLU() { - DialogScanOrCreateLUView.newInstance(true, false, true, false, (mtbColt, created) -> { + DialogScanOrCreateLUView.newInstance(true, false, true, false, true, (mtbColt, created) -> { if (mtbColt == null) { ((IPoppableActivity) getActivity()).pop(); } else if ((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java index b2688f6a..8e0e9f72 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java @@ -43,27 +43,29 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial private final boolean mShouldCheckResiduo; private final boolean mShouldCheckIfExistDoc; private final boolean mEnableCreation; + private final boolean mWarnOnOpeningVendita; private final BindableBoolean basketEnabled = new BindableBoolean(); private final BindableBoolean creationEnabled = new BindableBoolean(); public static DialogScanOrCreateLUView newInstance(@NotNull RunnableArgss onComplete) { - return new DialogScanOrCreateLUView(false, true, true, true, onComplete); + return new DialogScanOrCreateLUView(false, true, true, true, true, onComplete); } - public static DialogScanOrCreateLUView newInstance(boolean enableCreation, boolean shouldCheckIfExistDoc, @NotNull RunnableArgss onComplete) { - return new DialogScanOrCreateLUView(false, enableCreation, true, shouldCheckIfExistDoc, onComplete); + public static DialogScanOrCreateLUView newInstance(boolean enableCreation, boolean shouldCheckIfExistDoc, boolean warnOnOpeningVendita, @NotNull RunnableArgss onComplete) { + return new DialogScanOrCreateLUView(false, enableCreation, true, shouldCheckIfExistDoc, warnOnOpeningVendita, onComplete); } - public static DialogScanOrCreateLUView newInstance(boolean enableBasket, boolean enableCreation, boolean checkResiduo, boolean shouldCheckIfExistDoc, @NotNull RunnableArgss onComplete) { - return new DialogScanOrCreateLUView(enableBasket, enableCreation, checkResiduo, shouldCheckIfExistDoc, onComplete); + public static DialogScanOrCreateLUView newInstance(boolean enableBasket, boolean enableCreation, boolean checkResiduo, boolean shouldCheckIfExistDoc, boolean warnOnOpeningVendita, @NotNull RunnableArgss onComplete) { + return new DialogScanOrCreateLUView(enableBasket, enableCreation, checkResiduo, shouldCheckIfExistDoc, warnOnOpeningVendita, onComplete); } - private DialogScanOrCreateLUView(boolean enableBasket, boolean enableCreation, boolean checkResiduo, boolean shouldCheckIfExistDoc, @NotNull RunnableArgss onComplete) { + private DialogScanOrCreateLUView(boolean enableBasket, boolean enableCreation, boolean checkResiduo, boolean shouldCheckIfExistDoc, boolean warnOnOpeningVendita, @NotNull RunnableArgss onComplete) { super(); mShouldCheckResiduo = checkResiduo; mShouldCheckIfExistDoc = shouldCheckIfExistDoc; + mWarnOnOpeningVendita = warnOnOpeningVendita; this.basketEnabled.set(enableBasket); this.creationEnabled.set(enableCreation); @@ -90,7 +92,7 @@ public class DialogScanOrCreateLUView extends BaseDialogFragment implements Dial .setListener(this); - this.mViewModel.init(mShouldCheckResiduo, mShouldCheckIfExistDoc, mEnableCreation); + this.mViewModel.init(mShouldCheckResiduo, mShouldCheckIfExistDoc, mEnableCreation, mWarnOnOpeningVendita); mBindings.createNewLuButton.setOnClickListener(v -> { this.mViewModel.createNewLU(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java index 6493cea0..aec8e6c4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java @@ -32,6 +32,7 @@ public class DialogScanOrCreateLUViewModel { private boolean mShouldCheckResiduo = false; private boolean mShouldCheckIfExistDoc = true; private boolean mEnableCreation = false; + private boolean mWarnOnOpeningVendita; private Listener mListener; @@ -43,10 +44,11 @@ public class DialogScanOrCreateLUViewModel { } - public void init(boolean checkResiduo, boolean shouldCheckIfExistDoc, boolean enableCreation) { + public void init(boolean checkResiduo, boolean shouldCheckIfExistDoc, boolean enableCreation, boolean warnOnOpeningVendita) { this.mShouldCheckResiduo = checkResiduo; this.mShouldCheckIfExistDoc = shouldCheckIfExistDoc; this.mEnableCreation = enableCreation; + this.mWarnOnOpeningVendita = warnOnOpeningVendita; } public void createNewLU() { @@ -137,7 +139,7 @@ public class DialogScanOrCreateLUViewModel { if (mtbColt.getCodDtip() != null && mShouldCheckIfExistDoc) { this.sendError(new AlreadyAttachedDocumentToLUException()); } else { - if (mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno() == -1) { + if (mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno() == -1 && mWarnOnOpeningVendita) { this.sendOnLUVenditaConfirmRequired(confirmed -> { if (confirmed) { onComplete.run(); diff --git a/app/src/main/res/drawable/ic_back.xml b/app/src/main/res/drawable/ic_back.xml new file mode 100644 index 00000000..0d6e19f7 --- /dev/null +++ b/app/src/main/res/drawable/ic_back.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_black_back.png b/app/src/main/res/drawable/ic_black_back.png deleted file mode 100644 index 1973bf62..00000000 Binary files a/app/src/main/res/drawable/ic_black_back.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_black_shopping_cart.png b/app/src/main/res/drawable/ic_black_shopping_cart.png deleted file mode 100644 index c591931a..00000000 Binary files a/app/src/main/res/drawable/ic_black_shopping_cart.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_black_tick.png b/app/src/main/res/drawable/ic_black_tick.png deleted file mode 100644 index ca369c8e..00000000 Binary files a/app/src/main/res/drawable/ic_black_tick.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_black_truck.png b/app/src/main/res/drawable/ic_black_truck.png deleted file mode 100644 index 91c170d0..00000000 Binary files a/app/src/main/res/drawable/ic_black_truck.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.png b/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.png deleted file mode 100644 index d59f1400..00000000 Binary files a/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.xml b/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.xml new file mode 100644 index 00000000..76e49d45 --- /dev/null +++ b/app/src/main/res/drawable/ic_dashboard_purchase_orders_pv.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_dashboard_rettifica_spedizione.xml b/app/src/main/res/drawable/ic_dashboard_rettifica_spedizione.xml new file mode 100644 index 00000000..2d4fc3ac --- /dev/null +++ b/app/src/main/res/drawable/ic_dashboard_rettifica_spedizione.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.png b/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.png deleted file mode 100644 index c46805ee..00000000 Binary files a/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.xml b/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.xml new file mode 100644 index 00000000..18085e97 --- /dev/null +++ b/app/src/main/res/drawable/ic_dashboard_trasmitted_orders_list.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_erase.xml b/app/src/main/res/drawable/ic_erase.xml new file mode 100644 index 00000000..b4cd0420 --- /dev/null +++ b/app/src/main/res/drawable/ic_erase.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_erase_96.png b/app/src/main/res/drawable/ic_erase_96.png deleted file mode 100644 index de7c5565..00000000 Binary files a/app/src/main/res/drawable/ic_erase_96.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_inventario_header_outline.png b/app/src/main/res/drawable/ic_inventario_header_outline.png deleted file mode 100644 index fb2e1527..00000000 Binary files a/app/src/main/res/drawable/ic_inventario_header_outline.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_inventario_header_outline.xml b/app/src/main/res/drawable/ic_inventario_header_outline.xml new file mode 100644 index 00000000..bc707071 --- /dev/null +++ b/app/src/main/res/drawable/ic_inventario_header_outline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_pallet.xml b/app/src/main/res/drawable/ic_pallet.xml new file mode 100644 index 00000000..fd0e7a2a --- /dev/null +++ b/app/src/main/res/drawable/ic_pallet.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_pallet_96px.png b/app/src/main/res/drawable/ic_pallet_96px.png deleted file mode 100644 index 4a8f8c9b..00000000 Binary files a/app/src/main/res/drawable/ic_pallet_96px.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_production_line.png b/app/src/main/res/drawable/ic_production_line.png deleted file mode 100644 index 19f5ada7..00000000 Binary files a/app/src/main/res/drawable/ic_production_line.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_production_line.xml b/app/src/main/res/drawable/ic_production_line.xml new file mode 100644 index 00000000..346674e7 --- /dev/null +++ b/app/src/main/res/drawable/ic_production_line.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_rettifica_spedizione_drawer.xml b/app/src/main/res/drawable/ic_rettifica_spedizione_drawer.xml new file mode 100644 index 00000000..3b2a0fca --- /dev/null +++ b/app/src/main/res/drawable/ic_rettifica_spedizione_drawer.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_scale.png b/app/src/main/res/drawable/ic_scale.png deleted file mode 100644 index f5c5ca11..00000000 Binary files a/app/src/main/res/drawable/ic_scale.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_scale.xml b/app/src/main/res/drawable/ic_scale.xml new file mode 100644 index 00000000..923c478e --- /dev/null +++ b/app/src/main/res/drawable/ic_scale.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shopping_basket.xml b/app/src/main/res/drawable/ic_shopping_basket.xml new file mode 100644 index 00000000..fd6f1b89 --- /dev/null +++ b/app/src/main/res/drawable/ic_shopping_basket.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_tick.xml b/app/src/main/res/drawable/ic_tick.xml new file mode 100644 index 00000000..fbeed5dd --- /dev/null +++ b/app/src/main/res/drawable/ic_tick.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_truck.xml b/app/src/main/res/drawable/ic_truck.xml new file mode 100644 index 00000000..b7349998 --- /dev/null +++ b/app/src/main/res/drawable/ic_truck.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_truck_black_96.png b/app/src/main/res/drawable/ic_truck_black_96.png deleted file mode 100644 index 38d65b2d..00000000 Binary files a/app/src/main/res/drawable/ic_truck_black_96.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_truck_with_clock.xml b/app/src/main/res/drawable/ic_truck_with_clock.xml new file mode 100644 index 00000000..a3fe5887 --- /dev/null +++ b/app/src/main/res/drawable/ic_truck_with_clock.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_black_upload.xml b/app/src/main/res/drawable/ic_upload.xml similarity index 100% rename from app/src/main/res/drawable/ic_black_upload.xml rename to app/src/main/res/drawable/ic_upload.xml diff --git a/app/src/main/res/drawable/ic_weight_kg.xml b/app/src/main/res/drawable/ic_weight_kg.xml new file mode 100644 index 00000000..49a14fe5 --- /dev/null +++ b/app/src/main/res/drawable/ic_weight_kg.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_weight_kg_96px.png b/app/src/main/res/drawable/ic_weight_kg_96px.png deleted file mode 100644 index 0ae68dba..00000000 Binary files a/app/src/main/res/drawable/ic_weight_kg_96px.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_workers.xml b/app/src/main/res/drawable/ic_workers.xml new file mode 100644 index 00000000..9cf6a9f5 --- /dev/null +++ b/app/src/main/res/drawable/ic_workers.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_workers_96px.png b/app/src/main/res/drawable/ic_workers_96px.png deleted file mode 100644 index 1153ad5e..00000000 Binary files a/app/src/main/res/drawable/ic_workers_96px.png and /dev/null differ diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml b/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml index 48d60ac4..d78b5cda 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml @@ -62,7 +62,7 @@ android:backgroundTint="@android:color/transparent" android:onClick="@{() -> view.resetValues()}" android:scaleType="fitCenter" - android:src="@drawable/ic_erase_96" + android:src="@drawable/ic_erase" android:tint="@android:color/white" /> @@ -332,7 +332,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_pallet_96px" + android:src="@drawable/ic_pallet" android:tint="@color/gray_500" /> @@ -706,7 +706,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_weight_kg_96px" + android:src="@drawable/ic_weight_kg" android:tint="@color/gray_500" /> @@ -857,7 +857,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_pallet_96px" + android:src="@drawable/ic_pallet" android:tint="@color/gray_500" /> @@ -969,7 +969,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_weight_kg_96px" + android:src="@drawable/ic_weight_kg" android:tint="@color/gray_500" /> @@ -1125,7 +1125,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_weight_kg_96px" + android:src="@drawable/ic_weight_kg" android:tint="@color/gray_500" /> diff --git a/app/src/main/res/layout/activity_contab_doc_interni_edit.xml b/app/src/main/res/layout/activity_contab_doc_interni_edit.xml index 495a8f3c..d8eef804 100644 --- a/app/src/main/res/layout/activity_contab_doc_interni_edit.xml +++ b/app/src/main/res/layout/activity_contab_doc_interni_edit.xml @@ -319,7 +319,7 @@ android:id="@+id/export_document" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:src="@drawable/ic_black_upload" + android:src="@drawable/ic_upload" android:visibility="@{view.isDocumentExportable.get() ? View.VISIBLE : View.GONE}" app:fab_colorNormal="@color/white" app:fab_colorPressed="@color/white_pressed" diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index a2dc8a90..79750872 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -116,7 +116,7 @@ diff --git a/app/src/main/res/layout/dialog_scan_or_create_lu.xml b/app/src/main/res/layout/dialog_scan_or_create_lu.xml index 8ebc95f6..866af6c0 100644 --- a/app/src/main/res/layout/dialog_scan_or_create_lu.xml +++ b/app/src/main/res/layout/dialog_scan_or_create_lu.xml @@ -133,7 +133,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_view_basket_ul" - app:icon="@drawable/ic_black_shopping_cart" + app:icon="@drawable/ic_shopping_basket" app:iconSize="24dp" /> diff --git a/app/src/main/res/layout/dialog_select_doc_info.xml b/app/src/main/res/layout/dialog_select_doc_info.xml deleted file mode 100644 index fc8e074f..00000000 --- a/app/src/main/res/layout/dialog_select_doc_info.xml +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_doc_info__single_item.xml b/app/src/main/res/layout/dialog_select_doc_info__single_item.xml deleted file mode 100644 index d0736805..00000000 --- a/app/src/main/res/layout/dialog_select_doc_info__single_item.xml +++ /dev/null @@ -1,8 +0,0 @@ - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_doc_info_view.xml b/app/src/main/res/layout/dialog_select_doc_info_view.xml new file mode 100644 index 00000000..f71164c4 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_doc_info_view.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_doc_interni.xml b/app/src/main/res/layout/fragment_doc_interni.xml index ad26fce2..5be54fa0 100644 --- a/app/src/main/res/layout/fragment_doc_interni.xml +++ b/app/src/main/res/layout/fragment_doc_interni.xml @@ -45,7 +45,6 @@ android:layout_marginRight="8dp" android:background="@drawable/gray_detail_background_round8" android:orientation="vertical" - app:singleClick="@{() -> view.selectDocInfo()}" android:padding="16dp"> diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml index aa051083..2679d28e 100644 --- a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml +++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml @@ -279,7 +279,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_truck_black_96" + android:src="@drawable/ic_truck_with_clock" android:tint="@color/gray_500" /> @@ -322,7 +322,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_pallet_96px" + android:src="@drawable/ic_pallet" android:tint="@color/gray_500" /> @@ -696,7 +696,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_weight_kg_96px" + android:src="@drawable/ic_weight_kg" android:tint="@color/gray_500" /> @@ -847,7 +847,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_pallet_96px" + android:src="@drawable/ic_pallet" android:tint="@color/gray_500" /> @@ -959,7 +959,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_weight_kg_96px" + android:src="@drawable/ic_weight_kg" android:tint="@color/gray_500" /> @@ -1115,7 +1115,7 @@ android:layout_height="24dp" android:layout_gravity="center_vertical" android:layout_margin="8dp" - android:src="@drawable/ic_weight_kg_96px" + android:src="@drawable/ic_weight_kg" android:tint="@color/gray_500" /> diff --git a/app/src/main/res/menu/picking_inventario_menu.xml b/app/src/main/res/menu/picking_inventario_menu.xml index d76021b3..622d7c94 100644 --- a/app/src/main/res/menu/picking_inventario_menu.xml +++ b/app/src/main/res/menu/picking_inventario_menu.xml @@ -5,7 +5,7 @@ diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 673ed822..76d9f72e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -21,6 +21,7 @@ Ordini di accettazione Spedizione Rettifica giacenze + Rettifica spedizione Inventario Approvvig. linee prod. Posizionamento merce @@ -333,7 +334,7 @@ Il lotto %s non รจ attivo. Continuare? Punto Vendita SaporiVeri PV - Genera ordini di acqusito + Genera ordini di acquisto Ordini di acquisto trasmessi Ordini di Acquisto Ordini trasmessi diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml index e505f087..4a63fe50 100644 --- a/app/src/main/res/values/config.xml +++ b/app/src/main/res/values/config.xml @@ -15,6 +15,7 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c0f6948b..10f3e776 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,6 +59,7 @@ Multiple acceptance orders Check out Inventory + Inventory Inventory Production line requirements Items placement diff --git a/build.gradle b/build.gradle index f5506849..591a7bb3 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.8.0' - agp_version = '8.1.0-alpha05' + agp_version = '8.1.0-alpha06' } repositories {