Completato picking Extra-Items da altre UL.
This commit is contained in:
parent
766ae1ae01
commit
99aac144f5
@ -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();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
@ -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() {
|
||||||
|
|||||||
@ -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(),
|
||||||
|
|||||||
@ -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();
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
|||||||
@ -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);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user