Finish v1.16.0(182)

This commit is contained in:
Giuseppe Scorrano 2021-02-08 17:19:14 +01:00
commit ed2a36d66a
13 changed files with 543 additions and 138 deletions

View File

@ -7,8 +7,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 181 def appVersionCode = 182
def appVersionName = '1.15.0' def appVersionName = '1.16.0'
signingConfigs { signingConfigs {
release { release {

View File

@ -25,6 +25,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
// Definition of the Application graph // Definition of the Application graph
@Singleton @Singleton
@ -41,7 +43,8 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
PickingResiModule.class, PickingResiModule.class,
ProdPosizionamentoDaOrdModule.class, ProdPosizionamentoDaOrdModule.class,
OrdiniUscitaElencoModule.class, OrdiniUscitaElencoModule.class,
DialogInputQuantityV2Module.class}) DialogInputQuantityV2Module.class,
DialogScanArtModule.class})
public interface MainApplicationComponent { public interface MainApplicationComponent {
MainActivityComponent.Factory mainActivityComponent(); MainActivityComponent.Factory mainActivityComponent();
@ -55,6 +58,7 @@ public interface MainApplicationComponent {
ProdPosizionamentoDaOrdComponent.Factory prodPosizionamentoDaOrdComponent(); ProdPosizionamentoDaOrdComponent.Factory prodPosizionamentoDaOrdComponent();
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
DialogScanArtComponent.Factory dialogScanArtComponent();

View File

@ -0,0 +1,37 @@
package it.integry.integrywmsnative.core.expansion;
import android.view.KeyEvent;
import androidx.fragment.app.DialogFragment;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
public class BaseDialogFragment extends DialogFragment {
private boolean mBarcodeListener = false;
public BaseDialogFragment() {
super();
if (BarcodeManager.isEnabled() && BarcodeManager.isKeyboardEmulator()) {
getDialog().setOnKeyListener((dialog, keyCode, event) -> {
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
return false;
});
}
}
private boolean isControlKey(KeyEvent keyEvent) {
int keyCode = keyEvent.getKeyCode();
return (
keyCode == KeyEvent.KEYCODE_BACK ||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
keyCode == KeyEvent.KEYCODE_DEL
);
}
public void setBarcodeListener(boolean listen) {
this.mBarcodeListener = listen;
}
}

View File

@ -0,0 +1,6 @@
package it.integry.integrywmsnative.core.expansion;
public interface RunnableArgssss<S, T, U, V> {
void run(S data1, T data2, U data3, V data4);
}

View File

@ -586,11 +586,13 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
}; };
public void addExtraItem() { public void addExtraItem() {
DialogScanArt.make(this, (status, mtbAart, ean128Model) -> { DialogScanArt
if(status == DialogConsts.Results.YES) { .newInstance((status, mtbAart, ean128Model, mtbColr) -> {
this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model); if(status == DialogConsts.Results.YES) {
} this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model, mtbColr);
}).show(); }
})
.show(getSupportFragmentManager(), "tag");
} }
public void startManualSearch() { public void startManualSearch() {

View File

@ -918,7 +918,7 @@ public class SpedizioneViewModel {
} }
public void dispatchExtraItem(MtbAart mtbAart, Ean128Model ean128Model) { public void dispatchExtraItem(MtbAart mtbAart, Ean128Model ean128Model, MtbColr mtbColrToUse) {
PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
.setMtbAart(mtbAart) .setMtbAart(mtbAart)
@ -928,6 +928,10 @@ public class SpedizioneViewModel {
BigDecimal qtaColDaPrelevare = null; BigDecimal qtaColDaPrelevare = null;
BigDecimal qtaCnfDaPrelevare = null; BigDecimal qtaCnfDaPrelevare = null;
BigDecimal totalQtaAvailable = null;
BigDecimal totalNumCnfAvailable = null;
BigDecimal qtaCnfAvailable = null;
BigDecimal initialNumCnf = null; BigDecimal initialNumCnf = null;
BigDecimal initialQtaCnf = null; BigDecimal initialQtaCnf = null;
BigDecimal initialQtaTot = null; BigDecimal initialQtaTot = null;
@ -935,7 +939,48 @@ public class SpedizioneViewModel {
String partitaMag = null; String partitaMag = null;
Date dataScad = null; Date dataScad = null;
if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) { MtbColt refMtbColt = null;
if (mtbColrToUse != null) {
refMtbColt = new MtbColt()
.setDataCollo(mtbColrToUse.getDataColloD())
.setSerCollo(mtbColrToUse.getSerCollo())
.setNumCollo(mtbColrToUse.getNumCollo())
.setGestione(mtbColrToUse.getGestione())
.setMtbColr(new ObservableArrayList<>());
refMtbColt.getMtbColr().add(mtbColrToUse);
pickingObjectDTO
.setMtbAart(mtbColrToUse.getMtbAart())
.setTempPickData(new PickDataDTO().setSourceMtbColt(refMtbColt));
if (mtbColrToUse.getMtbAart().isFlagQtaCnfFissaBoolean()) {
numCnfDaPrelevare = mtbColrToUse.getNumCnf();
qtaColDaPrelevare = mtbColrToUse.getQtaCol();
qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf();
} else {
numCnfDaPrelevare = mtbColrToUse.getNumCnf();
qtaCnfDaPrelevare = mtbColrToUse.getQtaCnf();
qtaColDaPrelevare = mtbColrToUse.getQtaCol();
}
totalQtaAvailable = mtbColrToUse.getQtaCol();
totalNumCnfAvailable = mtbColrToUse.getNumCnf();
qtaCnfAvailable = mtbColrToUse.getQtaCnf();
if (UtilityBigDecimal.lowerThan(numCnfDaPrelevare, BigDecimal.ZERO))
numCnfDaPrelevare = BigDecimal.ZERO;
if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO))
qtaColDaPrelevare = BigDecimal.ZERO;
partitaMag = mtbColrToUse.getPartitaMag();
dataScad = mtbColrToUse.getDataScadPartitaD();
} else if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
//Oppure le info del barcode scansionato //Oppure le info del barcode scansionato
PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO(); PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO();
@ -974,6 +1019,7 @@ public class SpedizioneViewModel {
} }
MtbColt finalRefMtbColt = refMtbColt;
this.sendOnItemDispatched( this.sendOnItemDispatched(
pickingObjectDTO, pickingObjectDTO,
pickingObjectDTO.getMtbAart(), pickingObjectDTO.getMtbAart(),
@ -986,15 +1032,15 @@ public class SpedizioneViewModel {
qtaColDaPrelevare, qtaColDaPrelevare,
numCnfDaPrelevare, numCnfDaPrelevare,
qtaCnfDaPrelevare, qtaCnfDaPrelevare,
null, totalQtaAvailable,
null, totalNumCnfAvailable,
null, qtaCnfAvailable,
partitaMag, partitaMag,
dataScad, dataScad,
mCanOverflowOrderQuantity, mCanOverflowOrderQuantity,
(pickedQuantityDTO, shouldCloseLU) -> { (pickedQuantityDTO, shouldCloseLU) -> {
this.saveNewRow(pickingObjectDTO, this.saveNewRow(pickingObjectDTO,
null, finalRefMtbColt,
pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getNumCnf(),
pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaCnf(),
pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getQtaTot(),

View File

@ -0,0 +1,80 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.choose_art_from_lista_arts;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
public class DialogChooseArtFromListaMtbColr {
private Context currentContext;
private Dialog mDialog;
private DialogChooseArtFromListaMtbColrAdapter currentAdapter;
private RunnableArgs<MtbColr> mOnItemChoosed;
public static Dialog make(final Context context, List<MtbColr> mtbColrList, RunnableArgs<MtbColr> onItemChoosed) {
return new DialogChooseArtFromListaMtbColr(context, mtbColrList, onItemChoosed).mDialog;
}
private DialogChooseArtFromListaMtbColr(Context context, List<MtbColr> mtbColrList, RunnableArgs<MtbColr> onItemChoosed) {
currentContext = context;
mOnItemChoosed = onItemChoosed;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
DialogChooseArtFromListaArtBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_art_from_lista_art, null, false);
mDialog = new Dialog(context);
mDialog.setContentView(bindings.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
UtilityDialog.setTo90PercentWidth(context, mDialog);
initRecyclerView(bindings, mtbColrList);
}
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbColr> dataset) {
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
DividerItemDecoration itemDecorator = new DividerItemDecoration(currentContext, DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
currentAdapter = new DialogChooseArtFromListaMtbColrAdapter(currentContext, dataset, onItemClicked);
binding.dialogChooseArtFromListaArtMainList.setAdapter(currentAdapter);
}
private IRecyclerItemClicked<MtbColr> onItemClicked = (item, position) -> {
if(mOnItemChoosed != null) {
mOnItemChoosed.run(item);
}
mDialog.dismiss();
};
}

View File

@ -0,0 +1,78 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.choose_art_from_lista_arts;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtItemModelBinding;
public class DialogChooseArtFromListaMtbColrAdapter extends RecyclerView.Adapter<DialogChooseArtFromListaMtbColrAdapter.ViewHolder> {
protected Context mContext;
private List<MtbColr> mDataset;
private IRecyclerItemClicked<MtbColr> mOnItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder {
protected DialogChooseArtFromListaArtItemModelBinding mViewDataBinding;
public ViewHolder(DialogChooseArtFromListaArtItemModelBinding v) {
super(v.getRoot());
mViewDataBinding = v;
}
public void bind(MtbAart mtbAart) {
mViewDataBinding.setMtbAart(mtbAart);
mViewDataBinding.executePendingBindings();
}
}
public DialogChooseArtFromListaMtbColrAdapter(Context context, List<MtbColr> myDataset, IRecyclerItemClicked<MtbColr> onItemClickListener) {
mContext = context;
mDataset = myDataset;
mOnItemClickListener = onItemClickListener;
}
@Override
public DialogChooseArtFromListaMtbColrAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
DialogChooseArtFromListaArtItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_art_from_lista_art__item_model, parent, false);
return new ViewHolder(viewDataBinding);
}
@Override
public void onBindViewHolder(DialogChooseArtFromListaMtbColrAdapter.ViewHolder holder, int position) {
MtbColr item = mDataset.get(position);
holder.bind(item.getMtbAart());
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(item, position);
}
});
}
@Override
public void onViewRecycled(DialogChooseArtFromListaMtbColrAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
}
@Override
public int getItemCount() {
return mDataset.size();
}
}

View File

@ -35,6 +35,7 @@ import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.model.MtbUntMis;
@ -44,10 +45,11 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener { public class DialogInputQuantityV2 extends BaseDialogFragment implements DialogInputQuantityV2ViewModel.Listener {
@Inject @Inject
DialogInputQuantityV2ViewModel mViewModel; DialogInputQuantityV2ViewModel mViewModel;
private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO;
private RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete; private RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> mOnComplete;
private Runnable mOnAbort; private Runnable mOnAbort;
@ -79,6 +81,8 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
} }
private DialogInputQuantityV2(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) { private DialogInputQuantityV2(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss<DialogInputQuantityV2ResultDTO, Boolean> onComplete, @NotNull Runnable onAbort) {
super();
this.mDialogInputQuantityV2DTO = dialogInputQuantityV2DTO; this.mDialogInputQuantityV2DTO = dialogInputQuantityV2DTO;
this.mOnComplete = onComplete; this.mOnComplete = onComplete;
this.mOnAbort = onAbort; this.mOnAbort = onAbort;

View File

@ -4,177 +4,149 @@ import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.text.SpannableString; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import org.jetbrains.annotations.NotNull;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.expansion.RunnableArgssss;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
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.databinding.DialogScanArtBinding; import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_mtb_colr.choose_art_from_lista_arts.DialogChooseArtFromListaMtbColr;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
public class DialogScanArt { public class DialogScanArt extends BaseDialogFragment implements DialogScanArtViewModel.Listener {
@Inject
DialogScanArtViewModel mViewModel;
private Context mContext; private Context mContext;
private BaseDialog mDialog;
private RunnableArgsss<DialogConsts.Results, MtbAart, Ean128Model> mOnItemChoosed; private DialogScanArtBinding mBindings;
public static Dialog make(final Context context, RunnableArgsss<DialogConsts.Results, MtbAart, Ean128Model> onItemChoosed) { private int mBarcodeScannerIstanceID;
return new DialogScanArt(context, onItemChoosed).mDialog; private Dialog mCurrentProgress;
private RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> mOnItemChoosed = null;
public static DialogScanArt newInstance(@NotNull RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> onComplete) {
return new DialogScanArt(onComplete);
}
private DialogScanArt(RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, MtbColr> onItemChoosed) {
super();
mOnItemChoosed = onItemChoosed;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.initBarcode();
} }
private DialogScanArt(Context context, RunnableArgsss<DialogConsts.Results, MtbAart, Ean128Model> onItemChoosed) { @Nullable
mContext = context; @Override
mOnItemChoosed = onItemChoosed; public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
this.mContext = getActivity();
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_art, container, false);
DialogScanArtBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_art, null, false);
mDialog = new BaseDialog(context); MainApplication.appComponent
.dialogScanArtComponent()
.create()
.inject(this);
mDialog.setContentView(bindings.getRoot()); this.mViewModel
.setListener(this);
mDialog.setCanceledOnTouchOutside(false); getDialog().setCanceledOnTouchOutside(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mBindings.buttonNo.setOnClickListener(v -> {
bindings.buttonNo.setOnClickListener(v -> { mOnItemChoosed.run(DialogConsts.Results.ABORT, null, null, null);
mOnItemChoosed.run(DialogConsts.Results.ABORT, null, null); dismiss();
mDialog.dismiss();
}); });
initBarcode(context); getDialog().setOnDismissListener(dialog -> {
} BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
private void initBarcode(Context context) {
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
mDialog.setBarcodeListener(true);
mDialog.setOnDismissListener(dialog -> {
BarcodeManager.removeCallback(barcodeIstanceID);
BarcodeManager.enable(); BarcodeManager.enable();
}); });
return mBindings.getRoot();
}
private void initBarcode() {
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this.mContext, ex, false)));
setBarcodeListener(true);
} }
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
BarcodeManager.disable(); BarcodeManager.disable();
this.openProgress();
if(UtilityBarcode.isEtichetta128(data)) { this.mViewModel.processBarcodeDTO(data, (status, mtbAart, ean128Model, mtbColrList) -> {
this.executeEtichettaEan128(data, progressDialog); if(mtbColrList != null && mtbColrList.size() > 0) {
} else if(UtilityBarcode.isEanPeso(data)){ DialogChooseArtFromListaMtbColr.make(mContext, mtbColrList, mtbColrChose -> {
this.executeEtichettaEanPeso(data, progressDialog); mOnItemChoosed.run(status, mtbAart, ean128Model, mtbColrChose);
} else { }).show();
this.loadArticolo(data.getStringValue(), null, progressDialog); } else {
} mOnItemChoosed.run(status, mtbAart, ean128Model, null);
}
BarcodeManager.enable();
this.closeProgress();
dismiss();
});
}; };
@Override
public void onError(Exception ex) {
this.closeProgress();
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { UtilityExceptions.defaultException(mContext, ex, mCurrentProgress);
BarcodeRESTConsumer.decodeEan128Static(barcodeScanDTO, ean128Model -> { BarcodeManager.enable();
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(!UtilityString.isNullOrEmpty(barcodeProd)) {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1, barcodeProd.length());
}
this.loadArticolo(barcodeProd, ean128Model, progressDialog);
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
progressDialog.dismiss();
BarcodeManager.enable();
}
}, ex-> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
} }
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
try { protected void openProgress() {
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue()); if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(mContext);
this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128(), progressDialog);
} catch (Exception ex) {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
} }
} }
protected void closeProgress() {
if (mCurrentProgress != null) {
private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Dialog progressDialog) { mCurrentProgress.dismiss();
if(barcodeProd.length() == 14) { mCurrentProgress = null;
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
} }
ArticoloRESTConsumer.getByBarcodeProdStatic(barcodeProd, mtbAartList -> {
if(mtbAartList != null && mtbAartList.size() > 0) {
BarcodeManager.enable();
progressDialog.dismiss();
mOnItemChoosed.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model);
mDialog.dismiss();
} else {
BarcodeManager.enable();
progressDialog.dismiss();
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_result_from_barcode)),
null, null)
.show();
}
}, ex -> {
BarcodeManager.enable();
UtilityExceptions.defaultException(mContext, ex, progressDialog);
});
} }
} }

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.view.dialogs.scan_art;
import dagger.Subcomponent;
@Subcomponent
public interface DialogScanArtComponent {
@Subcomponent.Factory
interface Factory {
DialogScanArtComponent create();
}
void inject(DialogScanArt dialogScanArt);
}

View File

@ -0,0 +1,17 @@
package it.integry.integrywmsnative.view.dialogs.scan_art;
import dagger.Module;
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;
@Module(subcomponents = DialogScanArtComponent.class)
public class DialogScanArtModule {
@Provides
DialogScanArtViewModel providesDialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
return new DialogScanArtViewModel(barcodeRESTConsumer, colliMagazzinoRESTConsumer, articoloRESTConsumer);
}
}

View File

@ -0,0 +1,144 @@
package it.integry.integrywmsnative.view.dialogs.scan_art;
import org.jetbrains.annotations.NotNull;
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.NoResultFromBarcodeException;
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.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.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
public class DialogScanArtViewModel {
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
private Listener mListener;
public DialogScanArtViewModel(BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mArticoloRESTConsumer = articoloRESTConsumer;
}
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
} else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) {
//Cerco l'UL presente all'interno della posizione
// this.executeEtichettaPosizione(barcodeScanDTO.getStringValue(), onComplete);
} else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
} else if(UtilityBarcode.isEanPeso(barcodeScanDTO)){
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
} else {
this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
}
}
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
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(!UtilityString.isNullOrEmpty(barcodeProd)) {
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
this.executeEtichettaLU(ean128Model.Sscc, onComplete);
} else {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1);
}
this.loadArticolo(barcodeProd, ean128Model, onComplete);
}
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
this.sendError(new NoResultFromBarcodeException());
}
}, this::sendError);
}
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
try {
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128(), onComplete);
} catch (Exception ex) {
this.sendError(ex);
}
}
private void executeEtichettaLU(String SSCC, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
if (mtbColt.getSegno() != -1) {
onComplete.run(DialogConsts.Results.YES, null, null, mtbColt.getMtbColr());
} else this.sendError(new InvalidLUException());
} else {
this.sendError(new NoArtsFoundException());
}
}, this::sendError);
}
private void loadArticolo(@NotNull String barcodeProd, Ean128Model ean128Model, RunnableArgssss<DialogConsts.Results, MtbAart, Ean128Model, List<MtbColr>> onComplete) {
if(barcodeProd.length() == 14) {
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if(mtbAartList != null && mtbAartList.size() > 0) {
onComplete.run(DialogConsts.Results.YES, mtbAartList.get(0), ean128Model, null);
} else {
this.sendError(new NoResultFromBarcodeException());
}
}, this::sendError);
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public void setListener(Listener listener) {
this.mListener = listener;
}
public interface Listener {
void onError(Exception ex);
}
}