diff --git a/.idea/modules.xml b/.idea/modules.xml
index d4556b57..246b1bce 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -5,10 +5,8 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java
index d133c1f5..927cb583 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java
@@ -2,6 +2,9 @@ package it.integry.integrywmsnative.core.REST.consumers;
import com.google.gson.JsonObject;
+import java.util.Date;
+
+import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.REST.RESTBuilder;
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
@@ -9,6 +12,11 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -22,6 +30,70 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
}
+ public static void createColloLavorazione(RunnableArgs onComplete, RunnableArgs onFailed) {
+ MtbColt mtbColtToCreate = new MtbColt()
+ .setGestione("L")
+ .setDataCollo(new Date())
+ .setCodMdep(SettingsManager.i().userSession.depo.getCodMdep())
+ .setPreparatoDa(SettingsManager.i().user.fullname)
+ .setOraInizPrep(new Date())
+ .setCodAnag(SettingsManager.iDB().getDefaultCodAnag());
+
+ mtbColtToCreate
+ .setOperation(CommonModelConsts.OPERATION.INSERT);
+
+
+ saveCollo(mtbColtToCreate, new ISimpleOperationCallback() {
+ @Override
+ public void onSuccess(MtbColt value) {
+ if(onComplete != null) onComplete.run(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+ }
+
+
+ public static void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, String gestione, RunnableArgs onComplete, RunnableArgs onFailed) {
+
+ MtbColt mtbColtToCreate = new MtbColt()
+ .setGestione(gestione)
+ .setDataCollo(new Date())
+ .setCodMdep(SettingsManager.i().userSession.depo.getCodMdep())
+ .setPreparatoDa(SettingsManager.i().user.fullname)
+ .setOraInizPrep(new Date())
+ .setCodAnag(SettingsManager.iDB().getDefaultCodAnag());
+
+ Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO);
+ String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE;
+
+ if(customNumCollo != null) {
+ mtbColtToCreate.setNumCollo(customNumCollo);
+ }
+
+ if(!UtilityString.isNullOrEmpty(customSerCollo)) {
+ mtbColtToCreate.setSerCollo(customSerCollo);
+ }
+
+ mtbColtToCreate
+ .setOperation(CommonModelConsts.OPERATION.INSERT);
+
+ saveCollo(mtbColtToCreate, new ISimpleOperationCallback() {
+ @Override
+ public void onSuccess(MtbColt value) {
+ if(onComplete != null) onComplete.run(value);
+ }
+
+ @Override
+ public void onFailed(Exception ex) {
+ if(onFailed != null) onFailed.run(ex);
+ }
+ });
+ }
+
public static void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed){
mtbColtToDelete.setOperation(CommonModelConsts.OPERATION.DELETE);
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 d0b4348d..9b188777 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
@@ -10,6 +10,7 @@ public class DBSettingsModel {
private List availableCodMdep = null;
private boolean enableCheckPartitaMagCheckPickingV;
+ private String defaultCodAnag;
public List getAvailableProfiles() {
return availableProfiles;
@@ -35,4 +36,13 @@ public class DBSettingsModel {
this.enableCheckPartitaMagCheckPickingV = enableCheckPartitaMagCheckPickingV;
return this;
}
+
+ public String getDefaultCodAnag() {
+ return defaultCodAnag;
+ }
+
+ public DBSettingsModel setDefaultCodAnag(String defaultCodAnag) {
+ this.defaultCodAnag = defaultCodAnag;
+ 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 a59d1ffd..2c91f2b7 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
@@ -130,10 +130,17 @@ public class SettingsManager {
private static void loadGestSetupValues(Runnable onComplete, RunnableArgs onFailed) {
- GestSetupRESTConsumer.getBooleanValue("PICKING", "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", value -> {
- dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(value);
+ GestSetupRESTConsumer.getBooleanValue("PICKING", "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", valueEnableCheckPartitaMag -> {
+ dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(valueEnableCheckPartitaMag);
+
+ GestSetupRESTConsumer.getValue("PICKING", "SETUP", "COD_ANAG_DEFAULT", valueCodAnagDefault -> {
+ dbSettingsModelIstance.setDefaultCodAnag(valueCodAnagDefault.value);
+
+ if(onComplete != null) onComplete.run();
+ }, ex -> {
+ if(onFailed != null) onFailed.run(ex);
+ });
- if(onComplete != null) onComplete.run();
}, ex -> {
if(onFailed != null) onFailed.run(ex);
});
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 1571dde4..c69d01ee 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
@@ -12,9 +12,11 @@ import android.view.ViewGroup;
import butterknife.ButterKnife;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
+import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding;
import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper;
import it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel.RettificaGiacenzeViewModel;
+import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment {
@@ -67,11 +69,18 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
mBinding.autoCompleteFornitori.setOnFocusChangeListener((v, hasFocus) -> {
setUIToForn();
});
+ mBinding.inputCodArtDescrForn.setOnFocusChangeListener((v, hasFocus) -> {
+ setUIToForn();
+ });
mBinding.inputCodArtDescrInt.setOnFocusChangeListener((v, hasFocus) -> {
setUIToIntArt();
});
+ DialogScanOrCreateLU.makeBase(getActivity(), mtbColt -> {
+ mRettificaGiacenzeViewModel.setMtbColt(mtbColt);
+ }).show();
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java
index 9a5f0fc2..a371282a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/AutoCompleteFornitoreAdapter.java
@@ -14,6 +14,7 @@ import android.widget.Filter;
import android.widget.TextView;
import java.util.ArrayList;
+import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.List;
@@ -76,22 +77,35 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter {
}
}
+
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
- ArrayList filteredList = (ArrayList) results.values;
- if(results != null && results.count > 0) {
- clear();
- synchronized (filteredList) {
- for (FornitoreDTO c : filteredList) {
- add(c);
+ boolean error;
+
+ do {
+ try {
+ ArrayList filteredList = (ArrayList) results.values;
+ if (results.count > 0) {
+ clear();
+
+ for (FornitoreDTO c : filteredList) {
+ add(c);
+ }
+
+ notifyDataSetChanged();
+
}
- notifyDataSetChanged();
-
+ error = false;
+ } catch (ConcurrentModificationException ex) {
+ error = true;
}
- }
+ } while (error);
+
+
}
+
@Override
public CharSequence convertResultToString(Object resultValue) {
return ((FornitoreDTO) resultValue).getCodAlis();
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java
index 36c5ca97..45d5eb32 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java
@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel;
import android.app.ProgressDialog;
import android.content.Context;
import android.databinding.ObservableArrayList;
+import android.databinding.ObservableField;
import android.text.SpannableString;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
@@ -12,6 +13,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -28,12 +30,18 @@ public class RettificaGiacenzeViewModel {
private RettificaGiacenzeHelper mHelper;
+ private ObservableField mtbColt = new ObservableField<>();
+
public void init(Context context, FragmentMainRettificaGiacenzeBinding binding, RettificaGiacenzeHelper helper) {
mContext = context;
mBinding = binding;
mHelper = helper;
}
+ public void setMtbColt(MtbColt mtbColt) {
+ this.mtbColt.set(mtbColt);
+ }
+
public void setupSearchFornitori(ArrayList listaFornitori) {
AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(mContext, listaFornitori);
mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter);
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java
new file mode 100644
index 00000000..eab94c74
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java
@@ -0,0 +1,188 @@
+package it.integry.integrywmsnative.view.dialogs.scan_or_create_lu;
+
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.databinding.DataBindingUtil;
+import android.databinding.ViewDataBinding;
+import android.support.v7.app.AlertDialog;
+import android.text.SpannableString;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
+import it.integry.integrywmsnative.core.REST.model.Ean128Model;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
+import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.core.utility.UtilityProgress;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding;
+import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
+import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
+import it.integry.plugins.barcode_base_library.model.BarcodeType;
+
+public class DialogScanOrCreateLU {
+
+ private static Context currentContext;
+
+ private static AlertDialog currentAlert;
+
+ private static DialogScanOrCreateLuBinding mBinding;
+
+ private static RunnableArgs mOnDialogDismiss;
+
+
+ public static AlertDialog makeBase(final Context context, RunnableArgs onDialogDismiss) {
+ currentContext = context;
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_or_create_lu, null, false);
+
+ final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
+ .setView(mBinding.getRoot());
+
+ currentAlert = alertDialog.create();
+ currentAlert.setCanceledOnTouchOutside(false);
+
+ init(onDialogDismiss);
+ initBarcode(context);
+
+ return currentAlert;
+ }
+
+
+ private static void init(RunnableArgs onDialogDismiss) {
+ mOnDialogDismiss = onDialogDismiss;
+
+ mBinding.createNewLuButton.setOnClickListener(v -> {
+ final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext);
+ progressDialog.show();
+
+ ColliMagazzinoRESTConsumer.createColloLavorazione(createdMtbColt -> {
+ sendMtbColt(createdMtbColt, progressDialog);
+ }, ex -> {
+ UtilityExceptions.defaultException(currentContext, ex, progressDialog);
+ });
+ });
+ }
+
+ private static void initBarcode(Context context) {
+
+ int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
+ .setOnScanSuccessfull(onScanSuccessfull)
+ .setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
+
+ currentAlert.setOnDismissListener(dialog -> {
+ BarcodeManager.removeCallback(barcodeIstanceID);
+ });
+
+ }
+
+
+ private static RunnableArgs onScanSuccessfull = data -> {
+ BarcodeManager.disable();
+
+ final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext);
+ progressDialog.show();
+
+ if(UtilityBarcode.isEtichettaAnonima(data)) {
+ executeEtichettaAnonima(data, progressDialog);
+ } else if(data.getType() == BarcodeType.EAN128) {
+ executeEAN128(data, progressDialog);
+ } else {
+ progressDialog.dismiss();
+ BarcodeManager.enable();
+ showNoULFound();
+ }
+
+ };
+
+
+ private static void executeEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
+ ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
+
+ if(mtbColt == null) {
+
+ ColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(barcodeScanDTO, "L", createdMtbColt -> {
+ BarcodeManager.enable();
+ createdMtbColt.setDisablePrint(true);
+ sendMtbColt(createdMtbColt, progressDialog);
+ }, ex -> {
+ UtilityExceptions.defaultException(currentContext, ex, progressDialog);
+ BarcodeManager.enable();
+ });
+
+ } else {
+
+ BarcodeManager.enable();
+
+ mtbColt.setDisablePrint(true);
+ sendMtbColt(mtbColt, progressDialog);
+
+ }
+
+ }, ex -> {
+ UtilityExceptions.defaultException(currentContext, ex, progressDialog);
+ BarcodeManager.enable();
+ });
+ }
+
+
+ private static void executeEAN128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
+ BarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
+
+ if(ean128Model != null && !UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
+
+ ColliMagazzinoRESTConsumer.getBySSCC(ean128Model.Sscc, true, false, mtbColt -> {
+
+ if(mtbColt != null) {
+
+ BarcodeManager.enable();
+ sendMtbColt(mtbColt, progressDialog);
+
+ } else {
+ BarcodeManager.enable();
+ progressDialog.dismiss();
+ showNoULFound();
+ }
+
+ }, ex -> {
+ UtilityExceptions.defaultException(currentContext, ex, progressDialog);
+ BarcodeManager.enable();
+ });
+
+ } else {
+ BarcodeManager.enable();
+ progressDialog.dismiss();
+
+ showNoULFound();
+ }
+
+
+
+
+ }, ex -> {
+ UtilityExceptions.defaultException(currentContext, ex, progressDialog);
+ BarcodeManager.enable();
+ });
+ }
+
+
+ private static void showNoULFound() {
+
+ }
+
+ private static void sendMtbColt(MtbColt mtbColtToSend, ProgressDialog progressDialog) {
+ progressDialog.dismiss();
+ currentAlert.dismiss();
+ mOnDialogDismiss.run(mtbColtToSend);
+ }
+
+}
diff --git a/app/src/main/res/layout/dialog_input_quantity_articolo.xml b/app/src/main/res/layout/dialog_input_quantity_articolo.xml
index c2d458c6..c404f734 100644
--- a/app/src/main/res/layout/dialog_input_quantity_articolo.xml
+++ b/app/src/main/res/layout/dialog_input_quantity_articolo.xml
@@ -26,8 +26,7 @@
+ android:layout_height="wrap_content">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main_vendita.xml b/app/src/main/res/layout/fragment_main_vendita.xml
index 80811a9c..8f8703ce 100644
--- a/app/src/main/res/layout/fragment_main_vendita.xml
+++ b/app/src/main/res/layout/fragment_main_vendita.xml
@@ -12,6 +12,7 @@