Completata rettifica giacenze

This commit is contained in:
Gius95
2018-12-05 18:45:11 +01:00
parent 7d1d01f006
commit 7c394d3d78
27 changed files with 1653 additions and 171 deletions

View File

@@ -32,12 +32,7 @@ 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());
.setGestione(GestioneEnum.LAVORAZIONE);
mtbColtToCreate
.setOperation(CommonModelConsts.OPERATION.INSERT);
@@ -60,12 +55,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
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());
.setGestione(gestione);
Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO);
String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE;

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.core.model;
public class MtbAartWithFornitore extends MtbAart {
private String codArtFor;
public String getCodArtFor() {
return codArtFor;
}
public MtbAartWithFornitore setCodArtFor(String codArtFor) {
this.codArtFor = codArtFor;
return this;
}
}

View File

@@ -0,0 +1,115 @@
package it.integry.integrywmsnative.core.model;
import java.util.Date;
import it.integry.integrywmsnative.core.settings.SettingsManager;
public class MtbCols extends EntityBase {
private String dataCollo;
private String gestione;
private Integer idRiga;
private Integer numCollo;
private String serCollo;
private String codMdep;
private String dataMove;
private String modificatoDa;
private String posizione;
private String causale;
public MtbCols() {
type = "mtb_cols";
setCodMdep(SettingsManager.i().userSession.depo.getCodMdep());
setModificatoDa(SettingsManager.i().user.fullname);
}
public String getDataCollo() {
return dataCollo;
}
public MtbCols setDataCollo(String dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public String getGestione() {
return gestione;
}
public MtbCols setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Integer getIdRiga() {
return idRiga;
}
public MtbCols setIdRiga(Integer idRiga) {
this.idRiga = idRiga;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public MtbCols setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public MtbCols setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public String getCodMdep() {
return codMdep;
}
public MtbCols setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getDataMove() {
return dataMove;
}
public MtbCols setDataMove(String dataMove) {
this.dataMove = dataMove;
return this;
}
public String getModificatoDa() {
return modificatoDa;
}
public MtbCols setModificatoDa(String modificatoDa) {
this.modificatoDa = modificatoDa;
return this;
}
public String getPosizione() {
return posizione;
}
public MtbCols setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public String getCausale() {
return causale;
}
public MtbCols setCausale(String causale) {
this.causale = causale;
return this;
}
}

View File

@@ -14,6 +14,7 @@ import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
@@ -56,6 +57,8 @@ public class MtbColt extends EntityBase implements Parcelable {
private BigDecimal larghezzaCm;
private BigDecimal altezzaCm;
public List<MtbCols> mtbCols;
private Boolean disablePrint;
protected MtbColt(Parcel in) {
@@ -285,6 +288,12 @@ public class MtbColt extends EntityBase implements Parcelable {
public MtbColt(){
type = "mtb_colt";
setDataCollo(new Date());
setSerCollo("/");
setCodMdep(SettingsManager.i().userSession.depo.getCodMdep());
setPreparatoDa(SettingsManager.i().user.fullname);
setOraInizPrep(new Date());
setCodAnag(SettingsManager.iDB().getDefaultCodAnag());
}
@@ -638,8 +647,18 @@ public class MtbColt extends EntityBase implements Parcelable {
return this;
}
public List<MtbCols> getMtbCols() {
return mtbCols;
}
public MtbColt setMtbCols(List<MtbCols> mtbCols) {
this.mtbCols = mtbCols;
return this;
}
public Boolean getDisablePrint() {
return disablePrint;
return disablePrint == null ? false : disablePrint;
}
public MtbColt setDisablePrint(Boolean disablePrint) {

View File

@@ -20,7 +20,7 @@ public class ReportManager {
break;
case LAVORAZIONE:
onFailed.run(new Exception("Etichetta non definita"));
onComplete.run("EtichettaInventario");
break;
case VENDITA:

View File

@@ -12,6 +12,7 @@ public class DBSettingsModel {
private boolean enableCheckPartitaMagCheckPickingV;
private boolean flagMultiClienteOrdV;
private String defaultCodAnag;
private String defaultCausaleRettificaGiacenze;
public List<String> getAvailableProfiles() {
return availableProfiles;
@@ -55,4 +56,13 @@ public class DBSettingsModel {
this.defaultCodAnag = defaultCodAnag;
return this;
}
public String getDefaultCausaleRettificaGiacenze() {
return defaultCausaleRettificaGiacenze;
}
public DBSettingsModel setDefaultCausaleRettificaGiacenze(String defaultCausaleRettificaGiacenze) {
this.defaultCausaleRettificaGiacenze = defaultCausaleRettificaGiacenze;
return this;
}
}

View File

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

View File

@@ -383,14 +383,10 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
if(defaultPosAccettazioneDTO != null && !UtilityString.isNullOrEmpty(defaultPosAccettazioneDTO.value)) defaultPosAccettazione = defaultPosAccettazioneDTO.value;
MtbColt mtbColt = new MtbColt();
mtbColt .setDataCollo(new Date())
.setGestione(GestioneEnum.ACQUISTO)
.setCodMdep(SettingsManager.i().userSession.depo.getCodMdep())
mtbColt .setGestione(GestioneEnum.ACQUISTO)
.setPreparatoDa(SettingsManager.i().user.fullname)
.setOraInizPrep(new Date())
.setAnnotazioni(noteString)
.setPosizione(defaultPosAccettazione)
.setSerCollo("/")
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
if(customNumCollo != null) {

View File

@@ -69,9 +69,6 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
mAdapter = new ContenutoBancaleListAdapter(mContext, mtbColt.get().getMtbColr(), this);
mContext.bindings.contenutoBancaleMainList.setAdapter(mAdapter);
// mContext.bindings.waterfallToolbar.setRecyclerView(mContext.bindings.contenutoBancaleMainList);
}

View File

@@ -12,7 +12,10 @@ import android.view.ViewGroup;
import butterknife.ButterKnife;
import it.integry.integrywmsnative.MainActivity;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding;
import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper;
@@ -26,6 +29,8 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
private RettificaGiacenzeViewModel mRettificaGiacenzeViewModel = null;
private int barcodeScannerIstanceID = -1;
public RettificaGiacenzeFragment() {
// Required empty public constructor
}
@@ -48,7 +53,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_rettifica_giacenze, container, false);
mRettificaGiacenzeViewModel = new RettificaGiacenzeViewModel();
mBinding.setView(this);
mBinding.setViewmodel(mRettificaGiacenzeViewModel);
@@ -62,6 +66,10 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
mHelper = new RettificaGiacenzeHelper(getActivity());
mRettificaGiacenzeViewModel.init(getActivity(), mBinding, mHelper);
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(mRettificaGiacenzeViewModel.onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
mHelper.loadListaFornitori(listaFornitori -> {
mRettificaGiacenzeViewModel.setupSearchFornitori(listaFornitori);
});
@@ -78,25 +86,19 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
setUIToIntArt();
});
DialogScanOrCreateLU.makeBase(getActivity(), mtbColt -> {
if(mtbColt == null) {
((MainActivity)getActivity()).popToMain();
} else {
mRettificaGiacenzeViewModel.setMtbColt(mtbColt);
}
}).show();
mRettificaGiacenzeViewModel.openLU();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onDetach() {
mRettificaGiacenzeViewModel.closeLU(false);
BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onDetach();
}

View File

@@ -13,6 +13,8 @@ import java.util.List;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
@@ -50,17 +52,17 @@ public class RettificaGiacenzeHelper {
});
}
public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<ArrayList<ArticoloFornitoreDTO>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT mtb_aart.cod_mart, mtb_aart.descrizione_estesa, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart " +
public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<ArrayList<MtbAartWithFornitore>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart " +
" WHERE cod_alis = " + UtilityDB.valueToString(codAlis) +
" AND mtb_lisa.cod_mart = mtb_aart.cod_mart " +
" AND (mtb_aart.descrizione_estesa LIKE '%" + codArtForOrDescr +"%' OR cod_art_for LIKE '%" + codArtForOrDescr + "%') " +
" ORDER BY mtb_aart.descrizione_estesa";
Type typeOfObjectsList = new TypeToken<ArrayList<ArticoloFornitoreDTO>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<ArticoloFornitoreDTO>>() {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAartWithFornitore>>() {
@Override
public void onSuccess(ArrayList<ArticoloFornitoreDTO> value) {
public void onSuccess(ArrayList<MtbAartWithFornitore> value) {
if(onComplete != null) onComplete.run(value);
}
@@ -70,4 +72,30 @@ public class RettificaGiacenzeHelper {
}
});
}
public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs<ArrayList<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT DISTINCT mtb_aart.* " +
"FROM mtb_aart, mvw_barcode " +
"WHERE (case when len(mvw_barcode.cod_barre) > 13 " +
"then mvw_barcode.cod_barre " +
"else Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre end LIKE '%' + case when len('" + codMartOrBarcodeOrDescr + "') > 13 then '" + codMartOrBarcodeOrDescr + "' else Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" +
"end OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%') AND mtb_aart.cod_mart = mvw_barcode.cod_mart";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAart>>() {
@Override
public void onSuccess(ArrayList<MtbAart> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@@ -0,0 +1,122 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableList;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.databinding.ListaRettificaGiacenzeModelBinding;
public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter<RettificaGiacenzeMainListAdapter.ViewHolder> {
protected Context mContext;
protected ObservableArrayList<MtbColr> mDataset;
private View mEmptyView;
private IRecyclerItemClicked<MtbColr> mOnItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder {
protected ListaRettificaGiacenzeModelBinding mViewDataBinding;
public ViewHolder(ListaRettificaGiacenzeModelBinding v) {
super(v.getRoot());
mViewDataBinding = v;
}
public void bind(MtbColr mtbColr) {
mViewDataBinding.setMtbColr(mtbColr);
mViewDataBinding.executePendingBindings();
}
}
public RettificaGiacenzeMainListAdapter(Context context, ObservableArrayList<MtbColr> myDataset, IRecyclerItemClicked<MtbColr> onItemClickListener, View emptView) {
mContext = context;
mDataset = myDataset;
mEmptyView = emptView;
mOnItemClickListener = onItemClickListener;
myDataset.addOnListChangedCallback(onListChangedCallback);
checkIfEmpty();
}
@Override
public RettificaGiacenzeMainListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
ListaRettificaGiacenzeModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_rettifica_giacenze_model, parent, false);
return new ViewHolder(viewDataBinding);
}
@Override
public void onBindViewHolder(RettificaGiacenzeMainListAdapter.ViewHolder holder, int position) {
MtbColr item = mDataset.get(position);
holder.bind(item);
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(item, position);
}
});
}
@Override
public void onViewRecycled(RettificaGiacenzeMainListAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
}
@Override
public int getItemCount() {
return mDataset.size();
}
private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback<ObservableList<MtbColr>>(){
@Override
public void onChanged(ObservableList<MtbColr> sender) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeChanged(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeInserted(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeMoved(ObservableList<MtbColr> sender, int fromPosition, int toPosition, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeRemoved(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
};
void checkIfEmpty() {
if (mEmptyView != null) {
final boolean emptyViewVisible = getItemCount() == 0;
mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
}
}
}

View File

@@ -1,38 +1,81 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.res.Resources;
import android.databinding.ObservableArrayList;
import android.databinding.ObservableField;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.TextInputLayout;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.text.SpannableString;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.MainActivity;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.CommonRESTException;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbCols;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.AutoCompleteFornitoreAdapter;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.RettificaGiacenzeMainListAdapter;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.ui.StatusBarAlert;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArt;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeType;
import kotlin.NotImplementedError;
public class RettificaGiacenzeViewModel {
public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr> {
private Context mContext;
private Activity mContext;
private FragmentMainRettificaGiacenzeBinding mBinding;
private BottomSheetBehavior mBottomSheetBehavior;
private RettificaGiacenzeHelper mHelper;
private RettificaGiacenzeMainListAdapter mAdapter;
private ObservableField<MtbColt> mtbColt = new ObservableField<>();
public ObservableField<MtbColt> mtbColt = new ObservableField<>();
public BindableBoolean isFabVisible = new BindableBoolean();
public BindableBoolean isMtbColtLoaded = new BindableBoolean();
public void init(Context context, FragmentMainRettificaGiacenzeBinding binding, RettificaGiacenzeHelper helper) {
public void init(Activity context, FragmentMainRettificaGiacenzeBinding binding, RettificaGiacenzeHelper helper) {
mContext = context;
mBinding = binding;
mHelper = helper;
@@ -40,8 +83,86 @@ public class RettificaGiacenzeViewModel {
public void setMtbColt(MtbColt mtbColt) {
this.mtbColt.set(mtbColt);
isFabVisible.set(mtbColt != null);
isMtbColtLoaded.set(mtbColt != null);
if(this.mtbColt.get().getMtbColr() == null) this.mtbColt.get().setMtbColr(new ObservableArrayList<>());
initRecyclerView();
initBottomSheetActions();
}
public void resetMtbColt(boolean openNew) {
this.mtbColt.set(null);
isFabVisible.set(false);
isMtbColtLoaded.set(false);
mBinding.rettificaGiacenzeMainList.setAdapter(null);
if(openNew) openLU();
}
private void initRecyclerView() {
mBinding.rettificaGiacenzeMainList.setNestedScrollingEnabled(false);
mBinding.rettificaGiacenzeMainList.setHasFixedSize(true);
mBinding.rettificaGiacenzeMainList.setLayoutManager(new LinearLayoutManager(mContext));
DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator);
mAdapter = new RettificaGiacenzeMainListAdapter(mContext, mtbColt.get().getMtbColr(), this, mBinding.rettificaGiacenzeEmptyView);
mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter);
}
private void initBottomSheetActions() {
mBinding.bg.setOnClickListener(v -> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED));
mBottomSheetBehavior = BottomSheetBehavior.from(mBinding.bottomSheetActions);
mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_COLLAPSED)
mBinding.bg.setVisibility(View.GONE);
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
mBinding.bg.setVisibility(View.VISIBLE);
mBinding.bg.setAlpha(slideOffset);
}
});
}
public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
if(data.getType() == BarcodeType.EAN8 || data.getType() == BarcodeType.EAN13 || data.getType() == BarcodeType.UPCA){
searchArtInt(data.getStringValue());
} else {
BarcodeManager.enable();
}
/*
if(UtilityBarcode.isEtichettaAnonima(data) && !thereIsAnOpenedUL()){
this.executeEtichettaAnonima(data, progressDialog);
} else if(data.getType() == BarcodeType.EAN128) {
this.executeEtichettaEan128(data, progressDialog);
} else if(UtilityBarcode.isEanPeso(data)){
this.executeEtichettaEanPeso(data, progressDialog);
} else {
this.loadArticolo(data.getStringValue(), null, progressDialog);
}
*/
};
public void setupSearchFornitori(ArrayList<FornitoreDTO> listaFornitori) {
AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(mContext, listaFornitori);
mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter);
@@ -49,8 +170,14 @@ public class RettificaGiacenzeViewModel {
mBinding.inputCodArtDescrForn.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
resetAllError();
if(UtilityString.isNullOrEmpty(mBinding.autoCompleteFornitori.getText().toString())) {
showNoFornSelected();
setError(mBinding.autoCompleteFornitoriLayout, mContext.getResources().getText(R.string.error).toString());
return true;
}
if(UtilityString.isNullOrEmpty(mBinding.inputCodArtDescrForn.getText().toString())) {
setError(mBinding.layoutCodArtDescrForn, mContext.getResources().getText(R.string.error).toString());
return true;
}
@@ -61,12 +188,45 @@ public class RettificaGiacenzeViewModel {
}
return false;
});
mBinding.inputCodArtDescrInt.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
resetAllError();
if(UtilityString.isNullOrEmpty(mBinding.inputCodArtDescrInt.getText().toString())) {
setError(mBinding.layoutCodArtDescrInt, mContext.getResources().getText(R.string.error).toString());
return true;
}
searchArtInt(mBinding.inputCodArtDescrInt.getText().toString());
return true;
}
return false;
});
}
private void showNoFornSelected() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_supplier_selected)),
null, null).show();
private void setError(TextInputLayout textInputLayout, String message){
textInputLayout.setErrorEnabled(true);
textInputLayout.setError(message);
}
private void resetAllError() {
resetError(mBinding.autoCompleteFornitoriLayout);
resetError(mBinding.layoutCodArtDescrForn);
resetError(mBinding.layoutCodArtDescrInt);
}
private void resetTexts() {
//mBinding.autoCompleteFornitori.setText("");
mBinding.inputCodArtDescrForn.setText("");
mBinding.inputCodArtDescrInt.setText("");
}
private void resetError(TextInputLayout textInputLayout) {
textInputLayout.setErrorEnabled(false);
textInputLayout.setError(null);
}
private void searchArtFor(String codAlis, String queryText) {
@@ -75,7 +235,342 @@ public class RettificaGiacenzeViewModel {
mHelper.searchArtForn(codAlis, queryText, listaArts -> {
progressDialog.dismiss();
List<MtbAart> mtbAarts = Stream.of(listaArts).map(x -> (MtbAart) x).toList();
dispatchArtsList(mtbAarts);
}, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog));
}
private void searchArtInt(String queryText) {
final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
progressDialog.show();
mHelper.searchArtInt(queryText, listaArts -> {
progressDialog.dismiss();
BarcodeManager.enable();
dispatchArtsList(listaArts);
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
}
private void dispatchArtsList(List<MtbAart> articoloFornitoreDTOS){
if(articoloFornitoreDTOS != null){
if(articoloFornitoreDTOS.size() == 0) {
showNoArtsFound();
} else if(articoloFornitoreDTOS.size() == 1) {
dispatchArt(articoloFornitoreDTOS.get(0));
} else {
DialogChooseArtFromListaArt.makeBase(mContext, articoloFornitoreDTOS, this::dispatchArt).show();
}
} else {
showNoArtsFound();
}
}
private void showNoArtsFound() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_items_found_message)),
null, null).show();
}
private void dispatchArt(MtbAart mtbAart){
DialogInputQuantity.DTO qtaDto = new DialogInputQuantity.DTO();
qtaDto.setMtbAart(mtbAart);
qtaDto.setQtaCnf(mtbAart.qtaCnf);
qtaDto.setNumCnf(1);
qtaDto.setQtaTot(mtbAart.qtaCnf);
qtaDto.setQtaDaEvadere(new BigDecimal(-1));
qtaDto.setCanPartitaMagBeChanged(true);
qtaDto.setCanDataScadBeChanged(true);
/*
if(ean128Model != null){
if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)){
qtaDto.partitaMag = ean128Model.BatchLot;
qtaDto.canPartitaMagBeChanged = false;
}
let dataScad = ean128Model.BestBefore || ean128Model.Expiry;
if(dataScad != null){
qtaDto.shouldAskDataScad = true;
qtaDto.dataScad = moment(dataScad, "DD/MM/YYYY HH:mm:ss").format("YYYY-MM-DD");
qtaDto.canDataScadBeChanged = false;
}
if(ean128Model.NetWeightKg != null) {
qtaDto.qtaTot = ean128Model.NetWeightKg;
qtaDto.qtaPerCnf = ean128Model.NetWeightKg;
qtaDto.numDiCnf = 1;
}
if(ean128Model.Count != null){
qtaDto.qtaTot = ean128Model.Count;
qtaDto.numDiCnf = qtaDto.qtaTot / qtaDto.qtaPerCnf;
}
}
*/
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
onPostDispatch(mtbAart, quantityDTO);
}).show();
}
private void onPostDispatch(MtbAart mtbAart, QuantityDTO quantityDTO) {
final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting),
mContext.getText(R.string.loading) + " ...", true);
final MtbColr mtbColr = new MtbColr()
.setCodMart(mtbAart.codMart)
.setPartitaMag(quantityDTO.batchLot.get())
.setDataScadPartita(quantityDTO.expireDate)
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
.setDescrizione(mtbAart.descrizioneEstesa);
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
MtbColt cloneMtbColt = (MtbColt) mtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(new ObservableArrayList());
cloneMtbColt.getMtbColr().add(mtbColr);
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
mtbColr
.setDataCollo(value.getDataColloS())
.setNumCollo(value.getNumCollo())
.setGestione(value.getGestione())
.setSerCollo(value.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(mtbAart.untMis)
.setMtbAart(mtbAart);
mtbColt.get().getMtbColr().add(mtbColr);
new StatusBarAlert.Builder(mContext)
.autoHide(true)
.withDuration(2500)
.showProgress(false)
.withText(R.string.data_saved)
.withAlertColor(R.color.mainGreen)
.build();
resetTexts();
progress.dismiss();
}
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mContext, ex, progress);
}
});
}
@Override
public void onItemClick(MtbColr item, int position) {
/*
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
MtbColr clickedItem = mtbColt.get().getMtbColr().get(position);
mBinding.bottomSheetActionsTitle.setText(clickedItem.getDescrizione());
mBinding.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart());
mBinding.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(position));
mBinding.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(position));
mBinding.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getUntMis());
*/
}
public void openLU() {
DialogScanOrCreateLU.makeBase(mContext, mtbColt -> {
if(mtbColt == null) {
((MainActivity)mContext).popToMain();
} else {
setMtbColt(mtbColt);
}
}).show();
}
public boolean thereIsAnOpenedUL() {
return mtbColt.get() != null;
}
public boolean thereIsAnyRowInUL() {
return mtbColt.get() != null &&
mtbColt.get().getMtbColr() != null &&
mtbColt.get().getMtbColr().size() > 0;
}
public void closeLU(boolean openNewOne) {
final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting),
mContext.getText(R.string.loading) + " ...", true);
if(thereIsAnyRowInUL()){
if(!UtilityString.isNullOrEmpty(SettingsManager.iDB().getDefaultCausaleRettificaGiacenze())) {
progress.show();
saveCausaleRettificaGiacenze(progress, () -> {
if(!mtbColt.get().getDisablePrint()){
printCollo(progress);
} else {
progress.dismiss();
resetMtbColt(openNewOne);
}
});
} else {
if(!mtbColt.get().getDisablePrint()){
progress.show();
printCollo(progress);
} else {
resetMtbColt(openNewOne);
}
}
} else {
progress.show();
ColliMagazzinoRESTConsumer.deleteCollo(mtbColt.get(), () -> {
progress.dismiss();
resetMtbColt(openNewOne);
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
}
}
private void saveCausaleRettificaGiacenze(ProgressDialog progress, Runnable onComplete) {
final MtbCols mtbCols = new MtbCols()
.setCausale(SettingsManager.iDB().getDefaultCausaleRettificaGiacenze());
mtbCols.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
MtbColt cloneMtbColt = (MtbColt) mtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbCols(new ArrayList<>());
cloneMtbColt.getMtbCols().add(mtbCols);
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
onComplete.run();
}
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mContext, ex, progress);
}
});
}
public void printCollo(ProgressDialog progress) {
this.showAskPrint(shouldPrint -> {
if(shouldPrint) {
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(List<String> value) {
if (value.size() > 0) {
try {
ReportManager.getRightReportNameByMtbColt(mtbColt.get(), reportName -> {
PrinterRESTConsumer.printCollo(value.get(0),
mtbColt.get(),
1,
reportName,
() -> {
progress.dismiss();
resetMtbColt(true);
Resources res = mContext.getResources();
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageHelper.makeSuccessDialog(mContext, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
}, ex -> {
UtilityLogger.errorMe(ex);
progress.dismiss();
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
showPrintErrorDialog(errorMessage);
});
}, ex -> {
UtilityLogger.errorMe(ex);
progress.dismiss();
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
showPrintErrorDialog(errorMessage);
});
} catch (Exception ex) {
progress.dismiss();
UtilityLogger.errorMe(ex);
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
showPrintErrorDialog(errorMessage);
}
} else {
progress.dismiss();
String errorMessage = "Nessuna stampante configurata";
showPrintErrorDialog(errorMessage);
}
}
@Override
public void onFailed(Exception ex) {
progress.dismiss();
UtilityLogger.errorMe(ex);
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
showPrintErrorDialog(errorMessage);
}
});
} else {
resetMtbColt(true);
}
});
}
private void showAskPrint(RunnableArgs<Boolean> onComplete) {
DialogSimpleMessageHelper.makeInfoDialog(
mContext,
mContext.getResources().getString(R.string.action_print_ul),
new SpannableString(mContext.getResources().getString(R.string.ask_print_message)),
null,
() -> onComplete.run(true),
() -> onComplete.run(false)).show();
}
private void showPrintErrorDialog(String message) {
DialogSimpleMessageHelper.makeErrorDialog(
mContext,
new SpannableString(message),
null,
null,
R.string.button_ignore_print,
() -> resetMtbColt(true)).show();
}
}

View File

@@ -584,12 +584,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
progress.show();
MtbColt mtbColt = new MtbColt();
mtbColt .setDataCollo(new Date())
.setGestione(defaultGestioneOfUL)
mtbColt .setGestione(defaultGestioneOfUL)
.setSegno(-1)
.setCodMdep(SettingsManager.i().userSession.depo.getCodMdep())
.setPreparatoDa(SettingsManager.i().user.fullname)
.setOraInizPrep(new Date())
.setRifOrd(defaultRifOrdOfUL)
.setNumOrd(defaultNumOrdOfUL)
.setDataOrdD(defaultDataOrdOfUL)

View File

@@ -138,6 +138,17 @@ public class DialogSimpleMessageHelper {
}
public static AlertDialog makeInfoDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, Runnable onNegativeClick){
return makeBase(TYPE.INFO,
mContext,
titleText,
messageText,
hashmapContent,
onPositiveClick,
onNegativeClick, -1, null);
}
public static AlertDialog makeSuccessDialog(Context mContext, String titleText, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
return makeBase(TYPE.SUCCESS,
mContext,
@@ -174,7 +185,7 @@ public class DialogSimpleMessageHelper {
return makeBase(TYPE.ERROR,
mContext,
mContext.getText(R.string.error).toString(),
mContext.getText(R.string.ops).toString(),
messageText,
hashmapContent,
onPositiveClick,
@@ -185,7 +196,7 @@ public class DialogSimpleMessageHelper {
return makeBase(TYPE.ERROR,
mContext,
mContext.getText(R.string.error).toString(),
mContext.getText(R.string.ops).toString(),
messageText,
hashmapContent,
onPositiveClick,

View File

@@ -0,0 +1,74 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
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.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
public class DialogChooseArtFromListaArt {
private static Context currentContext;
private static AlertDialog currentAlert;
private static DialogChooseArtFromListaArtAdapter currentAdapter;
private static RunnableArgs<MtbAart> mOnItemChoosed;
public static AlertDialog makeBase(final Context context, List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
currentContext = context;
mOnItemChoosed = onItemChoosed;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
DialogChooseArtFromListaArtBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_art_from_lista_art, null, false);
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setView(binding.getRoot())
.setPositiveButton(context.getText(R.string.confirm), null)
.setNegativeButton(context.getText(R.string.abort), null);
currentAlert = alertDialog.create();
currentAlert.setCanceledOnTouchOutside(false);
initRecyclerView(binding, listaArts);
return currentAlert;
}
private static void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbAart> 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 DialogChooseArtFromListaArtAdapter(currentContext, dataset, onItemClicked);
binding.dialogChooseArtFromListaArtMainList.setAdapter(currentAdapter);
}
private static IRecyclerItemClicked<MtbAart> onItemClicked = (item, position) -> {
if(mOnItemChoosed != null) {
mOnItemChoosed.run(item);
}
currentAlert.dismiss();
};
}

View File

@@ -0,0 +1,77 @@
package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
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.MtbAartWithFornitore;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtItemModelBinding;
public class DialogChooseArtFromListaArtAdapter extends RecyclerView.Adapter<DialogChooseArtFromListaArtAdapter.ViewHolder> {
protected Context mContext;
private List<MtbAart> mDataset;
private IRecyclerItemClicked<MtbAart> 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 DialogChooseArtFromListaArtAdapter(Context context, List<MtbAart> myDataset, IRecyclerItemClicked<MtbAart> onItemClickListener) {
mContext = context;
mDataset = myDataset;
mOnItemClickListener = onItemClickListener;
}
@Override
public DialogChooseArtFromListaArtAdapter.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(DialogChooseArtFromListaArtAdapter.ViewHolder holder, int position) {
MtbAart item = mDataset.get(position);
holder.bind(item);
holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(item, position);
}
});
}
@Override
public void onViewRecycled(DialogChooseArtFromListaArtAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
}
@Override
public int getItemCount() {
return mDataset.size();
}
}

View File

@@ -17,6 +17,7 @@ import android.text.Html;
import android.text.SpannableString;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
@@ -199,22 +200,25 @@ public class DialogInputQuantity {
private static AlertDialog currentAlert;
private static Context currentContext;
private static DialogInputQuantityArticoloBinding currentBinding;
private static MtbAart currentMtbAart;
private static QuantityDTO currentQuantityDto;
private static DTO currentDTO;
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
currentContext = context;
currentMtbAart = dto.getMtbAart();
currentDTO = dto;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
currentBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_articolo, null, false);
DialogInputQuantityArticoloBinding contentView = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_articolo, null, false);
final TextInputLayout txlInputBatchLot = currentBinding.inputPartitaMag;
final TextInputLayout txlInputBatchLot = contentView.inputPartitaMag;
final TextInputLayout txlInputNumDiCnf = contentView.inputNumCnf;
final TextInputLayout txlInputQtaPerCnf = contentView.inputQtaCnf;
final TextInputLayout txlInputQtaTot = contentView.inputQtaTot;
final TextInputLayout txlInputNumDiCnf = currentBinding.inputNumCnf;
final TextInputLayout txlInputQtaPerCnf = currentBinding.inputQtaCnf;
final TextInputLayout txlInputQtaTot = currentBinding.inputQtaTot;
txlInputNumDiCnf.getEditText().setSelectAllOnFocus(true);
txlInputQtaPerCnf.getEditText().setSelectAllOnFocus(true);
@@ -230,11 +234,11 @@ public class DialogInputQuantity {
setupQuantityListener(currentQuantityDto, txlInputNumDiCnf, txlInputQtaPerCnf, txlInputQtaTot);
contentView.setViewmodel(dto);
contentView.setQuantityViewModel(currentQuantityDto);
currentBinding.setViewmodel(dto);
currentBinding.setQuantityViewModel(currentQuantityDto);
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setView(contentView.getRoot())
.setView(currentBinding.getRoot())
.setPositiveButton(context.getText(R.string.confirm), null)
.setNegativeButton(context.getText(R.string.abort), null);
@@ -265,7 +269,7 @@ public class DialogInputQuantity {
});
initDatePicker(context, currentQuantityDto, contentView.getRoot().findViewById(R.id.input_data_scad));
initDatePicker(context, currentQuantityDto, currentBinding.getRoot().findViewById(R.id.input_data_scad));
setupBarcode(context);
@@ -278,7 +282,10 @@ public class DialogInputQuantity {
if(dto.getMaxQta() != null) quantityDTO.maxQta = dto.getMaxQta().floatValue();
float qtaDaEvadere = dto.qtaDaEvadere != null ? dto.qtaDaEvadere.floatValue() : 0f;
if (qtaDaEvadere < 0) qtaDaEvadere = 0;
if (qtaDaEvadere < 0) {
currentBinding.layoutQtaDaEvadere.setVisibility(View.GONE);
qtaDaEvadere = 0;
}
quantityDTO.qtaEvasa.set(dto.qtaEvasa != null ? dto.qtaEvasa.floatValue() : null);
if(qtaDaEvadere > 0) quantityDTO.qtaDaEvadere.set(qtaDaEvadere);
@@ -592,7 +599,11 @@ public class DialogInputQuantity {
private static void onConfirm(Context context, QuantityDTO quantityDTO, ISingleValueOperationCallback<QuantityDTO> dialogCallback){
if(quantityDTO.shouldAskDataScad.get() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){
if(currentDTO.mtbAart.isFlagTracciabilita() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){
showBatchLotErrorPrompt(context);
} else if(quantityDTO.shouldAskDataScad.get() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){
showBatchLotErrorPrompt(context);