diff --git a/.idea/runConfigurations/app_base.xml b/.idea/runConfigurations/app_base.xml
index e87f440c..f55876a3 100644
--- a/.idea/runConfigurations/app_base.xml
+++ b/.idea/runConfigurations/app_base.xml
@@ -15,6 +15,7 @@
+
@@ -45,7 +46,7 @@
-
+
diff --git a/.idea/runConfigurations/app_vglimenti.xml b/.idea/runConfigurations/app_vglimenti.xml
index 51ad9b27..9ed66857 100644
--- a/.idea/runConfigurations/app_vglimenti.xml
+++ b/.idea/runConfigurations/app_vglimenti.xml
@@ -15,6 +15,7 @@
+
@@ -45,7 +46,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 45e84b2f..9b7f5d72 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 267
- def appVersionName = '1.23.12'
+ def appVersionCode = 268
+ def appVersionName = '1.24.0'
signingConfigs {
release {
@@ -85,6 +85,7 @@ android {
dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti"]
+
}
dependencies {
@@ -138,7 +139,6 @@ dependencies {
implementation 'com.github.cachapa:ExpandableLayout:2.9.2'
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
implementation 'com.github.fede87:StatusBarAlert:1.0.1'
- testImplementation 'junit:junit:4.13.2'
implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3'
implementation 'com.github.pedromassango:doubleClick:3.0'
@@ -157,11 +157,14 @@ dependencies {
implementation project(':barcode_base_android_library')
implementation project(':honeywellscannerlibrary')
implementation project(':keyobardemulatorscannerlibrary')
- androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1'
- androidTestImplementation 'org.testng:testng:7.4.0'
implementation 'com.github.RaviKoradiya:LiveAdapter:1.3.4'
+
+ // Required -- JUnit 4 framework
+// testImplementation "org.junit.jupiter:junit-jupiter-api:5.8.1"
+// androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
+// androidTestImplementation 'org.testng:testng:7.4.0'
}
repositories {
diff --git a/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModelTest.java b/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModelTest.java
deleted file mode 100644
index 4d85daa1..00000000
--- a/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModelTest.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package it.integry.integrywmsnative.gest.spedizione;
-
-class SpedizioneViewModelTest {
-
- @org.junit.jupiter.api.Test
- void createNewLU() {
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java
index cb8364da..4706f3f5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java
@@ -87,7 +87,7 @@ public class ArticoloOrdine {
return articoloOrdineId;
}
- public void setArticoloOrdineId(int articoloOrdineId) {
+ public void setArticoloOrdineId(Integer articoloOrdineId) {
this.articoloOrdineId = articoloOrdineId;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java
index 247c71d6..1a3aad17 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java
@@ -53,7 +53,7 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{
String codMdep = null;
PosizioniRESTConsumerService posizioniRESTConsumerService = RESTBuilder.getService(PosizioniRESTConsumerService.class);
- posizioniRESTConsumerService.getAvailablePosizioni(codMdep).enqueue(new Callback>>() {
+ posizioniRESTConsumerService.getAvailablePosizioni(codMdep).enqueue(new Callback<>() {
@Override
public void onResponse(Call>> call, Response>> response) {
analyzeAnswer(response, "getAvailablePosizioni", (m) -> {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
index acf7be79..4b1fc0b4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
@@ -22,7 +22,7 @@ public class DBSettingsModel {
private String defaultCausaleRettificaGiacenze;
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
private boolean flagAskClienteInPickingLibero;
- private boolean flagAllowEmptyClienteInPickingLibero;
+ private boolean flagPickLiberoAllowEmptyCliente;
private boolean flagCanAddExtraItemSpedizione;
private boolean flagCanAutoOpenNewULAccettazione;
@@ -42,6 +42,7 @@ public class DBSettingsModel {
private String reportNameSpedizionChiudiOrdine;
private int onNumCnfInputChanged = 1;
private boolean flagAccettazioneUseQtaOrd = false;
+ private boolean flagPickLiberoAllowEmptyDest = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
@@ -141,12 +142,12 @@ public class DBSettingsModel {
return this;
}
- public boolean isFlagAllowEmptyClienteInPickingLibero() {
- return flagAllowEmptyClienteInPickingLibero;
+ public boolean isFlagPickLiberoAllowEmptyCliente() {
+ return flagPickLiberoAllowEmptyCliente;
}
- public DBSettingsModel setFlagAllowEmptyClienteInPickingLibero(boolean flagAllowEmptyClienteInPickingLibero) {
- this.flagAllowEmptyClienteInPickingLibero = flagAllowEmptyClienteInPickingLibero;
+ public DBSettingsModel setFlagPickLiberoAllowEmptyCliente(boolean flagPickLiberoAllowEmptyCliente) {
+ this.flagPickLiberoAllowEmptyCliente = flagPickLiberoAllowEmptyCliente;
return this;
}
@@ -312,4 +313,13 @@ public class DBSettingsModel {
this.flagAccettazioneUseQtaOrd = flagAccettazioneUseQtaOrd;
return this;
}
+
+ public boolean isFlagPickLiberoAllowEmptyDest() {
+ return flagPickLiberoAllowEmptyDest;
+ }
+
+ public DBSettingsModel setFlagPickLiberoAllowEmptyDest(boolean flagPickLiberoAllowEmptyDest) {
+ this.flagPickLiberoAllowEmptyDest = flagPickLiberoAllowEmptyDest;
+ return this;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java
index a9e8466b..1613d2f3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java
@@ -282,6 +282,10 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("ACCETTAZIONE")
.setKeySection("FLAG_USE_QTA_ORD"));
+ stbGestSetupList.add(new StbGestSetup()
+ .setGestName("PICKING")
+ .setSection("PICKING_LIBERO")
+ .setKeySection("FLAG_ALLOW_EMPTY_DEST"));
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
@@ -291,7 +295,7 @@ public class SettingsManager {
dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP", "COD_ANAG_DEFAULT", String.class));
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class));
- dbSettingsModelIstance.setFlagAllowEmptyClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class));
+ dbSettingsModelIstance.setFlagPickLiberoAllowEmptyCliente(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class));
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
@@ -309,6 +313,7 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class));
dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class));
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
+ dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java
index 2fc84245..82847442 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java
@@ -125,6 +125,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter items) {
- DialogAskCliente_Page1_Cliente_ArrayAdapter adapter = new DialogAskCliente_Page1_Cliente_ArrayAdapter(mContext, items);
+
+ var orderedList = Stream.of(items)
+ .sortBy(x -> x.getRagSoc() != null ? x.getRagSoc() : "")
+ .toList();
+
+ DialogAskCliente_Page1_Cliente_ArrayAdapter adapter = new DialogAskCliente_Page1_Cliente_ArrayAdapter(mContext, orderedList);
AutoCompleteTextView editTextDropdownCliente = mBinding.dropdownCliente;
editTextDropdownCliente.setThreshold(0);
@@ -177,7 +182,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
private boolean validateCliente() {
- if (SettingsManager.iDB().isFlagAllowEmptyClienteInPickingLibero() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) {
+ if (SettingsManager.iDB().isFlagPickLiberoAllowEmptyCliente() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) {
return true;
} else return getCurrentCliente() != null;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java
index 6689e854..6d7f1218 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java
@@ -20,13 +20,13 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskCliente
public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter implements Filterable {
- private Context mContext;
- private List mDataset;
+ private final Context mContext;
+ private final List mDataset;
private List mDatasetAllItems;
- private ListFilter listFilter = new ListFilter();
+ private final ListFilter listFilter = new ListFilter();
- public DialogAskCliente_Page1_Cliente_ArrayAdapter(@NonNull Context context, @NonNull ArrayList list) {
+ public DialogAskCliente_Page1_Cliente_ArrayAdapter(@NonNull Context context, @NonNull List list) {
super(context, 0 , list);
mContext = context;
mDataset = list;
@@ -37,13 +37,15 @@ public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter matchValues = new ArrayList<>();
for (DialogAskClienteClienteDTO dataItem : mDatasetAllItems) {
- if (dataItem.getRagSoc().toLowerCase().startsWith(searchStrLowerCase)) {
+ if (dataItem.getRagSoc().toLowerCase().contains(searchStrLowerCase)) {
matchValues.add(dataItem);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Commessa_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Commessa_ArrayAdapter.java
index afa48566..93031215 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Commessa_ArrayAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Commessa_ArrayAdapter.java
@@ -23,7 +23,7 @@ public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter mDataset = new ArrayList<>();
private List mDatasetAllItems;
- private DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter listFilter = new DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter();
+ private final DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter listFilter = new DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter();
public DialogAskCliente_Page1_Commessa_ArrayAdapter(@NonNull Context context) {
super(context, 0);
@@ -56,7 +56,7 @@ public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter matchValues = new ArrayList<>();
for (String dataItem : mDatasetAllItems) {
- if (dataItem.toLowerCase().startsWith(searchStrLowerCase)) {
+ if (dataItem.toLowerCase().contains(searchStrLowerCase)) {
matchValues.add(dataItem);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java
index a486ac0d..6c08204f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2ViewModel.java
@@ -11,6 +11,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.databinding.DialogAskClientePage2Binding;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
@@ -57,6 +58,12 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
return;
}
+ if(SettingsManager.iDB().isFlagPickLiberoAllowEmptyDest()) {
+ filteredDestinatari.add(new DialogAskClienteDestinatarioDTO()
+ .setCodAnag(null)
+ .setDestinatario("Nessuno"));
+ }
+
initializeAdapter(filteredDestinatari);
@@ -95,7 +102,11 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
private void initializeAdapter(List items) {
- DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items);
+ var orderedList = Stream.of(items)
+ .sortBy(x -> x.getCodAnag() != null ? x.getCodAnag() : "")
+ .toList();
+
+ DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, orderedList);
AutoCompleteTextView editTextFilledExposedDropdown = mBinding.dropdownDestinatario;
@@ -105,7 +116,9 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
private boolean validateDestinatario() {
- return getCurrentDestinatario() != null;
+ if (SettingsManager.iDB().isFlagPickLiberoAllowEmptyDest() && getCurrentDestinatario() == null) {
+ return true;
+ } else return getCurrentDestinatario() != null;
}
public DialogAskClienteDestinatarioDTO getCurrentDestinatario() {
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java
index caf7ea52..0e4d9e51 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page2_ArrayAdapter.java
@@ -11,6 +11,7 @@ import android.widget.Filterable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
+import androidx.core.content.ContextCompat;
import java.util.ArrayList;
import java.util.List;
@@ -21,14 +22,15 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskCliente
public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter implements Filterable {
- private Context mContext;
- private List mDataset;
+ private final Context mContext;
+ private final List mDataset;
private List mDatasetAllItems;
- private ListFilter listFilter = new ListFilter();
+ private final ListFilter listFilter = new ListFilter();
public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull List list) {
super(context, 0 , list);
+
mContext = context;
mDataset = list;
}
@@ -43,18 +45,21 @@ public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter matchValues = new ArrayList<>();
for (DialogAskClienteDestinatarioDTO dataItem : mDatasetAllItems) {
- if (dataItem.toString().toLowerCase().startsWith(searchStrLowerCase)) {
+ if (dataItem.toString().toLowerCase().contains(searchStrLowerCase)) {
matchValues.add(dataItem);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtModule.java
index 9634e0a0..36d3d692 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtModule.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtModule.java
@@ -5,13 +5,17 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@Module(subcomponents = DialogScanArtComponent.class)
public class DialogScanArtModule {
@Provides
- DialogScanArtViewModel providesDialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
- return new DialogScanArtViewModel(barcodeRESTConsumer, colliMagazzinoRESTConsumer, articoloRESTConsumer);
+ DialogScanArtViewModel providesDialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer,
+ ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
+ ArticoloRESTConsumer articoloRESTConsumer,
+ PosizioniRESTConsumer posizioniRESTConsumer) {
+ return new DialogScanArtViewModel(barcodeRESTConsumer, colliMagazzinoRESTConsumer, articoloRESTConsumer, posizioniRESTConsumer);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java
index d7f7d333..2b3b7c87 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java
@@ -12,6 +12,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
+import com.annimon.stream.Stream;
+
import org.jetbrains.annotations.NotNull;
import javax.inject.Inject;
@@ -84,7 +86,6 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA
}
-
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
@@ -107,14 +108,28 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA
this.openProgress();
this.mViewModel.processBarcodeDTO(data, (status, mtbAart, ean128Model, mtbColrList) -> {
- if(mtbColrList != null && mtbColrList.size() > 0) {
- DialogChooseArtFromListaMtbColrView.make(getActivity(), mtbColrList, mtbColrChose -> {
+
+ var filteredMtbColrList = mtbColrList;
+
+ if (mtbAart != null) {
+ filteredMtbColrList = Stream.of(filteredMtbColrList)
+ .filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()))
+ .toList();
+ }
+
+ if (filteredMtbColrList != null && filteredMtbColrList.size() > 1) {
+ DialogChooseArtFromListaMtbColrView.make(getActivity(), filteredMtbColrList, mtbColrChose -> {
mOnItemChoosed.run(status, mtbAart, ean128Model, mtbColrChose);
}).show();
+
+ } else if (filteredMtbColrList != null && filteredMtbColrList.size() == 1) {
+ mOnItemChoosed.run(status, mtbAart, ean128Model, filteredMtbColrList.get(0));
+
} else {
mOnItemChoosed.run(status, mtbAart, ean128Model, null);
}
+
BarcodeManager.enable();
this.closeProgress();
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java
index 3a8752a6..22331a50 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java
@@ -7,16 +7,21 @@ import java.util.List;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.InvalidLUException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
+import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
+import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
import it.integry.integrywmsnative.core.expansion.RunnableArgssss;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
+import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
@@ -25,15 +30,20 @@ public class DialogScanArtViewModel {
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
+ private final PosizioniRESTConsumer mPosizioniRESTConsumer;
private boolean mForceOnlyUL;
private Listener mListener;
- public DialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
+ public DialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer,
+ ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
+ ArticoloRESTConsumer articoloRESTConsumer,
+ PosizioniRESTConsumer posizioniRESTConsumer) {
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mArticoloRESTConsumer = articoloRESTConsumer;
+ this.mPosizioniRESTConsumer = posizioniRESTConsumer;
}
public DialogScanArtViewModel setForceOnlyUL(boolean forceOnlyUL) {
@@ -50,15 +60,19 @@ public class DialogScanArtViewModel {
//Cerco l'UL presente all'interno della posizione
// this.executeEtichettaPosizione(barcodeScanDTO.getStringValue(), onComplete);
- } else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
+ } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
- } else if(UtilityBarcode.isEanPeso(barcodeScanDTO) && !mForceOnlyUL){
+
+ } else if (UtilityBarcode.isEanPeso(barcodeScanDTO) && !mForceOnlyUL) {
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
- } else if (!mForceOnlyUL){
- this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
+
} else {
- this.sendError(new Exception("Barcode non valido"));
+ this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
+
}
+// else {
+// this.sendError(new Exception("Barcode non valido"));
+// }
}
@@ -67,15 +81,15 @@ public class DialogScanArtViewModel {
String barcodeProd = null;
- if(ean128Model.Sscc != null) barcodeProd = ean128Model.Sscc;
- if(ean128Model.Gtin != null) barcodeProd = ean128Model.Gtin;
- if(ean128Model.Content != null) barcodeProd = ean128Model.Content;
+ if (ean128Model.Sscc != null) barcodeProd = ean128Model.Sscc;
+ if (ean128Model.Gtin != null) barcodeProd = ean128Model.Gtin;
+ if (ean128Model.Content != null) barcodeProd = ean128Model.Content;
- if(!UtilityString.isNullOrEmpty(barcodeProd)) {
+ if (!UtilityString.isNullOrEmpty(barcodeProd)) {
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
- } else if(!mForceOnlyUL) {
+ } else if (!mForceOnlyUL) {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1);
}
@@ -117,17 +131,43 @@ public class DialogScanArtViewModel {
}, this::sendError);
}
+ private void executePosizione(MtbDepoPosizione posizione, MtbAart articolo, RunnableArgssss> onComplete) {
+ this.mPosizioniRESTConsumer.getBancaliInPosizione(posizione, mtbColtList -> {
+
+ if (mtbColtList == null || mtbColtList.size() == 0) {
+ this.sendError(new NoLUFoundException());
+ } else if (mtbColtList.size() == 1) {
+ this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
+ onComplete.run(DialogConsts.Results.YES, articolo, null, mtbColt.getMtbColr());
+ }, this::sendError);
+ } else {
+ this.sendError(new TooManyLUFoundInMonoLUPositionException());
+ }
+
+ }, this::sendError);
+ }
+
private void loadArticolo(@NotNull String barcodeProd, Ean128Model ean128Model, RunnableArgssss> onComplete) {
- if(barcodeProd.length() == 14) {
-// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
+ if (barcodeProd.length() == 14) {
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
String finalBarcodeProd = barcodeProd;
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
- if(mtbAartList != null && mtbAartList.size() > 0) {
- onComplete.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model, null);
+ if (mtbAartList != null && mtbAartList.size() > 0) {
+
+ MtbAart firstArt = mtbAartList.get(0);
+ MtbDepoPosizione firstArtPosition = UtilityPosizione.getFromCache(firstArt.getPosizione());
+
+ if (firstArtPosition != null && firstArtPosition.isFlagMonoCollo() && mForceOnlyUL) {
+ this.executePosizione(firstArtPosition, firstArt, onComplete);
+ } else if (!mForceOnlyUL) {
+ onComplete.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model, null);
+ } else {
+ this.sendError(new NoResultFromBarcodeException(finalBarcodeProd));
+ }
+
} else {
this.sendError(new NoResultFromBarcodeException(finalBarcodeProd));
}
@@ -135,8 +175,6 @@ public class DialogScanArtViewModel {
}
-
-
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
diff --git a/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml
index e384cfd4..ac5fabc5 100644
--- a/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml
+++ b/app/src/main/res/layout/dialog_ask_cliente__dropdown_item_destinatario.xml
@@ -1,38 +1,33 @@
-
+ tools:text="Destinatario" />
-
+ android:maxLines="1"
+ android:textAppearance="?attr/textAppearanceSubtitle1"
+ android:textColor="@color/gray_800"
+ tools:text="Città" />
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_scan_art.xml b/app/src/main/res/layout/dialog_scan_art.xml
index 10577e4a..936a9a7c 100644
--- a/app/src/main/res/layout/dialog_scan_art.xml
+++ b/app/src/main/res/layout/dialog_scan_art.xml
@@ -4,9 +4,10 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
@@ -21,17 +22,17 @@
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="24dp"
- android:paddingEnd="24dp"
android:paddingTop="24dp"
+ android:paddingEnd="24dp"
android:paddingBottom="12dp">
-
+ android:gravity="center_horizontal"
+ android:text="@string/extra_item" />
+ android:layout_height="wrap_content" />
+ android:text="@string/scan_item"
+ android:textSize="16sp" />
-
+ android:layout_marginTop="16dp"
+ android:text="@string/abort"
+ app:layout_constraintTop_toTopOf="parent"
+ app:strokeColor="@color/red_400" />
@@ -78,5 +78,4 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dropdown_simple_item_w_subtitle.xml b/app/src/main/res/layout/dropdown_simple_item_w_subtitle.xml
new file mode 100644
index 00000000..8937eda4
--- /dev/null
+++ b/app/src/main/res/layout/dropdown_simple_item_w_subtitle.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/barcode_base_library/.gitignore b/barcode_base_library/.gitignore
deleted file mode 100644
index 796b96d1..00000000
--- a/barcode_base_library/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/barcode_base_library/build.gradle b/barcode_base_library/build.gradle
deleted file mode 100644
index f623c57a..00000000
--- a/barcode_base_library/build.gradle
+++ /dev/null
@@ -1,5 +0,0 @@
-apply plugin: 'java-library'
-
-dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
-}
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/exception/BarcodeAdapterNotFoundException.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/exception/BarcodeAdapterNotFoundException.java
deleted file mode 100644
index 78def51d..00000000
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/exception/BarcodeAdapterNotFoundException.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package it.integry.barcode_base_android_library.exception;
-
-public class BarcodeAdapterNotFoundException extends Exception {
-
- public BarcodeAdapterNotFoundException(String adapterName) {
- super("L'adapter " + adapterName + " non è stato rilevato sul dispositivo corrente");
- }
-
-}
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/extension/RunnableArgs.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/extension/RunnableArgs.java
deleted file mode 100644
index 303dabb3..00000000
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/extension/RunnableArgs.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package it.integry.barcode_base_android_library.extension;
-
-public interface RunnableArgs {
-
- void run(T data);
-
-}
\ No newline at end of file
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java
deleted file mode 100644
index 41863b49..00000000
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/interfaces/BarcodeReaderInterface.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package it.integry.barcode_base_android_library.interfaces;
-
-
-import it.integry.barcode_base_android_library.extension.RunnableArgs;
-import it.integry.barcode_base_android_library.exception.BarcodeAdapterNotFoundException;
-import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
-
-public interface BarcodeReaderInterface {
-
- boolean isRightAdapter();
-
- void init(Runnable onDeviceReady) throws BarcodeAdapterNotFoundException;
-
- void deinit();
-
- void register(RunnableArgs onScanSuccessfull, RunnableArgs onScanFailed);
-
- String getAdapterName();
-
- //void onKeyEvent(KeyEvent keyEvent);
-
-}
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeScanDTO.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeScanDTO.java
deleted file mode 100644
index ddde65c3..00000000
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeScanDTO.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package it.integry.barcode_base_android_library.model;
-
-public class BarcodeScanDTO {
-
- private BarcodeType type;
- private String stringValue;
- private byte[] byteValue;
- private String name;
- private int decodingTime;
-
- public BarcodeType getType() {
- return type;
- }
-
- public BarcodeScanDTO setType(BarcodeType type) {
- this.type = type;
- return this;
- }
-
- public String getStringValue() {
- return stringValue;
- }
-
- public BarcodeScanDTO setStringValue(String stringValue) {
- this.stringValue = stringValue;
- return this;
- }
-
- public byte[] getByteValue() {
- return byteValue;
- }
-
- public BarcodeScanDTO setByteValue(byte[] byteValue) {
- this.byteValue = byteValue;
- return this;
- }
-
- public String getName() {
- return name;
- }
-
- public BarcodeScanDTO setName(String name) {
- this.name = name;
- return this;
- }
-
- public int getDecodingTime() {
- return decodingTime;
- }
-
- public BarcodeScanDTO setDecodingTime(int decodingTime) {
- this.decodingTime = decodingTime;
- return this;
- }
-}
diff --git a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeType.java b/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeType.java
deleted file mode 100644
index 566fe580..00000000
--- a/barcode_base_library/src/main/java/it/integry/plugins/barcode_base_library/model/BarcodeType.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package it.integry.barcode_base_android_library.model;
-
-public enum BarcodeType {
-
- NIL(0),
- AIRLINE_2OF5_13_DIGIT(1),
- AIRLINE_2OF5_15_DIGIT(2),
- AZTEC(3),
- AUSTRALIAN_POSTAL(4),
- BOOKLAND_EAN(5),
- BPO(6),
- CANPOST(7),
- CHINAPOST(8),
- CHINESE_2OF5(9),
- CODABAR(10),
- CODABLOCK(11),
- CODE11(12),
- CODE128(13),
- CODE16K(14),
- CODE32(15),
- CODE39(16),
- CODE49(17),
- CODE93(18),
- COMPOSITE(19),
- COUPON_CODE(20),
- DATAMATRIX(21),
- DISCRETE_2OF5(22),
- DUTCH_POSTAL(23),
- EAN128(24),
- EAN13(25),
- EAN8(26),
- GS1_DATABAR_14(27),
- GS1_DATABAR_EXPANDED(28),
- GS1_DATABAR_LIMITED(29),
- HONGKONG_2OF5(30),
- IATA_2OF5(31),
- IDTAG(32),
- INTERLEAVED_2OF5(33),
- ISBT128(34),
- JAPANESE_POSTAL(35),
- KOREAN_POSTAL(36),
- MATRIX_2OF5(37),
- MAXICODE(38),
- MESA(39),
- MICRO_PDF417(40),
- MICRO_QR(41),
- MSI(42),
- NEC_2OF5(43),
- OCR(44),
- PDF417(45),
- PLESSEY(46),
- POSICODE(47),
- POST_US4(48),
- QR(49),
- STRAIGHT_2OF5(50),
- STANDARD_2OF5(51),
- TELEPEN(52),
- TLCODE39(53),
- TRIOPTIC(54),
- UK_POSTAL(55),
- UPCA(56),
- UPCE(57),
- UPCE1(58),
- US_PLANET(59),
- US_POSTNET(60),
- USPS_4CB(61),
- RSS(62),
- LABEL(63),
- HANXIN(64),
- GRIDMATRIX(65),
- INFO_MAIL(66),
- INTELLIGENT_MAIL(67),
- SWEDENPOST(68),
- LAST(69);
-
- private Integer text;
- BarcodeType(Integer text) {
- this.text = text;
- }
- public Integer getValue() {
- return this.text;
- }
-
- public static BarcodeType fromInt(Integer text) {
- for (BarcodeType b : BarcodeType.values()) {
- if (b.text.equals(text)) return b;
- }
- return null;
- }
-
-}