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 416420ae..aaff1b99 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 @@ -31,8 +31,8 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.FragmentDocInterniBinding; 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.GrigliaAcquistiDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormActivity; import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter; import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel; @@ -81,8 +81,8 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, mBinding.setLifecycleOwner(this); mBinding.setView(this); mBinding.setViewModel(mViewModel); - mViewModel.mtbGrup.observe(getViewLifecycleOwner(),mtbGrup-> mViewModel.fetchProducts()); - mViewModel.dtbTipi.observe(getViewLifecycleOwner(),dtbTipi-> mViewModel.fetchDocuments()); + mViewModel.mtbGrup.observe(getViewLifecycleOwner(), mtbGrup -> mViewModel.fetchProducts()); + mViewModel.dtbTipi.observe(getViewLifecycleOwner(), dtbTipi -> mViewModel.fetchDocuments()); this.initRecyclerView(); return mBinding.getRoot(); @@ -91,9 +91,9 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, @Override public void onStart() { super.onStart(); - if (!this.mViewModel.hasDocDetails()){ + if (!this.mViewModel.hasDocDetails()) { mViewModel.init(); - }else{ + } else { this.mViewModel.fetchDocuments(); } } @@ -115,30 +115,30 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, @Override public void onDocDetailsChanged(DialogSelectDocInfoViewModel selection) { - if(selection.isInputValid()){ + if (selection.isInputValid()) { mViewModel.setSelectedDocDetails(selection); mBinding.mainFab.setVisibility(View.VISIBLE); - }else{ + } else { mBinding.mainFab.setVisibility(View.GONE); } - if (selection.requiresFornitore()){ + if (selection.requiresFornitore()) { mBinding.codAnagContainer.setVisibility(View.VISIBLE); - }else{ + } else { mBinding.codAnagContainer.setVisibility(View.GONE); } - if (selection.getSelectedGruppoArt() != null){ + if (selection.getSelectedGruppoArt() != null) { mBinding.mtbGrpContainer.setVisibility(View.VISIBLE); - }else{ + } else { mBinding.mtbGrpContainer.setVisibility(View.GONE); } - if (selection.requiresDocData()){ + if (selection.requiresDocData()) { 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{ + } else { mBinding.docContainer.setVisibility(View.GONE); } @@ -155,7 +155,7 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, } public void selectDocInfo() { - if (this.dialogInitialized){ + if (this.dialogInitialized) { DialogSelectDocInfoView.newInstance( mDocInterniSetupDTO, this.mViewModel.dtbTipi.getValue(), @@ -201,6 +201,6 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, @Override public void onDocumentEditRequest(SqlMtbColt document, GrigliaAcquistiDTO arts) { - requireActivity().startActivity(DocInterniEditFormActivity.newInstance(requireActivity(),document,arts)); + requireActivity().startActivity(DocInterniEditFormActivity.newInstance(requireActivity(), document, arts, mViewModel.getTipoDoc())); } } 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 8d926afb..11c63f54 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 @@ -2,8 +2,6 @@ package it.integry.integrywmsnative.gest.contab_doc_interni; import androidx.lifecycle.MutableLiveData; -import com.annimon.stream.Stream; - import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -17,10 +15,10 @@ import it.integry.integrywmsnative.core.di.BindableInteger; 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.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO; -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.rest.DocInterniRESTConsumer; @@ -91,7 +89,7 @@ public class DocInterniViewModel { this.numDoc.postValue(selection.getNumDoc()); this.note.postValue(selection.getNote()); - if (selection.getSelectedTipoDoc() != null ) { + if (selection.getSelectedTipoDoc() != null) { this.dtbTipi.postValue(selection.getSelectedTipoDoc()); } } @@ -114,11 +112,11 @@ public class DocInterniViewModel { this.sendOnLoadingStarted(); String codAnag = null, codVdes = null; FornitoreDTO fornitore = this.fornitore.getValue(); - if (fornitore != null){ + if (fornitore != null) { codAnag = fornitore.getCodAnag(); codVdes = fornitore.getCodVdes(); } - documentRepository.getLocalDocumentsByCodDtip(this.getCodDtip(), codAnag, codVdes, dataDoc.getValue(),numDoc.getValue(), list -> { + documentRepository.getLocalDocumentsByCodDtip(this.getCodDtip(), codAnag, codVdes, dataDoc.getValue(), numDoc.getValue(), list -> { documentRepository.getNextNumCollo(nextNumCollo -> { this.mDocsList.postValue(list); this.setNextNumCollo(nextNumCollo); @@ -141,6 +139,13 @@ public class DocInterniViewModel { return this.dtbTipi.getValue().getCodDtip(); } + public TipiDocDTO getTipoDoc() { + if (this.dtbTipi.getValue() == null) { + return null; + } + return this.dtbTipi.getValue(); + } + private String getCodMgrp() { if (this.mtbGrup.getValue() == null) { return null; @@ -168,10 +173,10 @@ public class DocInterniViewModel { document.setNumCollo(this.nextNumCollo); document.setGestione("L"); document.setDataDoc(this.dataDoc.getValue()); - if (this.numDoc.getValue() != null){ + if (this.numDoc.getValue() != null) { document.setNumDoc(Integer.parseInt(this.numDoc.getValue())); } - if (this.fornitore.getValue() != null){ + if (this.fornitore.getValue() != null) { document.setCodAnag(this.fornitore.getValue().getCodAnag()); document.setCodVdes(this.fornitore.getValue().getCodVdes()); } 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 8ac7bfe0..a5455f2d 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 @@ -112,7 +112,7 @@ public class DialogSelectDocInfoViewModel { selectedDocType.getGestione().equalsIgnoreCase("V") ? "V" : "A" ); } else { - return forn.getTipoAnag().equalsIgnoreCase("F") ; + return forn.getTipoAnag().equalsIgnoreCase("F"); } }) .map(FornitoreDTO::getLabel).toList(); @@ -148,8 +148,7 @@ public class DialogSelectDocInfoViewModel { public boolean requiresNote() { return this.getSelectedTipoDoc() != null && this.getSelectedTipoDoc().getGestioneDoc().equals("P") && - this.getSelectedTipoDoc().getGestione().equals("L") - ; + this.getSelectedTipoDoc().getGestione().equals("L"); } public boolean isInputValid() { @@ -161,12 +160,12 @@ public class DialogSelectDocInfoViewModel { return false; } - if (this.requiresDocData() && (this.getDataDoc() == null || this.getNumDoc() == null)){ + if (this.requiresDocData() && (this.getDataDoc() == null || this.getNumDoc() == null)) { return false; } - if (this.requiresNote() && (this.getNote() == null || this.getNote().length() <= 0) ){ + if (this.requiresNote() && (this.getNote() == null || this.getNote().length() <= 0)) { return false; } @@ -174,7 +173,7 @@ public class DialogSelectDocInfoViewModel { } public boolean requiresDocData() { - TipiDocDTO doc = this.getSelectedTipoDoc(); + TipiDocDTO doc = this.getSelectedTipoDoc(); return doc != null && doc.getGestioneDoc().equalsIgnoreCase("P") && !doc.getGestione().equalsIgnoreCase("L"); } 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/TipiDocDTO.java index a6fb22ae..e8173c43 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/TipiDocDTO.java @@ -6,6 +6,7 @@ public class TipiDocDTO { private String descrizione; private String gestione; private String gestioneDoc; + private boolean requireNote = false; public String getCodDtip() { return codDtip; @@ -38,7 +39,17 @@ public class TipiDocDTO { public void setGestioneDoc(String gestioneDoc) { this.gestioneDoc = gestioneDoc; } - public String getLabel(){ - return this.codDtip +" - "+this.descrizione; + + public String getLabel() { + return this.codDtip + " - " + this.descrizione; + } + + public boolean isRequireNote() { + return requireNote; + } + + public TipiDocDTO 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 cee4d7a1..7ef050d4 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,6 +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.GrigliaAcquistiDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO; 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; @@ -52,6 +53,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter private static final String DATA_KEY_DOCUMENT = "document"; private static final String DATA_KEY_PRODUCTS_LIST = "productsList"; + private static final String DATA_KEY_TIPO_DOC = "docType"; @Inject MtbColrRepository documentRowsRepository; @@ -75,13 +77,15 @@ 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, GrigliaAcquistiDTO productList) { + public static Intent newInstance(Context context, SqlMtbColt document, GrigliaAcquistiDTO productList, TipiDocDTO tipoDoc) { Intent myIntent = new Intent(context, DocInterniEditFormActivity.class); String doc = DataCache.addItem(document); String productsKey = DataCache.addItem(productList); + String docType = DataCache.addItem(tipoDoc); myIntent.putExtra(DATA_KEY_DOCUMENT, doc); myIntent.putExtra(DATA_KEY_PRODUCTS_LIST, productsKey); + myIntent.putExtra(DATA_KEY_TIPO_DOC, docType); return myIntent; } @@ -96,7 +100,14 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter SqlMtbColt document = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_DOCUMENT)); GrigliaAcquistiDTO griglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_PRODUCTS_LIST)); List productList = griglia.getGrigliaAcquistiChild(); - this.initViewModel(document, productList); + TipiDocDTO docType = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_TIPO_DOC)); + + this.initViewModel(); + this.viewModel.setDocument(document); + this.viewModel.setProductsList(productList); + this.viewModel.setTipoDoc(docType); + + this.initView(); this.initBindables(); this.initRecyclerView(); @@ -137,12 +148,9 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter binding.bottomSheetMtbColrEdit.init(binding.bottomSheetMtbColrEdit, binding.bottomSheetMtbColrEditBackground); } - private void initViewModel(SqlMtbColt document, List productList) { + private void initViewModel() { this.viewModel.init(); this.viewModel.setListeners(this); - this.viewModel.setDocument(document); - this.viewModel.setProductsList(productList); - } private void initRecyclerView() { @@ -239,6 +247,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter .setCanOverflowOrderQuantity(false) .setCanLUBeClosed(false) .setNotesAllowed(true) + .setNotesMandatory(this.viewModel.isNotesMandatory()) .setDataScadMandatory(flagTracciabilita) .setCanPartitaMagBeChanged(flagTracciabilita) .setSuggestPartitaMag(data -> { 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 b559a023..17658dae 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 @@ -26,6 +26,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.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ResultDTO; @@ -38,6 +39,7 @@ public class DocInterniEditFormViewModel { private final DocInterniRESTConsumer docInterniRESTConsumer; private DocInterniEditFormViewModel.Listener listener; private List productsList; + private TipiDocDTO tipoDoc; private boolean isCheckPartitaMag = false; private JSONObject checkFornitoreRules = null; public MutableLiveData document = new MutableLiveData<>(); @@ -299,6 +301,15 @@ public class DocInterniEditFormViewModel { return Stream.of(productsList).filter(prod -> prod.codMart.equalsIgnoreCase(codMart)).findFirstOrElse(null); } + public DocInterniEditFormViewModel setTipoDoc(TipiDocDTO docType) { + this.tipoDoc = docType; + return this; + } + + public boolean isNotesMandatory() { + return this.tipoDoc != null && this.tipoDoc.isRequireNote(); + } + public interface Listener extends ILoadingListener { void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidNotesException.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidNotesException.java new file mode 100644 index 00000000..1740b50b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/exception/InvalidNotesException.java @@ -0,0 +1,12 @@ +package it.integry.integrywmsnative.view.dialogs.exception; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityResources; + +public class InvalidNotesException extends Exception { + + public InvalidNotesException() { + super(UtilityResources.getString(R.string.empty_notes_input_message)); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java index 92b225aa..2333b838 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -30,13 +30,14 @@ public class DialogInputQuantityV2DTO { private boolean canPartitaMagBeChanged = true; private boolean isDataScadMandatory = false; private boolean isNotesAllowed = false; + private boolean isNotesMandatory = false; private boolean canLUBeClosed; private boolean saveOnImeDone = false; private String partitaMag; private String note; private Date dataScad; - private RunnableArgsWithReturn suggestPartitaMag; + private RunnableArgsWithReturn suggestPartitaMag; private boolean canOverflowOrderQuantity; @@ -217,7 +218,7 @@ public class DialogInputQuantityV2DTO { } public boolean isDataScadMandatory() { - return isDataScadMandatory ; + return isDataScadMandatory; } public boolean isNotesAllowed() { @@ -229,6 +230,15 @@ public class DialogInputQuantityV2DTO { return this; } + public boolean isNotesMandatory() { + return isNotesMandatory; + } + + public DialogInputQuantityV2DTO setNotesMandatory(boolean notesMandatory) { + isNotesMandatory = notesMandatory; + return this; + } + public RunnableArgsWithReturn getSuggestPartitaMag() { return suggestPartitaMag; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index e7490833..d4ce25f9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -143,6 +143,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia .setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable()) .setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag()) .setNote(mDialogInputQuantityV2DTO.getNote()) + .setIsNoteMandatory(mDialogInputQuantityV2DTO.isNotesMandatory()) .setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag()) .setDataScad(mDialogInputQuantityV2DTO.getDataScad()); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 0e486126..3c9c017a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -18,6 +18,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidExpireDateException; +import it.integry.integrywmsnative.view.dialogs.exception.InvalidNotesException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidQtaCnfQuantityException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidQuantityException; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowNumCnfAvailableQuantityException; @@ -50,6 +51,7 @@ public class DialogInputQuantityV2ViewModel { public Boolean shouldAskDataScad; public Boolean shouldShowDataScad; + public Boolean isNoteMandatory; private BigDecimal initialNumCnf; private BigDecimal initialQtaCnf; @@ -403,7 +405,8 @@ public class DialogInputQuantityV2ViewModel { this.mListener.onError(new InvalidQtaCnfQuantityException()); return false; - } else if (mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { + } + if (mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { if (suggestPartitaMagRunnable != null) { internalPartitaMag = suggestPartitaMagRunnable.run(this); if (internalPartitaMag == null) { @@ -415,38 +418,45 @@ public class DialogInputQuantityV2ViewModel { return false; } - } else if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { + } + if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { this.mListener.onError(new InvalidBatchLotException()); return false; - } else if (this.shouldAskDataScad && this.internalDataScad == null) { + } + if (this.shouldAskDataScad && this.internalDataScad == null) { this.mListener.onError(new InvalidExpireDateException()); return false; - } else if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && + } + if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); return false; - } else if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd)) { + } + if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd)) { this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); return false; - } else if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { + } + if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); return false; - } else if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable)) { + } + if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable)) { this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); return false; - } else if (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || + } + if (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || UtilityBigDecimal.equalsOrLowerThan(this.internalNumCnf, BigDecimal.ZERO) || UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) || UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO)) { @@ -455,6 +465,10 @@ public class DialogInputQuantityV2ViewModel { return false; } + if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { + this.mListener.onError(new InvalidNotesException()); + return false; + } if (!UtilityString.isNullOrEmpty(this.internalPartitaMag)) this.internalPartitaMag = this.internalPartitaMag.toUpperCase(); @@ -486,6 +500,14 @@ public class DialogInputQuantityV2ViewModel { return this; } + public Boolean isNoteMandatory() { + return isNoteMandatory; + } + + public DialogInputQuantityV2ViewModel setIsNoteMandatory(Boolean noteMandatory) { + isNoteMandatory = noteMandatory; + return this; + } public MtbAart getMtbAart() { return this.mtbAart.get(); diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 1ed3a1d1..8c33f7c0 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -178,6 +178,7 @@ Linea di produzione non valida]]> data di scadenza inserita non è valida]]> lotto inserito non è valido]]> + campo note deve essere compilato per il modulo corrente.]]> Impostazioni Check box This is a regular preference diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1d061efb..798447af 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -178,6 +178,7 @@ production line]]> expire date is not valid, please check it.]]> batch lot is not valid, please check it.]]> + notes field requires to be filled in for the current form.]]> Settings Check box This is a regular preference