Implementata creazione del doppio collo A / L in Accettazione.
Iniziata implementazione del tasto "Aggiungi merce extra" in Spedizione.
This commit is contained in:
parent
787d12ff9b
commit
b4b8fac725
@ -94,6 +94,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
|
||||
.setSegno(segno)
|
||||
.setGestione(GestioneEnum.LAVORAZIONE);
|
||||
|
||||
mtbColtToCreate.initDefaultFields();
|
||||
|
||||
mtbColtToCreate
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
|
||||
@ -166,6 +168,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
|
||||
MtbColt mtbColtToCreate = new MtbColt()
|
||||
.setGestione(gestione);
|
||||
|
||||
mtbColtToCreate.initDefaultFields();
|
||||
|
||||
Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcode);
|
||||
String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE;
|
||||
|
||||
|
||||
@ -252,4 +252,20 @@ public class Converters {
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -99,6 +99,9 @@ public class MtbColt extends EntityBase {
|
||||
type = "mtb_colt";
|
||||
setDataCollo(new Date());
|
||||
setSerCollo("/");
|
||||
}
|
||||
|
||||
public void initDefaultFields() {
|
||||
setCodMdep(SettingsManager.i().userSession.depo.getCodMdep());
|
||||
setPreparatoDa(SettingsManager.i().user.fullname);
|
||||
setOraInizPrep(new Date());
|
||||
|
||||
@ -23,6 +23,8 @@ public class DBSettingsModel {
|
||||
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
|
||||
private boolean flagAskClienteInPickingLibero;
|
||||
|
||||
private boolean flagCanAddExtraItemSpedizione;
|
||||
|
||||
public List<String> getAvailableProfiles() {
|
||||
return availableProfiles;
|
||||
}
|
||||
@ -109,4 +111,13 @@ public class DBSettingsModel {
|
||||
this.flagAskClienteInPickingLibero = flagAskClienteInPickingLibero;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isFlagCanAddExtraItemSpedizione() {
|
||||
return flagCanAddExtraItemSpedizione;
|
||||
}
|
||||
|
||||
public DBSettingsModel setFlagCanAddExtraItemSpedizione(boolean flagCanAddExtraItemSpedizione) {
|
||||
this.flagCanAddExtraItemSpedizione = flagCanAddExtraItemSpedizione;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@ -192,6 +192,9 @@ public class SettingsManager {
|
||||
GestSetupRESTConsumer.getBooleanValue("PICKING", "PICKING_LIBERO", "FLAG_ASK_CLIENTE", valueAskClientePickingLibero -> {
|
||||
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(valueAskClientePickingLibero);
|
||||
|
||||
GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", valueCanAddExtraItemSpedizione -> {
|
||||
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(valueCanAddExtraItemSpedizione);
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
|
||||
}, ex -> {
|
||||
@ -217,6 +220,10 @@ public class SettingsManager {
|
||||
}, ex -> {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
|
||||
}, ex -> {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -76,6 +76,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
|
||||
private GestioneEnum defaultGestioneOfUL = null;
|
||||
|
||||
private MtbColt mtbColtOfAccettazione = null;
|
||||
|
||||
public AccettazioneOrdineAccettazioneInevasoViewModel(AccettazioneOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List<OrdineAccettazioneDTO> orders) {
|
||||
this.mActivity = activity;
|
||||
this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel;
|
||||
@ -90,8 +92,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
|
||||
private void init(){
|
||||
mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
|
||||
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback((deletedItem) -> this.refreshOrderBy(false));
|
||||
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback((originalItem, editedItem) -> this.refreshOrderBy(false));
|
||||
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onRowDeleted);
|
||||
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onRowEdited);
|
||||
|
||||
groupedOrdini = new ArrayList<>();
|
||||
for (OrdineAccettazioneDTO ordine : mOrders){
|
||||
@ -167,7 +169,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
}
|
||||
|
||||
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);
|
||||
} catch (Exception e) {
|
||||
@ -421,22 +423,43 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
String defaultPosAccettazione = "";
|
||||
if(defaultPosAccettazioneDTO != null && !UtilityString.isNullOrEmpty(defaultPosAccettazioneDTO.value)) defaultPosAccettazione = defaultPosAccettazioneDTO.value;
|
||||
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt
|
||||
.setGestione(defaultGestioneOfUL)
|
||||
.setPreparatoDa(SettingsManager.i().user.fullname)
|
||||
|
||||
MtbColt mtbColtOfBarode = new MtbColt();
|
||||
mtbColtOfBarode.initDefaultFields();
|
||||
mtbColtOfBarode
|
||||
.setGestione(GestioneEnum.LAVORAZIONE)
|
||||
.setAnnotazioni(noteString)
|
||||
.setPosizione(defaultPosAccettazione)
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
|
||||
|
||||
if(customNumCollo != null) {
|
||||
mtbColt.setNumCollo(customNumCollo);
|
||||
mtbColtOfBarode.setNumCollo(customNumCollo);
|
||||
}
|
||||
|
||||
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 =
|
||||
stream(mOrders)
|
||||
.select(c -> c.codAnag)
|
||||
@ -444,7 +467,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
.toList();
|
||||
|
||||
if(codAnags != null && codAnags.size() == 1){
|
||||
mtbColt.setCodAnag(codAnags.get(0));
|
||||
mtbColtToAddRefs.setCodAnag(codAnags.get(0));
|
||||
}
|
||||
|
||||
List<String> rifOrds =
|
||||
@ -454,7 +477,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
.toList();
|
||||
|
||||
if(rifOrds != null && rifOrds.size() == 1){
|
||||
mtbColt.setRifOrd(rifOrds.get(0));
|
||||
mtbColtToAddRefs.setRifOrd(rifOrds.get(0));
|
||||
}
|
||||
|
||||
List<String> numDataOrds =
|
||||
@ -464,11 +487,11 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
.toList();
|
||||
|
||||
if(numDataOrds != null && numDataOrds.size() == 1){
|
||||
mtbColt.setNumOrd(mOrders.get(0).numero);
|
||||
mtbColt.setDataOrd(mOrders.get(0).data);
|
||||
mtbColtToAddRefs.setNumOrd(mOrders.get(0).numero);
|
||||
mtbColtToAddRefs.setDataOrd(mOrders.get(0).data);
|
||||
|
||||
try {
|
||||
mtbColt.generaFiltroOrdine();
|
||||
mtbColtToAddRefs.generaFiltroOrdine();
|
||||
} catch (Exception ex) {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString(ex.getMessage()), null, null).show();
|
||||
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
|
||||
public void onSuccess(MtbColt value) {
|
||||
|
||||
@ -510,6 +534,37 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
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));
|
||||
|
||||
|
||||
@ -575,8 +630,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
|
||||
private void updateDataFine(ProgressDialog progress, Runnable onComplete) {
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
MtbColt cloneMtbColt = (MtbColt) getColloRef().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||
cloneMtbColt.setOraFinePrep(new Date());
|
||||
|
||||
|
||||
@ -640,8 +695,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
UtilityExceptions.defaultException(mActivity, ex, progress);
|
||||
}
|
||||
} else {
|
||||
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
|
||||
resetUL();
|
||||
isFabVisible.set(true);
|
||||
|
||||
progress.dismiss();
|
||||
@ -660,33 +714,44 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
|
||||
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);
|
||||
|
||||
progress.dismiss();
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, 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() {
|
||||
return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null;
|
||||
return getColloRef() != null;
|
||||
}
|
||||
public boolean thereIsAnyRowInUL() {
|
||||
return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null &&
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() != null &&
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().size() > 0;
|
||||
return getColloRef() != null &&
|
||||
getColloRef().getMtbColr() != null &&
|
||||
getColloRef().getMtbColr().size() > 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void postCloseOperations(Runnable onComplete) {
|
||||
|
||||
MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
|
||||
MtbColt mtbColt = (MtbColt) mtbColtOfAccettazione.clone();
|
||||
|
||||
resetUL();
|
||||
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
|
||||
isFabVisible.set(true);
|
||||
|
||||
if(mtbColt != null && mtbColt.getMtbColr() != null) {
|
||||
@ -721,9 +786,9 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
|
||||
@Override
|
||||
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(
|
||||
x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.getCodMart()) &&
|
||||
@ -831,6 +896,22 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
cloneMtbColt.setMtbColr(new ObservableArrayList());
|
||||
cloneMtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
Runnable saveRiga = () -> {
|
||||
|
||||
if(mtbColtOfAccettazione != null) {
|
||||
mtbColr
|
||||
.setNumColloRif(mtbColtOfAccettazione.getNumCollo())
|
||||
.setDataColloRif(mtbColtOfAccettazione.getDataColloD())
|
||||
.setGestioneRif(mtbColtOfAccettazione.getGestione())
|
||||
.setSerColloRif(mtbColtOfAccettazione.getSerCollo())
|
||||
|
||||
.setNumOrd(null)
|
||||
.setRigaOrd(null)
|
||||
.setDataOrd((String) null)
|
||||
|
||||
.setRiga(null);
|
||||
}
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {
|
||||
@Override
|
||||
public void onSuccess(MtbColt value) {
|
||||
@ -860,5 +941,117 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -607,6 +607,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
||||
final ProgressDialog progressDialogFinal = progressDialog == null ? UtilityProgress.createDefaultProgressDialog(mContext) : progressDialog;
|
||||
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields();
|
||||
mtbColt .setGestione(GestioneEnum.VENDITA)
|
||||
.setSegno(-1)
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
@ -667,7 +668,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
||||
private void updateDataFine(ProgressDialog progress, Runnable onComplete) {
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) this.mtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||
cloneMtbColt.setOraFinePrep(new Date());
|
||||
|
||||
|
||||
|
||||
@ -125,7 +125,7 @@ public class DialogVenditaFiltroAvanzato {
|
||||
private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) {
|
||||
IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getIstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA);
|
||||
|
||||
bindings.inputDataCons.setOnClickListener(view -> {
|
||||
bindings.filledExposedDropdownDataCons.setOnClickListener(view -> {
|
||||
Calendar c = Calendar.getInstance();
|
||||
|
||||
if(viewModel.dataConsegnaDate != null) {
|
||||
@ -180,6 +180,7 @@ public class DialogVenditaFiltroAvanzato {
|
||||
viewModel.terminiConsegna.refresh();
|
||||
viewModel.vettore.refresh();
|
||||
viewModel.automezzo.refresh();
|
||||
viewModel.dataConsegna.refresh();
|
||||
|
||||
|
||||
}
|
||||
@ -314,6 +315,27 @@ public class DialogVenditaFiltroAvanzato {
|
||||
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());
|
||||
|
||||
// bindings.inputNumOrds.setErrorEnabled(false);
|
||||
// bindings.inputNumOrds.setError("");
|
||||
// mBindings.inputNumOrds.setErrorEnabled(false);
|
||||
// mBindings.inputNumOrds.setError("");
|
||||
} catch (NumberFormatException ex) {
|
||||
currentNumOrdsPredicate = null;
|
||||
|
||||
// bindings.inputNumOrds.setErrorEnabled(true);
|
||||
// bindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error));
|
||||
// mBindings.inputNumOrds.setErrorEnabled(true);
|
||||
// mBindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -8,7 +8,6 @@ import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
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 ActivityVenditaOrdineInevasoBinding bindings;
|
||||
private ActivityVenditaOrdineInevasoBinding mBindings;
|
||||
private VenditaOrdineInevasoViewModel mVenditaOrdineInevasoViewModel;
|
||||
private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
|
||||
|
||||
@ -41,17 +40,17 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
bindings = DataBindingUtil.setContentView(this, R.layout.activity_vendita_ordine_inevaso);
|
||||
FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude;
|
||||
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_vendita_ordine_inevaso);
|
||||
FragmentArticoliInColloBottomSheetBinding bindings = this.mBindings.bottomSheetInclude;
|
||||
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings);
|
||||
|
||||
ArrayList<PickingObjectDTO> pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList"));
|
||||
ArrayList<OrdineVenditaGroupedInevasoDTO> testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini"));
|
||||
ArrayList<MtbColt> colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati"));
|
||||
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);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
@ -108,6 +107,7 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
// Check which request we're responding to
|
||||
if (requestCode == PICK_UL_REQUEST) {
|
||||
// Make sure the request was successful
|
||||
|
||||
@ -212,7 +212,7 @@ public class MainListOrdineVenditaInevasoAdapter extends RecyclerView.Adapter<Ma
|
||||
|
||||
|
||||
groupModelView.setOnClickListener(view -> {
|
||||
if (mOrdineRowDispatch != null && !rowItem.getOriginalModel().isDeactivated()) {
|
||||
if (mOrdineRowDispatch != null) {
|
||||
// rowItem.getOriginalModel().setTempEan128Model(null);
|
||||
mOrdineRowDispatch.onOrdineRowDispatch(rowItem.getOriginalModel());
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ public class VenditaOrdineInevasoHelper {
|
||||
.filter(PickingObjectDTO::isDeactivated)
|
||||
.toList();
|
||||
|
||||
groupedRighe.add(deactivatedItems);
|
||||
if(deactivatedItems.size() > 0) groupedRighe.add(deactivatedItems);
|
||||
|
||||
return groupedRighe;
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import android.text.SpannableString;
|
||||
import android.view.View;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
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.interfaces.IOrdiniVendita;
|
||||
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.RunnableArgs;
|
||||
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.UtilityProgress;
|
||||
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.PickingObjectDTO;
|
||||
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.input_quantity.DialogInputQuantity;
|
||||
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;
|
||||
|
||||
public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IOnOrdineVenditaRowDispatched {
|
||||
|
||||
public ObservableField<Boolean> isFabVisible = new ObservableField<>();
|
||||
public BindableBoolean shouldShowAddExtraItems = new BindableBoolean();
|
||||
|
||||
private VenditaOrdineInevasoActivity mActivity;
|
||||
private final ActivityVenditaOrdineInevasoBinding mBindings;
|
||||
private final ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
|
||||
|
||||
private final List<PickingObjectDTO> mPickingList;
|
||||
@ -86,10 +92,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
private Integer defaultNumOrdOfUL = null;
|
||||
private Date defaultDataOrdOfUL = 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.mBindings = bindings;
|
||||
this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel;
|
||||
this.mPickingList = pickingList;
|
||||
this.mTestateOrdini = orders;
|
||||
@ -97,7 +105,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
|
||||
this.isFabVisible.set(true);
|
||||
|
||||
this.mActivity.bindings.setViewmodel(this);
|
||||
this.mBindings.setViewmodel(this);
|
||||
|
||||
this.init();
|
||||
this.initDatiPicking();
|
||||
@ -116,6 +124,12 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
this.refreshOrderBy(false);
|
||||
});
|
||||
|
||||
mBindings.addExtraItemsToolbar.setOnClickListener((v -> {
|
||||
DialogScanArt.make(mActivity, (status, mtbAart) -> {
|
||||
|
||||
}).show();
|
||||
}));
|
||||
|
||||
mHelper = new VenditaOrdineInevasoHelper(mActivity);
|
||||
|
||||
initRecyclerView();
|
||||
@ -123,11 +137,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
|
||||
private void initRecyclerView(){
|
||||
//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 {
|
||||
this.mGroupedPickingList = mHelper.getPickingListRaggruppataPerPosizione(mPickingList, true);
|
||||
@ -137,7 +151,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
}
|
||||
|
||||
mAdapter.setOnOrdineRowDispatchCallback(this);
|
||||
mActivity.bindings.venditaOrdineMainList.setAdapter(mAdapter);
|
||||
this.mBindings.venditaOrdineMainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private void initDatiPicking() {
|
||||
@ -289,9 +303,9 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
|
||||
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() {
|
||||
@ -301,7 +315,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
}
|
||||
|
||||
refreshOrderBy(false);
|
||||
mActivity.bindings.filteredArtsInListExpandableLayout.collapse(true);
|
||||
this.mBindings.filteredArtsInListExpandableLayout.collapse(true);
|
||||
}
|
||||
|
||||
public void recoverUL(MtbColt recoveredMtbColt){
|
||||
@ -750,6 +764,9 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
refreshOrderBy(false);
|
||||
}
|
||||
|
||||
} else if(matchedRows.get(0).isDeactivated()) {
|
||||
applyFilter("");
|
||||
refreshOrderBy(false);
|
||||
} else {
|
||||
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) {
|
||||
mActivity.bindings.venditaOrdineInevasoFab.close(true);
|
||||
this.mBindings.venditaOrdineInevasoFab.close(true);
|
||||
|
||||
if (progress == null){
|
||||
progress = UtilityProgress.createDefaultProgressDialog(mActivity);
|
||||
@ -775,6 +792,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
progress.show();
|
||||
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields();
|
||||
mtbColt .setGestione(defaultGestioneOfUL)
|
||||
.setSegno(-1)
|
||||
.setRifOrd(defaultRifOrdOfUL)
|
||||
@ -837,12 +855,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
|
||||
private void setULToCurrentContext(MtbColt mtbColt){
|
||||
isFabVisible.set(false);
|
||||
shouldShowAddExtraItems.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione());
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
|
||||
}
|
||||
|
||||
public void showCreatedUL() {
|
||||
|
||||
mActivity.bindings.venditaOrdineInevasoFab.close(false);
|
||||
this.mBindings.venditaOrdineInevasoFab.close(false);
|
||||
mActivity.startListaBancaliRegistratiActivity((ArrayList<MtbColt>) mColliRegistrati);
|
||||
}
|
||||
|
||||
@ -863,12 +882,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
} else {
|
||||
if(onComplete != null) onComplete.run();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateDataFine(ProgressDialog progress, Runnable onComplete) {
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||
cloneMtbColt.setOraFinePrep(new Date());
|
||||
|
||||
|
||||
@ -985,6 +1005,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
|
||||
|
||||
isFabVisible.set(true);
|
||||
shouldShowAddExtraItems.set(false);
|
||||
|
||||
progress.dismiss();
|
||||
|
||||
@ -1013,6 +1034,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
|
||||
isFabVisible.set(true);
|
||||
shouldShowAddExtraItems.set(false);
|
||||
|
||||
|
||||
for(int i = 0; i < this.mPickingList.size(); i++) {
|
||||
@ -1085,7 +1107,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
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;
|
||||
|
||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||
@ -1097,7 +1119,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
.setQtaDisponibile(qtaDisponibile)
|
||||
.setQtaTot(qtaDisponibile)
|
||||
.setQtaEvasa(new BigDecimal(qtaEvasaTotale))
|
||||
.setCanPartitaMagBeChanged(false)
|
||||
.setCanPartitaMagBeChanged(item.isDeactivated())
|
||||
.setMaxQta(qtaDisponibile);
|
||||
|
||||
if(item.getTempPickData() != null) {
|
||||
|
||||
@ -75,7 +75,7 @@ public class ArticoliInColloBottomSheetHelper extends BottomSheetBehavior.Bottom
|
||||
|
||||
|
||||
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");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -41,6 +41,21 @@
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:layout_collapseMode="pin"
|
||||
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>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
app:iconifiedByDefault="true"
|
||||
android:layout_gravity="end"/>
|
||||
|
||||
<ImageButton
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
android:id="@+id/main_filter"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="50dp"
|
||||
@ -81,7 +81,7 @@
|
||||
android:src="@drawable/ic_search_black_24dp"
|
||||
android:tint="@color/colorPrimaryGray"/>
|
||||
|
||||
<ImageButton
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
android:id="@+id/main_select_all"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="50dp"
|
||||
|
||||
@ -86,6 +86,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
82
app/src/main/res/layout/dialog_scan_art.xml
Normal file
82
app/src/main/res/layout/dialog_scan_art.xml
Normal 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>
|
||||
@ -120,16 +120,34 @@
|
||||
<!--android:hint="@string/customer"-->
|
||||
<!--app:binding="@{viewmodel.cliente}"/>-->
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/input_data_cons"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/ship_date">
|
||||
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/input_data_cons"
|
||||
android:id="@+id/filled_exposed_dropdown_data_cons"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textNoSuggestions"
|
||||
android:hint="@string/ship_date"
|
||||
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}"/>-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -29,6 +29,8 @@
|
||||
|
||||
<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="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>
|
||||
|
||||
@ -84,6 +84,8 @@
|
||||
<string name="position_text">Position</string>
|
||||
<string name="prepared_by_text">Prepared by</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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user