Completato dialog scan or create UL per la rettifica giacenze

This commit is contained in:
Giuseppe Scorrano 2018-11-29 11:42:13 +01:00
parent 07ae8fc605
commit 7207b83f39
11 changed files with 389 additions and 16 deletions

2
.idea/modules.xml generated
View File

@ -5,10 +5,8 @@
<module fileurl="file://$PROJECT_DIR$/IntegryWMSNative.iml" filepath="$PROJECT_DIR$/IntegryWMSNative.iml" /> <module fileurl="file://$PROJECT_DIR$/IntegryWMSNative.iml" filepath="$PROJECT_DIR$/IntegryWMSNative.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
<module fileurl="file://$PROJECT_DIR$/barcode_base_library/barcode_base_library.iml" filepath="$PROJECT_DIR$/barcode_base_library/barcode_base_library.iml" /> <module fileurl="file://$PROJECT_DIR$/barcode_base_library/barcode_base_library.iml" filepath="$PROJECT_DIR$/barcode_base_library/barcode_base_library.iml" />
<module fileurl="file://$PROJECT_DIR$/barcode_base_library/barcode_base_library.iml" filepath="$PROJECT_DIR$/barcode_base_library/barcode_base_library.iml" />
<module fileurl="file://$PROJECT_DIR$/pointmobilescannerlibrary/pointmobilescannerlibrary.iml" filepath="$PROJECT_DIR$/pointmobilescannerlibrary/pointmobilescannerlibrary.iml" /> <module fileurl="file://$PROJECT_DIR$/pointmobilescannerlibrary/pointmobilescannerlibrary.iml" filepath="$PROJECT_DIR$/pointmobilescannerlibrary/pointmobilescannerlibrary.iml" />
<module fileurl="file://$PROJECT_DIR$/waterfall_toolbar/waterfall_toolbar.iml" filepath="$PROJECT_DIR$/waterfall_toolbar/waterfall_toolbar.iml" /> <module fileurl="file://$PROJECT_DIR$/waterfall_toolbar/waterfall_toolbar.iml" filepath="$PROJECT_DIR$/waterfall_toolbar/waterfall_toolbar.iml" />
<module fileurl="file://$PROJECT_DIR$/waterfall_toolbar/waterfall_toolbar.iml" filepath="$PROJECT_DIR$/waterfall_toolbar/waterfall_toolbar.iml" />
</modules> </modules>
</component> </component>
</project> </project>

View File

@ -2,6 +2,9 @@ package it.integry.integrywmsnative.core.REST.consumers;
import com.google.gson.JsonObject; 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.RESTBuilder;
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse; 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.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; 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.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@ -22,6 +30,70 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
} }
public static void createColloLavorazione(RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> 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<MtbColt>() {
@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<MtbColt> onComplete, RunnableArgs<Exception> 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<MtbColt>() {
@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<Exception> onFailed){ public static void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs<Exception> onFailed){
mtbColtToDelete.setOperation(CommonModelConsts.OPERATION.DELETE); mtbColtToDelete.setOperation(CommonModelConsts.OPERATION.DELETE);

View File

@ -10,6 +10,7 @@ public class DBSettingsModel {
private List<AvailableCodMdepsDTO> availableCodMdep = null; private List<AvailableCodMdepsDTO> availableCodMdep = null;
private boolean enableCheckPartitaMagCheckPickingV; private boolean enableCheckPartitaMagCheckPickingV;
private String defaultCodAnag;
public List<String> getAvailableProfiles() { public List<String> getAvailableProfiles() {
return availableProfiles; return availableProfiles;
@ -35,4 +36,13 @@ public class DBSettingsModel {
this.enableCheckPartitaMagCheckPickingV = enableCheckPartitaMagCheckPickingV; this.enableCheckPartitaMagCheckPickingV = enableCheckPartitaMagCheckPickingV;
return this; return this;
} }
public String getDefaultCodAnag() {
return defaultCodAnag;
}
public DBSettingsModel setDefaultCodAnag(String defaultCodAnag) {
this.defaultCodAnag = defaultCodAnag;
return this;
}
} }

View File

@ -130,13 +130,20 @@ public class SettingsManager {
private static void loadGestSetupValues(Runnable onComplete, RunnableArgs<Exception> onFailed) { private static void loadGestSetupValues(Runnable onComplete, RunnableArgs<Exception> onFailed) {
GestSetupRESTConsumer.getBooleanValue("PICKING", "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", value -> { GestSetupRESTConsumer.getBooleanValue("PICKING", "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", valueEnableCheckPartitaMag -> {
dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(value); dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(valueEnableCheckPartitaMag);
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "COD_ANAG_DEFAULT", valueCodAnagDefault -> {
dbSettingsModelIstance.setDefaultCodAnag(valueCodAnagDefault.value);
if(onComplete != null) onComplete.run(); if(onComplete != null) onComplete.run();
}, ex -> { }, ex -> {
if(onFailed != null) onFailed.run(ex); if(onFailed != null) onFailed.run(ex);
}); });
}, ex -> {
if(onFailed != null) onFailed.run(ex);
});
} }
} }

View File

@ -12,9 +12,11 @@ import android.view.ViewGroup;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding;
import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding; import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper; import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper;
import it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel.RettificaGiacenzeViewModel; 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 { public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment {
@ -67,11 +69,18 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
mBinding.autoCompleteFornitori.setOnFocusChangeListener((v, hasFocus) -> { mBinding.autoCompleteFornitori.setOnFocusChangeListener((v, hasFocus) -> {
setUIToForn(); setUIToForn();
}); });
mBinding.inputCodArtDescrForn.setOnFocusChangeListener((v, hasFocus) -> {
setUIToForn();
});
mBinding.inputCodArtDescrInt.setOnFocusChangeListener((v, hasFocus) -> { mBinding.inputCodArtDescrInt.setOnFocusChangeListener((v, hasFocus) -> {
setUIToIntArt(); setUIToIntArt();
}); });
DialogScanOrCreateLU.makeBase(getActivity(), mtbColt -> {
mRettificaGiacenzeViewModel.setMtbColt(mtbColt);
}).show();
} }

View File

@ -14,6 +14,7 @@ import android.widget.Filter;
import android.widget.TextView; import android.widget.TextView;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -76,22 +77,35 @@ public class AutoCompleteFornitoreAdapter extends ArrayAdapter<FornitoreDTO> {
} }
} }
@Override @Override
protected void publishResults(CharSequence constraint, FilterResults results) { protected void publishResults(CharSequence constraint, FilterResults results) {
boolean error;
do {
try {
ArrayList<FornitoreDTO> filteredList = (ArrayList<FornitoreDTO>) results.values; ArrayList<FornitoreDTO> filteredList = (ArrayList<FornitoreDTO>) results.values;
if(results != null && results.count > 0) { if (results.count > 0) {
clear(); clear();
synchronized (filteredList) {
for (FornitoreDTO c : filteredList) { for (FornitoreDTO c : filteredList) {
add(c); add(c);
} }
notifyDataSetChanged(); notifyDataSetChanged();
} }
error = false;
} catch (ConcurrentModificationException ex) {
error = true;
} }
} while (error);
} }
@Override @Override
public CharSequence convertResultToString(Object resultValue) { public CharSequence convertResultToString(Object resultValue) {
return ((FornitoreDTO) resultValue).getCodAlis(); return ((FornitoreDTO) resultValue).getCodAlis();

View File

@ -3,6 +3,7 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.databinding.ObservableArrayList; import android.databinding.ObservableArrayList;
import android.databinding.ObservableField;
import android.text.SpannableString; import android.text.SpannableString;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
@ -12,6 +13,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R; 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.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
@ -28,12 +30,18 @@ public class RettificaGiacenzeViewModel {
private RettificaGiacenzeHelper mHelper; private RettificaGiacenzeHelper mHelper;
private ObservableField<MtbColt> mtbColt = new ObservableField<>();
public void init(Context context, FragmentMainRettificaGiacenzeBinding binding, RettificaGiacenzeHelper helper) { public void init(Context context, FragmentMainRettificaGiacenzeBinding binding, RettificaGiacenzeHelper helper) {
mContext = context; mContext = context;
mBinding = binding; mBinding = binding;
mHelper = helper; mHelper = helper;
} }
public void setMtbColt(MtbColt mtbColt) {
this.mtbColt.set(mtbColt);
}
public void setupSearchFornitori(ArrayList<FornitoreDTO> listaFornitori) { public void setupSearchFornitori(ArrayList<FornitoreDTO> listaFornitori) {
AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(mContext, listaFornitori); AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(mContext, listaFornitori);
mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter); mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter);

View File

@ -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<MtbColt> mOnDialogDismiss;
public static AlertDialog makeBase(final Context context, RunnableArgs<MtbColt> 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<MtbColt> 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<BarcodeScanDTO> 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);
}
}

View File

@ -26,8 +26,7 @@
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
app:layout_constraintWidth_percent="0.3">
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="10">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
android:text="Scansiona il codice a barre di una UL"/>
</LinearLayout>
<android.support.v7.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="12dp"
android:textSize="16sp"
android:textStyle="bold"
android:layout_gravity="center_vertical"
android:text="OPPURE"
tools:text="OPPURE"/>
<android.support.v7.widget.AppCompatButton
android:id="@+id/create_new_lu_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="Crea nuova UL"
android:textStyle="bold"
android:textColor="@android:color/white"
android:backgroundTint="@color/blue_700"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</layout>

View File

@ -12,6 +12,7 @@
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@android:color/white"
tools:context=".gest.vendita.MainVenditaFragment"> tools:context=".gest.vendita.MainVenditaFragment">
<RelativeLayout <RelativeLayout