Implementata creazione del doppio collo A / L in Accettazione.

Iniziata implementazione del tasto "Aggiungi merce extra" in Spedizione.
This commit is contained in:
Giuseppe Scorrano 2019-06-13 12:21:33 +02:00
parent 787d12ff9b
commit b4b8fac725
21 changed files with 674 additions and 93 deletions

View File

@ -94,6 +94,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
.setSegno(segno) .setSegno(segno)
.setGestione(GestioneEnum.LAVORAZIONE); .setGestione(GestioneEnum.LAVORAZIONE);
mtbColtToCreate.initDefaultFields();
mtbColtToCreate mtbColtToCreate
.setOperation(CommonModelConsts.OPERATION.INSERT); .setOperation(CommonModelConsts.OPERATION.INSERT);
@ -166,6 +168,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
MtbColt mtbColtToCreate = new MtbColt() MtbColt mtbColtToCreate = new MtbColt()
.setGestione(gestione); .setGestione(gestione);
mtbColtToCreate.initDefaultFields();
Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcode); Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcode);
String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE; String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE;

View File

@ -248,7 +248,23 @@ public class Converters {
view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE); view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE);
} }
}); });
view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE);
}
@BindingAdapter("app:visibility")
public static void bindView(View view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
}
bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE);
}
});
view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE); view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE);
} }

View File

@ -99,6 +99,9 @@ public class MtbColt extends EntityBase {
type = "mtb_colt"; type = "mtb_colt";
setDataCollo(new Date()); setDataCollo(new Date());
setSerCollo("/"); setSerCollo("/");
}
public void initDefaultFields() {
setCodMdep(SettingsManager.i().userSession.depo.getCodMdep()); setCodMdep(SettingsManager.i().userSession.depo.getCodMdep());
setPreparatoDa(SettingsManager.i().user.fullname); setPreparatoDa(SettingsManager.i().user.fullname);
setOraInizPrep(new Date()); setOraInizPrep(new Date());

View File

@ -23,6 +23,8 @@ public class DBSettingsModel {
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione; private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
private boolean flagAskClienteInPickingLibero; private boolean flagAskClienteInPickingLibero;
private boolean flagCanAddExtraItemSpedizione;
public List<String> getAvailableProfiles() { public List<String> getAvailableProfiles() {
return availableProfiles; return availableProfiles;
} }
@ -109,4 +111,13 @@ public class DBSettingsModel {
this.flagAskClienteInPickingLibero = flagAskClienteInPickingLibero; this.flagAskClienteInPickingLibero = flagAskClienteInPickingLibero;
return this; return this;
} }
public boolean isFlagCanAddExtraItemSpedizione() {
return flagCanAddExtraItemSpedizione;
}
public DBSettingsModel setFlagCanAddExtraItemSpedizione(boolean flagCanAddExtraItemSpedizione) {
this.flagCanAddExtraItemSpedizione = flagCanAddExtraItemSpedizione;
return this;
}
} }

View File

@ -192,7 +192,14 @@ public class SettingsManager {
GestSetupRESTConsumer.getBooleanValue("PICKING", "PICKING_LIBERO", "FLAG_ASK_CLIENTE", valueAskClientePickingLibero -> { GestSetupRESTConsumer.getBooleanValue("PICKING", "PICKING_LIBERO", "FLAG_ASK_CLIENTE", valueAskClientePickingLibero -> {
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(valueAskClientePickingLibero); dbSettingsModelIstance.setFlagAskClienteInPickingLibero(valueAskClientePickingLibero);
if(onComplete != null) onComplete.run(); GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", valueCanAddExtraItemSpedizione -> {
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(valueCanAddExtraItemSpedizione);
if(onComplete != null) onComplete.run();
}, ex -> {
if(onFailed != null) onFailed.run(ex);
});
}, ex -> { }, ex -> {
if(onFailed != null) onFailed.run(ex); if(onFailed != null) onFailed.run(ex);

View File

@ -76,6 +76,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
private GestioneEnum defaultGestioneOfUL = null; private GestioneEnum defaultGestioneOfUL = null;
private MtbColt mtbColtOfAccettazione = null;
public AccettazioneOrdineAccettazioneInevasoViewModel(AccettazioneOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List<OrdineAccettazioneDTO> orders) { public AccettazioneOrdineAccettazioneInevasoViewModel(AccettazioneOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List<OrdineAccettazioneDTO> orders) {
this.mActivity = activity; this.mActivity = activity;
this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel; this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel;
@ -90,8 +92,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
private void init(){ private void init(){
mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this); mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback((deletedItem) -> this.refreshOrderBy(false)); mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onRowDeleted);
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback((originalItem, editedItem) -> this.refreshOrderBy(false)); mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onRowEdited);
groupedOrdini = new ArrayList<>(); groupedOrdini = new ArrayList<>();
for (OrdineAccettazioneDTO ordine : mOrders){ for (OrdineAccettazioneDTO ordine : mOrders){
@ -167,7 +169,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
} }
try { try {
List<MtbColr> mtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get() != null ? mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() : null; List<MtbColr> mtbColrs = getColloRef() != null ? getColloRef().getMtbColr() : null;
helper.updateListModel(currentOrderBy, groupedRighe, mtbColrs); helper.updateListModel(currentOrderBy, groupedRighe, mtbColrs);
} catch (Exception e) { } catch (Exception e) {
@ -421,22 +423,43 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
String defaultPosAccettazione = ""; String defaultPosAccettazione = "";
if(defaultPosAccettazioneDTO != null && !UtilityString.isNullOrEmpty(defaultPosAccettazioneDTO.value)) defaultPosAccettazione = defaultPosAccettazioneDTO.value; if(defaultPosAccettazioneDTO != null && !UtilityString.isNullOrEmpty(defaultPosAccettazioneDTO.value)) defaultPosAccettazione = defaultPosAccettazioneDTO.value;
MtbColt mtbColt = new MtbColt();
mtbColt MtbColt mtbColtOfBarode = new MtbColt();
.setGestione(defaultGestioneOfUL) mtbColtOfBarode.initDefaultFields();
.setPreparatoDa(SettingsManager.i().user.fullname) mtbColtOfBarode
.setGestione(GestioneEnum.LAVORAZIONE)
.setAnnotazioni(noteString) .setAnnotazioni(noteString)
.setPosizione(defaultPosAccettazione) .setPosizione(defaultPosAccettazione)
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
if(customNumCollo != null) { if(customNumCollo != null) {
mtbColt.setNumCollo(customNumCollo); mtbColtOfBarode.setNumCollo(customNumCollo);
} }
if(!UtilityString.isNullOrEmpty(customSerCollo)) { if(!UtilityString.isNullOrEmpty(customSerCollo)) {
mtbColt.setSerCollo(customSerCollo); mtbColtOfBarode.setSerCollo(customSerCollo);
} }
MtbColt mtbColtAccettazione = null;
if(defaultGestioneOfUL == GestioneEnum.ACQUISTO){
mtbColtAccettazione = (MtbColt) mtbColtOfBarode.clone();
mtbColtAccettazione.setGestione(GestioneEnum.ACQUISTO);
mtbColtAccettazione
.setNumCollo(null)
.setSerCollo(null);
}
MtbColt mtbColtToAddRefs = mtbColtAccettazione != null ? mtbColtAccettazione : mtbColtOfBarode;
List<String> codAnags = List<String> codAnags =
stream(mOrders) stream(mOrders)
.select(c -> c.codAnag) .select(c -> c.codAnag)
@ -444,7 +467,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
.toList(); .toList();
if(codAnags != null && codAnags.size() == 1){ if(codAnags != null && codAnags.size() == 1){
mtbColt.setCodAnag(codAnags.get(0)); mtbColtToAddRefs.setCodAnag(codAnags.get(0));
} }
List<String> rifOrds = List<String> rifOrds =
@ -454,7 +477,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
.toList(); .toList();
if(rifOrds != null && rifOrds.size() == 1){ if(rifOrds != null && rifOrds.size() == 1){
mtbColt.setRifOrd(rifOrds.get(0)); mtbColtToAddRefs.setRifOrd(rifOrds.get(0));
} }
List<String> numDataOrds = List<String> numDataOrds =
@ -464,11 +487,11 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
.toList(); .toList();
if(numDataOrds != null && numDataOrds.size() == 1){ if(numDataOrds != null && numDataOrds.size() == 1){
mtbColt.setNumOrd(mOrders.get(0).numero); mtbColtToAddRefs.setNumOrd(mOrders.get(0).numero);
mtbColt.setDataOrd(mOrders.get(0).data); mtbColtToAddRefs.setDataOrd(mOrders.get(0).data);
try { try {
mtbColt.generaFiltroOrdine(); mtbColtToAddRefs.generaFiltroOrdine();
} catch (Exception ex) { } catch (Exception ex) {
DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(ex.getMessage()), null, null).show(); DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(ex.getMessage()), null, null).show();
return; return;
@ -476,7 +499,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
} }
ColliMagazzinoRESTConsumer.saveCollo(mtbColt, new ISimpleOperationCallback<MtbColt>() {
Runnable saveColloOfBarcode = () -> ColliMagazzinoRESTConsumer.saveCollo(mtbColtOfBarode, new ISimpleOperationCallback<MtbColt>() {
@Override @Override
public void onSuccess(MtbColt value) { public void onSuccess(MtbColt value) {
@ -510,6 +534,37 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
UtilityExceptions.defaultException(mActivity, ex, finalProgress); UtilityExceptions.defaultException(mActivity, ex, finalProgress);
} }
}); });
if(mtbColtAccettazione != null) {
ColliMagazzinoRESTConsumer.saveCollo(mtbColtAccettazione, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
value
.setDisablePrint(disablePrint)
.setMtbColr(new ObservableArrayList<>());
value.setMtbCols(null);
mtbColtOfAccettazione = value;
saveColloOfBarcode.run();
}
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, finalProgress);
}
});
} else {
saveColloOfBarcode.run();
}
}, ex -> UtilityExceptions.defaultException(mActivity, ex, finalProgress)); }, ex -> UtilityExceptions.defaultException(mActivity, ex, finalProgress));
@ -575,8 +630,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
private void updateDataFine(ProgressDialog progress, Runnable onComplete) { private void updateDataFine(ProgressDialog progress, Runnable onComplete) {
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); MtbColt cloneMtbColt = (MtbColt) getColloRef().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setOraFinePrep(new Date()); cloneMtbColt.setOraFinePrep(new Date());
@ -640,8 +695,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
UtilityExceptions.defaultException(mActivity, ex, progress); UtilityExceptions.defaultException(mActivity, ex, progress);
} }
} else { } else {
resetUL();
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
isFabVisible.set(true); isFabVisible.set(true);
progress.dismiss(); progress.dismiss();
@ -660,33 +714,44 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
private void deleteCollo(ProgressDialog progress, Runnable onComplete) { private void deleteCollo(ProgressDialog progress, Runnable onComplete) {
ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> {
mArticoliInColloBottomSheetViewModel.mtbColt.set(null); Runnable deleteCollo = () -> ColliMagazzinoRESTConsumer.deleteCollo(mtbColtOfAccettazione, () -> {
resetUL();
isFabVisible.set(true); isFabVisible.set(true);
progress.dismiss(); progress.dismiss();
if(onComplete != null) onComplete.run(); if(onComplete != null) onComplete.run();
}, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)); }, ex -> UtilityExceptions.defaultException(mActivity, ex, progress));
if(mtbColtOfAccettazione != null) {
ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> {
deleteCollo.run();
}, ex -> UtilityExceptions.defaultException(mActivity, ex, progress));
} else {
deleteCollo.run();
}
} }
public boolean thereIsAnOpenedUL() { public boolean thereIsAnOpenedUL() {
return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null; return getColloRef() != null;
} }
public boolean thereIsAnyRowInUL() { public boolean thereIsAnyRowInUL() {
return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null && return getColloRef() != null &&
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() != null && getColloRef().getMtbColr() != null &&
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().size() > 0; getColloRef().getMtbColr().size() > 0;
} }
private void postCloseOperations(Runnable onComplete) { private void postCloseOperations(Runnable onComplete) {
MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get(); MtbColt mtbColt = (MtbColt) mtbColtOfAccettazione.clone();
resetUL();
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
isFabVisible.set(true); isFabVisible.set(true);
if(mtbColt != null && mtbColt.getMtbColr() != null) { if(mtbColt != null && mtbColt.getMtbColr() != null) {
@ -721,9 +786,9 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
@Override @Override
public void onOrdineRowDispatch(final OrdineAccettazioneDTO.Riga item, Ean128Model ean128Model) { public void onOrdineRowDispatch(final OrdineAccettazioneDTO.Riga item, Ean128Model ean128Model) {
if(mArticoliInColloBottomSheetViewModel.mtbColt.get() != null){ if(getColloRef() != null){
List<MtbColr> currentMtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr(); List<MtbColr> currentMtbColrs = getColloRef().getMtbColr();
List<MtbColr> filteredMtbColrs = Stream.of(currentMtbColrs).filter( List<MtbColr> filteredMtbColrs = Stream.of(currentMtbColrs).filter(
x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.getCodMart()) && x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.getCodMart()) &&
@ -831,34 +896,162 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.setMtbColr(new ObservableArrayList());
cloneMtbColt.getMtbColr().add(mtbColr); cloneMtbColt.getMtbColr().add(mtbColr);
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() { Runnable saveRiga = () -> {
@Override
public void onSuccess(MtbColt value) {
if(mtbColtOfAccettazione != null) {
mtbColr mtbColr
.setDataCollo(value.getDataColloS()) .setNumColloRif(mtbColtOfAccettazione.getNumCollo())
.setNumCollo(value.getNumCollo()) .setDataColloRif(mtbColtOfAccettazione.getDataColloD())
.setGestione(value.getGestione()) .setGestioneRif(mtbColtOfAccettazione.getGestione())
.setSerCollo(value.getSerCollo()) .setSerColloRif(mtbColtOfAccettazione.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(item.getMtbAart().getUntMis())
.setMtbAart(item.getMtbAart());
//item.setQtaRiservate(item.getQtaRiservate().add(mtbColr.getQtaCol())); .setNumOrd(null)
.setRigaOrd(null)
.setDataOrd((String) null)
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr); .setRiga(null);
refreshOrderBy(false);
FBToast.successToast(mActivity,mActivity.getResources().getString(R.string.data_saved) ,FBToast.LENGTH_SHORT);
progress.dismiss();
if(closeLU) onColloClosed(null);
} }
@Override ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {
public void onFailed(Exception ex) { @Override
UtilityExceptions.defaultException(mActivity, ex, progress); 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(item.getMtbAart().getUntMis())
.setMtbAart(item.getMtbAart());
//item.setQtaRiservate(item.getQtaRiservate().add(mtbColr.getQtaCol()));
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr);
refreshOrderBy(false);
FBToast.successToast(mActivity,mActivity.getResources().getString(R.string.data_saved) ,FBToast.LENGTH_SHORT);
progress.dismiss();
if(closeLU) onColloClosed(null);
}
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, progress);
}
});
};
if(mtbColtOfAccettazione != null) {
MtbColr cloneMtbColr = (MtbColr) mtbColr.clone();
MtbColt cloneMtbColtOfAccettazione = (MtbColt) mtbColtOfAccettazione.clone();
cloneMtbColtOfAccettazione.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColtOfAccettazione.setMtbColr(new ObservableArrayList());
cloneMtbColtOfAccettazione.getMtbColr().add(cloneMtbColr);
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColtOfAccettazione, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
cloneMtbColr
.setDataCollo(value.getDataColloS())
.setNumCollo(value.getNumCollo())
.setGestione(value.getGestione())
.setSerCollo(value.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(item.getMtbAart().getUntMis())
.setMtbAart(item.getMtbAart());
mtbColtOfAccettazione.getMtbColr().add(cloneMtbColr);
saveRiga.run();
}
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, progress);
}
});
} else {
saveRiga.run();
}
} }
private MtbColt getColloRef() {
return mtbColtOfAccettazione != null ? mtbColtOfAccettazione : mArticoliInColloBottomSheetViewModel.mtbColt.get();
}
private void resetUL() {
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
mtbColtOfAccettazione = null;
}
private void onRowEdited(MtbColr oldValue, MtbColr newValue) {
if(mtbColtOfAccettazione != null) {
ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mActivity);
MtbColr mtbColrToEditOfAccettazione = Stream.of(mtbColtOfAccettazione.getMtbColr())
.filter(x -> x.getQtaCol().compareTo(oldValue.getQtaCol()) == 0 &&
x.getCodMart().equalsIgnoreCase(oldValue.getCodMart()) &&
x.getPartitaMag().equalsIgnoreCase(oldValue.getPartitaMag()) &&
x.getCodJcom().equalsIgnoreCase(oldValue.getCodJcom()))
.findFirst()
.get();
mtbColrToEditOfAccettazione
.setQtaCol(newValue.getQtaCol());
ColliMagazzinoRESTConsumer.updateRiga(mtbColrToEditOfAccettazione, () -> {
progress.dismiss();
this.refreshOrderBy(false);
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progress);
this.refreshOrderBy(false);
});
} else {
this.refreshOrderBy(false);
}
}
private void onRowDeleted(MtbColr deletedValue) {
if(mtbColtOfAccettazione != null) {
ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mActivity);
MtbColr mtbColrToDeleteOfAccettazione = Stream.of(mtbColtOfAccettazione.getMtbColr())
.filter(x -> x.getQtaCol().compareTo(deletedValue.getQtaCol()) == 0 &&
x.getCodMart().equalsIgnoreCase(deletedValue.getCodMart()) &&
x.getPartitaMag().equalsIgnoreCase(deletedValue.getPartitaMag()) &&
x.getCodJcom().equalsIgnoreCase(deletedValue.getCodJcom()))
.findFirst()
.get();
ColliMagazzinoRESTConsumer.deleteRiga(mtbColrToDeleteOfAccettazione, () -> {
mtbColtOfAccettazione.getMtbColr().remove(mtbColrToDeleteOfAccettazione);
progress.dismiss();
this.refreshOrderBy(false);
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progress);
this.refreshOrderBy(false);
});
} else {
this.refreshOrderBy(false);
}
}
} }

View File

@ -607,6 +607,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
final ProgressDialog progressDialogFinal = progressDialog == null ? UtilityProgress.createDefaultProgressDialog(mContext) : progressDialog; final ProgressDialog progressDialogFinal = progressDialog == null ? UtilityProgress.createDefaultProgressDialog(mContext) : progressDialog;
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt.initDefaultFields();
mtbColt .setGestione(GestioneEnum.VENDITA) mtbColt .setGestione(GestioneEnum.VENDITA)
.setSegno(-1) .setSegno(-1)
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
@ -667,7 +668,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
private void updateDataFine(ProgressDialog progress, Runnable onComplete) { private void updateDataFine(ProgressDialog progress, Runnable onComplete) {
MtbColt cloneMtbColt = (MtbColt) this.mtbColt.get().clone(); MtbColt cloneMtbColt = (MtbColt) this.mtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setOraFinePrep(new Date()); cloneMtbColt.setOraFinePrep(new Date());

View File

@ -125,7 +125,7 @@ public class DialogVenditaFiltroAvanzato {
private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) { private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) {
IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getIstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA); IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getIstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA);
bindings.inputDataCons.setOnClickListener(view -> { bindings.filledExposedDropdownDataCons.setOnClickListener(view -> {
Calendar c = Calendar.getInstance(); Calendar c = Calendar.getInstance();
if(viewModel.dataConsegnaDate != null) { if(viewModel.dataConsegnaDate != null) {
@ -180,6 +180,7 @@ public class DialogVenditaFiltroAvanzato {
viewModel.terminiConsegna.refresh(); viewModel.terminiConsegna.refresh();
viewModel.vettore.refresh(); viewModel.vettore.refresh();
viewModel.automezzo.refresh(); viewModel.automezzo.refresh();
viewModel.dataConsegna.refresh();
} }
@ -314,6 +315,27 @@ public class DialogVenditaFiltroAvanzato {
arrayAdapterVettore.addAll(getAvailableVettori(true)); arrayAdapterVettore.addAll(getAvailableVettori(true));
}); });
BindableString.resetListeners(viewModel.dataConsegna);
BindableString.registerListener(viewModel.dataConsegna, value -> {
if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null;
else {
currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate);
}
refreshList();
arrayAdapterCodMdep.clear();
arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
arrayAdapterNumOrds.clear();
arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
arrayAdapterCliente.clear();
arrayAdapterCliente.addAll(getAvailableCliente(true));
arrayAdapterTermCons.clear();
arrayAdapterTermCons.addAll(getAvailableTermCons(true));
arrayAdapterVettore.clear();
arrayAdapterVettore.addAll(getAvailableVettori(true));
});
} }
@ -334,13 +356,13 @@ public class DialogVenditaFiltroAvanzato {
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd()); currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
// bindings.inputNumOrds.setErrorEnabled(false); // mBindings.inputNumOrds.setErrorEnabled(false);
// bindings.inputNumOrds.setError(""); // mBindings.inputNumOrds.setError("");
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
currentNumOrdsPredicate = null; currentNumOrdsPredicate = null;
// bindings.inputNumOrds.setErrorEnabled(true); // mBindings.inputNumOrds.setErrorEnabled(true);
// bindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error)); // mBindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error));
} }
} }

View File

@ -8,7 +8,6 @@ import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
@ -28,7 +27,7 @@ import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBot
public class VenditaOrdineInevasoActivity extends AppCompatActivity { public class VenditaOrdineInevasoActivity extends AppCompatActivity {
public ActivityVenditaOrdineInevasoBinding bindings; private ActivityVenditaOrdineInevasoBinding mBindings;
private VenditaOrdineInevasoViewModel mVenditaOrdineInevasoViewModel; private VenditaOrdineInevasoViewModel mVenditaOrdineInevasoViewModel;
private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel; private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
@ -41,17 +40,17 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
bindings = DataBindingUtil.setContentView(this, R.layout.activity_vendita_ordine_inevaso); mBindings = DataBindingUtil.setContentView(this, R.layout.activity_vendita_ordine_inevaso);
FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude; FragmentArticoliInColloBottomSheetBinding bindings = this.mBindings.bottomSheetInclude;
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings); mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings);
ArrayList<PickingObjectDTO> pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList")); ArrayList<PickingObjectDTO> pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList"));
ArrayList<OrdineVenditaGroupedInevasoDTO> testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini")); ArrayList<OrdineVenditaGroupedInevasoDTO> testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini"));
ArrayList<MtbColt> colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati")); ArrayList<MtbColt> colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati"));
mVenditaOrdineInevasoViewModel = new VenditaOrdineInevasoViewModel( mVenditaOrdineInevasoViewModel = new VenditaOrdineInevasoViewModel(
this, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati); this, mBindings, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati);
setSupportActionBar(this.bindings.toolbar); setSupportActionBar(this.mBindings.toolbar);
setTitle(R.string.activity_vendita_inevaso_title); setTitle(R.string.activity_vendita_inevaso_title);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@ -108,6 +107,7 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Check which request we're responding to // Check which request we're responding to
if (requestCode == PICK_UL_REQUEST) { if (requestCode == PICK_UL_REQUEST) {
// Make sure the request was successful // Make sure the request was successful

View File

@ -212,7 +212,7 @@ public class MainListOrdineVenditaInevasoAdapter extends RecyclerView.Adapter<Ma
groupModelView.setOnClickListener(view -> { groupModelView.setOnClickListener(view -> {
if (mOrdineRowDispatch != null && !rowItem.getOriginalModel().isDeactivated()) { if (mOrdineRowDispatch != null) {
// rowItem.getOriginalModel().setTempEan128Model(null); // rowItem.getOriginalModel().setTempEan128Model(null);
mOrdineRowDispatch.onOrdineRowDispatch(rowItem.getOriginalModel()); mOrdineRowDispatch.onOrdineRowDispatch(rowItem.getOriginalModel());
} }

View File

@ -87,7 +87,7 @@ public class VenditaOrdineInevasoHelper {
.filter(PickingObjectDTO::isDeactivated) .filter(PickingObjectDTO::isDeactivated)
.toList(); .toList();
groupedRighe.add(deactivatedItems); if(deactivatedItems.size() > 0) groupedRighe.add(deactivatedItems);
return groupedRighe; return groupedRighe;
} }

View File

@ -5,6 +5,7 @@ import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import android.text.SpannableString; import android.text.SpannableString;
import android.view.View;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.tfb.fbtoast.FBToast; import com.tfb.fbtoast.FBToast;
@ -31,6 +32,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.CommonModelConsts;
@ -47,6 +49,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;
import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity;
@ -61,13 +64,16 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity; import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO; import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IOnOrdineVenditaRowDispatched { public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IOnOrdineVenditaRowDispatched {
public ObservableField<Boolean> isFabVisible = new ObservableField<>(); public ObservableField<Boolean> isFabVisible = new ObservableField<>();
public BindableBoolean shouldShowAddExtraItems = new BindableBoolean();
private VenditaOrdineInevasoActivity mActivity; private VenditaOrdineInevasoActivity mActivity;
private final ActivityVenditaOrdineInevasoBinding mBindings;
private final ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel; private final ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
private final List<PickingObjectDTO> mPickingList; private final List<PickingObjectDTO> mPickingList;
@ -86,10 +92,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
private Integer defaultNumOrdOfUL = null; private Integer defaultNumOrdOfUL = null;
private Date defaultDataOrdOfUL = null; private Date defaultDataOrdOfUL = null;
private Integer mtbColtSessionID = null; private Integer mtbColtSessionID = null;
public VenditaOrdineInevasoViewModel(VenditaOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List<PickingObjectDTO> pickingList, List<OrdineVenditaGroupedInevasoDTO> orders, List<MtbColt> colliRegistrati) { public VenditaOrdineInevasoViewModel(VenditaOrdineInevasoActivity activity, ActivityVenditaOrdineInevasoBinding bindings, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List<PickingObjectDTO> pickingList, List<OrdineVenditaGroupedInevasoDTO> orders, List<MtbColt> colliRegistrati) {
this.mActivity = activity; this.mActivity = activity;
this.mBindings = bindings;
this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel; this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel;
this.mPickingList = pickingList; this.mPickingList = pickingList;
this.mTestateOrdini = orders; this.mTestateOrdini = orders;
@ -97,7 +105,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
this.isFabVisible.set(true); this.isFabVisible.set(true);
this.mActivity.bindings.setViewmodel(this); this.mBindings.setViewmodel(this);
this.init(); this.init();
this.initDatiPicking(); this.initDatiPicking();
@ -116,6 +124,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
this.refreshOrderBy(false); this.refreshOrderBy(false);
}); });
mBindings.addExtraItemsToolbar.setOnClickListener((v -> {
DialogScanArt.make(mActivity, (status, mtbAart) -> {
}).show();
}));
mHelper = new VenditaOrdineInevasoHelper(mActivity); mHelper = new VenditaOrdineInevasoHelper(mActivity);
initRecyclerView(); initRecyclerView();
@ -123,11 +137,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
private void initRecyclerView(){ private void initRecyclerView(){
//RecyclerView setup //RecyclerView setup
mActivity.bindings.venditaOrdineMainList.setHasFixedSize(true); this.mBindings.venditaOrdineMainList.setHasFixedSize(true);
mActivity.bindings.venditaOrdineMainList.setLayoutManager(new LinearLayoutManager(mActivity)); this.mBindings.venditaOrdineMainList.setLayoutManager(new LinearLayoutManager(mActivity));
mAdapter = mHelper.getRightListAdapter(mActivity.bindings.venditaOrdineInevasoEmptyView); mAdapter = mHelper.getRightListAdapter(this.mBindings.venditaOrdineInevasoEmptyView);
try { try {
this.mGroupedPickingList = mHelper.getPickingListRaggruppataPerPosizione(mPickingList, true); this.mGroupedPickingList = mHelper.getPickingListRaggruppataPerPosizione(mPickingList, true);
@ -137,7 +151,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
mAdapter.setOnOrdineRowDispatchCallback(this); mAdapter.setOnOrdineRowDispatchCallback(this);
mActivity.bindings.venditaOrdineMainList.setAdapter(mAdapter); this.mBindings.venditaOrdineMainList.setAdapter(mAdapter);
} }
private void initDatiPicking() { private void initDatiPicking() {
@ -289,9 +303,9 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
public void applyFilter(String descriptionText) { public void applyFilter(String descriptionText) {
mActivity.bindings.filteredArtsInListExpandableLayout.expand(true); this.mBindings.filteredArtsInListExpandableLayout.expand(true);
mActivity.bindings.descriptionFilterText.setText(descriptionText); this.mBindings.descriptionFilterText.setText(descriptionText);
} }
public void removeListFilter() { public void removeListFilter() {
@ -301,7 +315,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
refreshOrderBy(false); refreshOrderBy(false);
mActivity.bindings.filteredArtsInListExpandableLayout.collapse(true); this.mBindings.filteredArtsInListExpandableLayout.collapse(true);
} }
public void recoverUL(MtbColt recoveredMtbColt){ public void recoverUL(MtbColt recoveredMtbColt){
@ -730,10 +744,10 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
} }
if(matchedRows.size() == 1) { if(matchedRows.size() == 1 ) {
if (matchedRows.get(0).getTempPickData() != null && if (matchedRows.get(0).getTempPickData() != null &&
matchedRows.get(0).getTempPickData().getSourceMtbColt() != null) { matchedRows.get(0).getTempPickData().getSourceMtbColt() != null ) {
MtbColt tempSourceMtbColt = matchedRows.get(0).getTempPickData().getSourceMtbColt(); MtbColt tempSourceMtbColt = matchedRows.get(0).getTempPickData().getSourceMtbColt();
@ -750,6 +764,9 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
refreshOrderBy(false); refreshOrderBy(false);
} }
} else if(matchedRows.get(0).isDeactivated()) {
applyFilter("");
refreshOrderBy(false);
} else { } else {
onOrdineRowDispatch(matchedRows.get(0)); onOrdineRowDispatch(matchedRows.get(0));
} }
@ -767,7 +784,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
public void createNewUL(Integer customNumCollo, String customSerCollo, ProgressDialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) { public void createNewUL(Integer customNumCollo, String customSerCollo, ProgressDialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) {
mActivity.bindings.venditaOrdineInevasoFab.close(true); this.mBindings.venditaOrdineInevasoFab.close(true);
if (progress == null){ if (progress == null){
progress = UtilityProgress.createDefaultProgressDialog(mActivity); progress = UtilityProgress.createDefaultProgressDialog(mActivity);
@ -775,6 +792,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
progress.show(); progress.show();
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt.initDefaultFields();
mtbColt .setGestione(defaultGestioneOfUL) mtbColt .setGestione(defaultGestioneOfUL)
.setSegno(-1) .setSegno(-1)
.setRifOrd(defaultRifOrdOfUL) .setRifOrd(defaultRifOrdOfUL)
@ -837,12 +855,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
private void setULToCurrentContext(MtbColt mtbColt){ private void setULToCurrentContext(MtbColt mtbColt){
isFabVisible.set(false); isFabVisible.set(false);
shouldShowAddExtraItems.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione());
mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt); mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
} }
public void showCreatedUL() { public void showCreatedUL() {
mActivity.bindings.venditaOrdineInevasoFab.close(false); this.mBindings.venditaOrdineInevasoFab.close(false);
mActivity.startListaBancaliRegistratiActivity((ArrayList<MtbColt>) mColliRegistrati); mActivity.startListaBancaliRegistratiActivity((ArrayList<MtbColt>) mColliRegistrati);
} }
@ -863,12 +882,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} else { } else {
if(onComplete != null) onComplete.run(); if(onComplete != null) onComplete.run();
} }
} }
private void updateDataFine(ProgressDialog progress, Runnable onComplete) { private void updateDataFine(ProgressDialog progress, Runnable onComplete) {
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone(); MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setOraFinePrep(new Date()); cloneMtbColt.setOraFinePrep(new Date());
@ -985,6 +1005,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
mArticoliInColloBottomSheetViewModel.mtbColt.set(null); mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
isFabVisible.set(true); isFabVisible.set(true);
shouldShowAddExtraItems.set(false);
progress.dismiss(); progress.dismiss();
@ -1013,6 +1034,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
mArticoliInColloBottomSheetViewModel.mtbColt.set(null); mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
isFabVisible.set(true); isFabVisible.set(true);
shouldShowAddExtraItems.set(false);
for(int i = 0; i < this.mPickingList.size(); i++) { for(int i = 0; i < this.mPickingList.size(); i++) {
@ -1085,7 +1107,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
qtaTest.addAndGet(x.getQtaCol()); qtaTest.addAndGet(x.getQtaCol());
}); });
BigDecimal qtaDisponibile = item.getQtaCollo().subtract(qtaTest.get()); BigDecimal qtaDisponibile = (item.isDeactivated() ? item.getQtaOrd() : item.getQtaCollo()).subtract(qtaTest.get());
if(qtaDisponibile.floatValue() < 0) qtaDisponibile = BigDecimal.ZERO; if(qtaDisponibile.floatValue() < 0) qtaDisponibile = BigDecimal.ZERO;
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO() DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
@ -1097,7 +1119,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.setQtaDisponibile(qtaDisponibile) .setQtaDisponibile(qtaDisponibile)
.setQtaTot(qtaDisponibile) .setQtaTot(qtaDisponibile)
.setQtaEvasa(new BigDecimal(qtaEvasaTotale)) .setQtaEvasa(new BigDecimal(qtaEvasaTotale))
.setCanPartitaMagBeChanged(false) .setCanPartitaMagBeChanged(item.isDeactivated())
.setMaxQta(qtaDisponibile); .setMaxQta(qtaDisponibile);
if(item.getTempPickData() != null) { if(item.getTempPickData() != null) {

View File

@ -75,7 +75,7 @@ public class ArticoliInColloBottomSheetHelper extends BottomSheetBehavior.Bottom
mBinding.articoliInColloDetailsPosizione.setText(mtbColt.getPosizione() != null ? mtbColt.getPosizione() : "N/A"); mBinding.articoliInColloDetailsPosizione.setText(mtbColt.getPosizione() != null ? mtbColt.getPosizione() : "N/A");
// bindings.articoliInColloDetailsPreparatoDa.setText(mtbColt.getPreparatoDa() != null ? mtbColt.getPreparatoDa() : "N/A"); // mBindings.articoliInColloDetailsPreparatoDa.setText(mtbColt.getPreparatoDa() != null ? mtbColt.getPreparatoDa() : "N/A");
} }

View File

@ -0,0 +1,181 @@
package it.integry.integrywmsnative.view.dialogs.scan_art;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.SpannableString;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
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.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogScanArtBinding;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
public class DialogScanArt {
private Context mContext;
private Dialog mDialog;
private RunnableArgss<DialogConsts.Results, MtbAart> mOnItemChoosed;
public static Dialog make(final Context context, RunnableArgss<DialogConsts.Results, MtbAart> onItemChoosed) {
return new DialogScanArt(context, onItemChoosed).mDialog;
}
private DialogScanArt(Context context, RunnableArgss<DialogConsts.Results, MtbAart> onItemChoosed) {
mContext = context;
mOnItemChoosed = onItemChoosed;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
DialogScanArtBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_art, null, false);
mDialog = new Dialog(context);
mDialog.setContentView(bindings.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
bindings.buttonNo.setOnClickListener(v -> {
mOnItemChoosed.run(DialogConsts.Results.ABORT, null);
mDialog.dismiss();
});
initBarcode(context);
}
private void initBarcode(Context context) {
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
mDialog.setOnDismissListener(dialog -> {
BarcodeManager.removeCallback(barcodeIstanceID);
BarcodeManager.enable();
});
}
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
BarcodeManager.disable();
if(UtilityBarcode.isEtichetta128(data)) {
this.executeEtichettaEan128(data, progressDialog);
} else if(UtilityBarcode.isEanPeso(data)){
this.executeEtichettaEanPeso(data, progressDialog);
} else {
this.loadArticolo(data.getStringValue(), null, progressDialog);
}
};
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
BarcodeRESTConsumer.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 (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, ProgressDialog progressDialog) {
try {
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
this.loadArticolo(ean13PesoModel.getPrecode(), ean13PesoModel.toEan128(), progressDialog);
} catch (Exception ex) {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
}
}
private void loadArticolo(String barcodeProd, Ean128Model ean128Model, ProgressDialog progressDialog) {
if(barcodeProd.length() == 14) {
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
ArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if(mtbAartList != null && mtbAartList.size() > 0) {
BarcodeManager.enable();
progressDialog.dismiss();
mOnItemChoosed.run(DialogConsts.Results.YES, mtbAartList.get(0));
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

@ -41,6 +41,21 @@
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin" app:layout_collapseMode="pin"
android:layout_width="match_parent"> android:layout_width="match_parent">
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/add_extra_items_toolbar"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_gravity="end"
android:background="@drawable/ripple_effect"
android:adjustViewBounds="true"
android:src="@drawable/ic_add_24dp"
app:visibility="@{viewmodel.shouldShowAddExtraItems}"
android:tint="@color/colorPrimaryGray"/>
</androidx.appcompat.widget.Toolbar> </androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>

View File

@ -70,7 +70,7 @@
app:iconifiedByDefault="true" app:iconifiedByDefault="true"
android:layout_gravity="end"/> android:layout_gravity="end"/>
<ImageButton <androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/main_filter" android:id="@+id/main_filter"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="50dp" android:layout_height="50dp"
@ -81,7 +81,7 @@
android:src="@drawable/ic_search_black_24dp" android:src="@drawable/ic_search_black_24dp"
android:tint="@color/colorPrimaryGray"/> android:tint="@color/colorPrimaryGray"/>
<ImageButton <androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/main_select_all" android:id="@+id/main_select_all"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="50dp" android:layout_height="50dp"

View File

@ -86,6 +86,8 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View File

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.cardview.widget.CardView
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="24dp"
android:paddingEnd="24dp"
android:paddingTop="24dp"
android:paddingBottom="12dp">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.DialogTitle"
android:text="@string/extra_item"
android:gravity="center_horizontal"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:orientation="horizontal">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
style="@style/AppTheme.NewMaterial.Text"
android:text="@string/scan_item"/>
</LinearLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/button_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
style="@style/Button.DangerOutline"
app:strokeColor="@color/red_400"
app:layout_constraintTop_toTopOf="parent"
android:layout_gravity="center_horizontal"
android:text="@string/abort"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -120,15 +120,33 @@
<!--android:hint="@string/customer"--> <!--android:hint="@string/customer"-->
<!--app:binding="@{viewmodel.cliente}"/>--> <!--app:binding="@{viewmodel.cliente}"/>-->
<com.google.android.material.textfield.TextInputLayout
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_data_cons" android:id="@+id/input_data_cons"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="textNoSuggestions" android:hint="@string/ship_date">
android:hint="@string/ship_date"
android:focusable="false"
app:binding="@{viewmodel.dataConsegna}"/> <com.google.android.material.textfield.TextInputEditText
android:id="@+id/filled_exposed_dropdown_data_cons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:focusable="false"
android:singleLine="true"
app:binding="@{viewmodel.dataConsegna}"/>
</com.google.android.material.textfield.TextInputLayout>
<!--<com.google.android.material.textfield.TextInputEditText-->
<!--android:id="@+id/input_data_cons"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:inputType="textNoSuggestions"-->
<!--android:hint="@string/ship_date"-->
<!--android:focusable="false"-->
<!--app:binding="@{viewmodel.dataConsegna}"/>-->

View File

@ -29,6 +29,8 @@
<string name="permission_request_message">Questi permessi sono necessari al funzionamento dell\'app</string> <string name="permission_request_message">Questi permessi sono necessari al funzionamento dell\'app</string>
<string name="picking_not_available">Picking non disponibile</string> <string name="picking_not_available">Picking non disponibile</string>
<string name="scan_item">Scansiona il codice a barre di un <b>articolo</b></string>
<string name="extra_item">Articolo extra</string>
<string name="action_settings">Impostazioni</string> <string name="action_settings">Impostazioni</string>

View File

@ -84,6 +84,8 @@
<string name="position_text">Position</string> <string name="position_text">Position</string>
<string name="prepared_by_text">Prepared by</string> <string name="prepared_by_text">Prepared by</string>
<string name="picking_not_available">Picking not available</string> <string name="picking_not_available">Picking not available</string>
<string name="scan_item">Please scan an <b>item</b> barcode</string>
<string name="extra_item">Extra item</string>
<string name="password_error_length">between 3 and 30 alphanumeric characters</string> <string name="password_error_length">between 3 and 30 alphanumeric characters</string>