Implementata la possibilità di modificare / eliminare righe in PickingLibero
This commit is contained in:
parent
ec2395145d
commit
b2a93c0a18
@ -4,6 +4,7 @@ package it.integry.integrywmsnative.gest.picking_libero;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@ -49,8 +50,10 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGExcep
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskCliente;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
|
||||
@ -58,7 +61,7 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
*/
|
||||
public class PickingLiberoFragment extends Fragment implements ITitledFragment, IScrollableFragment, PickingLiberoViewModel.Listener {
|
||||
public class PickingLiberoFragment extends Fragment implements ITitledFragment, IScrollableFragment, PickingLiberoViewModel.Listener, BottomSheetMtbColrEditView.Listener {
|
||||
|
||||
private FragmentPickingLiberoBinding mBindings;
|
||||
|
||||
@ -129,6 +132,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
|
||||
this.initVars();
|
||||
this.initBarcodeReader();
|
||||
this.initBottomSheet();
|
||||
this.initRecyclerView();
|
||||
|
||||
boolean flagAskCliente = SettingsManager.iDB().isFlagAskClienteInPickingLibero();
|
||||
@ -153,6 +157,11 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
|
||||
}
|
||||
|
||||
private void initBottomSheet() {
|
||||
mBindings.bottomSheetMtbColrEdit.setListener(this);
|
||||
mBindings.bottomSheetMtbColrEdit.init(mBindings.bottomSheetMtbColrEdit, mBindings.bottomSheetMtbColrEditBackground);
|
||||
}
|
||||
|
||||
|
||||
private void initRecyclerView() {
|
||||
mBindings.pickingLiberoMainList.setNestedScrollingEnabled(false);
|
||||
@ -167,6 +176,11 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
private void initAdapter() {
|
||||
mAdapter = new PickingLiberoListAdapter(mViewModel.getCurrentMtbColt().getMtbColr());
|
||||
mBindings.pickingLiberoMainList.setAdapter(mAdapter);
|
||||
|
||||
this.mAdapter.setOnItemClickListener(clickedMtbColr -> {
|
||||
mBindings.bottomSheetMtbColrEdit.setMtbColr(clickedMtbColr);
|
||||
mBindings.bottomSheetMtbColrEdit.expand();
|
||||
});
|
||||
}
|
||||
|
||||
private void destroyAdapter() {
|
||||
@ -266,6 +280,17 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
thereIsAnOpenedUL.set(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
String text = getResources().getString(R.string.alert_delete_mtb_colr);
|
||||
DialogSimpleMessageHelper.makeWarningDialog(getActivity(),
|
||||
new SpannableString(text),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)
|
||||
).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
this.closeProgress();
|
||||
@ -306,9 +331,9 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
BigDecimal totalQtaToBeTaken,
|
||||
BigDecimal totalNumCnfToBeTaken,
|
||||
BigDecimal qtaCnfToBeTaken,
|
||||
BigDecimal totalQtaAvailable,
|
||||
BigDecimal totalNumCnfAvailable,
|
||||
BigDecimal qtaCnfAvailable,
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
boolean canOverflowOrderQuantity,
|
||||
@ -321,9 +346,9 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
.setInitialNumCnf(initialNumCnf)
|
||||
.setInitialQtaCnf(initialQtaCnf)
|
||||
.setInitialQtaTot(initialQtaTot)
|
||||
.setTotalQtaToBeTaken(totalQtaToBeTaken)
|
||||
.setTotalNumCnfToBeTaken(totalNumCnfToBeTaken)
|
||||
.setQtaCnfToBeTaken(qtaCnfToBeTaken)
|
||||
.setTotalQtaAvailable(totalQtaAvailable)
|
||||
.setTotalNumCnfAvailable(totalNumCnfAvailable)
|
||||
.setQtaCnfAvailable(qtaCnfAvailable)
|
||||
.setPartitaMag(partitaMag)
|
||||
.setDataScad(dataScad)
|
||||
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
|
||||
@ -351,4 +376,16 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
|
||||
public void onRowSaved() {
|
||||
FBToast.successToast(getActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onMtbColrEdit(MtbColr mtbColr) {
|
||||
this.mViewModel.dispatchRowEdit(mtbColr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMtbColrDelete(MtbColr mtbColr) {
|
||||
this.mViewModel.deleteRow(mtbColr);
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
@ -345,13 +346,28 @@ public class PickingLiberoViewModel {
|
||||
|
||||
mColliMagazzinoRESTConsumer.saveCollo(clonedTestata, value -> {
|
||||
for (int i = 0; i < mtbColrObservableField.size(); i++) {
|
||||
MtbColr initialMtbColr = mtbColrObservableField.get(i);
|
||||
|
||||
mtbColrObservableField.get(i)
|
||||
initialMtbColr
|
||||
.setDataCollo(value.getDataColloS())
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo());
|
||||
|
||||
initialMtbColr.setRiga(value.getMtbColr().get(i).getRiga());
|
||||
|
||||
// for (int j = 0; j < value.getMtbColr().size(); j++) {
|
||||
// MtbColr savedMtbColr = value.getMtbColr().get(j);
|
||||
// if (savedMtbColr.getCodMart().equals(initialMtbColr.getCodMart()) &&
|
||||
// UtilityString.equalsIgnoreCase(savedMtbColr.getPartitaMag(), initialMtbColr.getPartitaMag()) &&
|
||||
// UtilityString.equalsIgnoreCase(savedMtbColr.getCodCol(), initialMtbColr.getCodCol()) &&
|
||||
// UtilityString.equalsIgnoreCase(savedMtbColr.getCodTagl(), initialMtbColr.getCodTagl()) &&
|
||||
// savedMtbColr.getQtaCol().equals(initialMtbColr.getQtaCol()) &&
|
||||
// savedMtbColr.getNumCnf().equals(initialMtbColr.getNumCnf())) {
|
||||
// initialMtbColr.setRiga(savedMtbColr.getRiga());
|
||||
// }
|
||||
// }
|
||||
|
||||
mCurrentMtbColt.getMtbColr().add(mtbColrObservableField.get(i));
|
||||
}
|
||||
|
||||
@ -475,6 +491,176 @@ public class PickingLiberoViewModel {
|
||||
}
|
||||
|
||||
|
||||
private void loadRifULFromMtbColr(MtbColr mtbColr, RunnableArgs<MtbColt> onComplete) {
|
||||
//Se ho dei riferimenti ad una UL devo leggere la QTA ancora disponibile sulla Ul
|
||||
if (mtbColr != null &&
|
||||
!UtilityString.isNullOrEmpty(mtbColr.getGestioneRif()) &&
|
||||
!UtilityString.isNullOrEmpty(mtbColr.getSerColloRif()) &&
|
||||
!UtilityString.isNullOrEmpty(mtbColr.getDataColloRifS()) &&
|
||||
mtbColr.getNumColloRif() != null) {
|
||||
|
||||
mColliMagazzinoRESTConsumer.getByChiaveCollo(
|
||||
mtbColr.getGestioneRifEnum(),
|
||||
mtbColr.getNumColloRif(),
|
||||
mtbColr.getDataColloRifS(),
|
||||
mtbColr.getSerColloRif(),
|
||||
true,
|
||||
false,
|
||||
onComplete,
|
||||
this::sendError);
|
||||
|
||||
} else {
|
||||
onComplete.run(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void dispatchRowEdit(MtbColr mtbColrToUpdate) {
|
||||
|
||||
final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
|
||||
.setMtbAart(mtbColrToUpdate.getMtbAart());
|
||||
|
||||
loadRifULFromMtbColr(mtbColrToUpdate, mtbColtRif -> {
|
||||
|
||||
|
||||
|
||||
BigDecimal totalQtaAvailable = null;
|
||||
BigDecimal totalNumCnfAvailable = null;
|
||||
BigDecimal qtaCnfAvailable = null;
|
||||
|
||||
List<MtbColr> mtbColrRifs = mtbColtRif != null &&
|
||||
mtbColtRif.getMtbColr() != null ? mtbColtRif.getMtbColr() : null;
|
||||
|
||||
MtbColr mtbColrRif = null;
|
||||
|
||||
if (mtbColrRifs != null && mtbColrRifs.size() > 0) {
|
||||
//TODO: Da capire se è necessario controllare anche il cod_jcom
|
||||
mtbColrRif = Stream.of(mtbColrRifs)
|
||||
.filter(x -> UtilityString.equalsIgnoreCase(x.getCodMart(), mtbColrToUpdate.getCodMart()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodCol(), mtbColrToUpdate.getCodCol()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getCodTagl(), mtbColrToUpdate.getCodTagl()) &&
|
||||
UtilityString.equalsIgnoreCase(x.getPartitaMag(), mtbColrToUpdate.getPartitaMag()))
|
||||
.single();
|
||||
}
|
||||
|
||||
|
||||
if (mtbColrRif != null) {
|
||||
|
||||
totalQtaAvailable = mtbColrRif.getQtaCol().add(mtbColrToUpdate.getQtaCol());
|
||||
totalNumCnfAvailable = mtbColrRif.getNumCnf().add(mtbColrToUpdate.getNumCnf());
|
||||
qtaCnfAvailable = mtbColrRif.getQtaCnf();
|
||||
|
||||
} else {
|
||||
|
||||
totalQtaAvailable = mtbColrToUpdate.getQtaCol();
|
||||
totalNumCnfAvailable = mtbColrToUpdate.getNumCnf();
|
||||
qtaCnfAvailable = mtbColrToUpdate.getQtaCnf();
|
||||
|
||||
}
|
||||
|
||||
this.sendOnItemDispatched(
|
||||
pickingObjectDTO,
|
||||
pickingObjectDTO.getMtbAart(),
|
||||
mtbColrToUpdate.getNumCnf(),
|
||||
mtbColrToUpdate.getQtaCnf(),
|
||||
mtbColrToUpdate.getQtaCol(),
|
||||
totalQtaAvailable,
|
||||
totalNumCnfAvailable,
|
||||
qtaCnfAvailable,
|
||||
mtbColrToUpdate.getPartitaMag(),
|
||||
mtbColrToUpdate.getDataScadPartitaD(),
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
(pickedQuantityDTO, shouldCloseLU) -> {
|
||||
|
||||
this.saveEditedRow(mtbColrToUpdate,
|
||||
pickedQuantityDTO.getNumCnf(),
|
||||
pickedQuantityDTO.getQtaCnf(),
|
||||
pickedQuantityDTO.getQtaTot(),
|
||||
pickedQuantityDTO.getPartitaMag(),
|
||||
pickedQuantityDTO.getDataScad(),
|
||||
shouldCloseLU);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
|
||||
MtbColt mtbColt = new MtbColt()
|
||||
.setNumCollo(mtbColrToUpdate.getNumCollo())
|
||||
.setDataCollo(mtbColrToUpdate.getDataColloS())
|
||||
.setSerCollo(mtbColrToUpdate.getSerCollo())
|
||||
.setGestione(mtbColrToUpdate.getGestione())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone();
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.UPDATE);
|
||||
mtbColr
|
||||
.setNumCnf(numCnf)
|
||||
.setQtaCnf(qtaCnf)
|
||||
.setQtaCol(qtaTot)
|
||||
.setPartitaMag(partitaMag)
|
||||
.setDataScadPartita(dataScad)
|
||||
.setUtente(SettingsManager.i().user.fullname)
|
||||
.setCausale(MtbColr.Causale.RETTIFICA)
|
||||
.setDatetimeRow(UtilityDate.getDateInstance());
|
||||
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||
|
||||
mtbColr.setNumCnf(numCnf)
|
||||
.setQtaCnf(qtaCnf)
|
||||
.setQtaCol(qtaTot);
|
||||
|
||||
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
||||
this.mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
this.sendOnRowSaved();
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
|
||||
|
||||
public void deleteRow(MtbColr mtbColrToDelete) {
|
||||
this.sendMtbColrDeleteRequest(shouldDelete -> {
|
||||
if (shouldDelete) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
MtbColt mtbColt = new MtbColt()
|
||||
.setNumCollo(mtbColrToDelete.getNumCollo())
|
||||
.setDataCollo(mtbColrToDelete.getDataColloS())
|
||||
.setSerCollo(mtbColrToDelete.getSerCollo())
|
||||
.setGestione(mtbColrToDelete.getGestione())
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone();
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.DELETE);
|
||||
mtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
|
||||
|
||||
this.sendOnRowSaved();
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
}, this::sendError);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void closeLU() {
|
||||
if (mCurrentMtbColt == null) return;
|
||||
|
||||
@ -528,12 +714,17 @@ public class PickingLiberoViewModel {
|
||||
if (this.mListener != null) mListener.onLUClosed();
|
||||
}
|
||||
|
||||
private void sendMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
|
||||
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
|
||||
}
|
||||
|
||||
private void sendLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort) {
|
||||
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
|
||||
}
|
||||
|
||||
private void sendArtSelectionRequest(List<MtbColr> mtbColrsToPick, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) {
|
||||
if (this.mListener != null) mListener.onArtSelectionRequest(mtbColrsToPick, onComplete, onAbort);
|
||||
if (this.mListener != null)
|
||||
mListener.onArtSelectionRequest(mtbColrsToPick, onComplete, onAbort);
|
||||
}
|
||||
|
||||
private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO,
|
||||
@ -541,9 +732,9 @@ public class PickingLiberoViewModel {
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
BigDecimal totalQtaToBeTaken,
|
||||
BigDecimal totalNumCnfToBeTaken,
|
||||
BigDecimal qtaCnfToBeTaken,
|
||||
BigDecimal totalQtaAvailable,
|
||||
BigDecimal totalNumCnfAvailable,
|
||||
BigDecimal qtaCnfAvailable,
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
boolean canOverflowOrderQuantity,
|
||||
@ -555,9 +746,9 @@ public class PickingLiberoViewModel {
|
||||
initialNumCnf,
|
||||
initialQtaCnf,
|
||||
initialQtaTot,
|
||||
totalQtaToBeTaken,
|
||||
totalNumCnfToBeTaken,
|
||||
qtaCnfToBeTaken,
|
||||
totalQtaAvailable,
|
||||
totalNumCnfAvailable,
|
||||
qtaCnfAvailable,
|
||||
partitaMag,
|
||||
dataScad,
|
||||
canOverflowOrderQuantity,
|
||||
@ -584,6 +775,8 @@ public class PickingLiberoViewModel {
|
||||
|
||||
void onLUClosed();
|
||||
|
||||
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
void onLUClienteRequired(RunnableArgs<VtbDest> onComplete, Runnable onAbort);
|
||||
@ -595,9 +788,9 @@ public class PickingLiberoViewModel {
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
BigDecimal totalQtaToBeTaken,
|
||||
BigDecimal totalNumCnfToBeTaken,
|
||||
BigDecimal qtaCnfToBeTaken,
|
||||
BigDecimal totalQtaAvailable,
|
||||
BigDecimal totalNumCnfAvailable,
|
||||
BigDecimal qtaCnfAvailable,
|
||||
String partitaMag,
|
||||
Date dataScad,
|
||||
boolean canOverflowOrderQuantity,
|
||||
|
||||
@ -83,7 +83,7 @@ public class PickingLiberoListAdapter extends ExtendedRecyclerView<MtbColr, Pick
|
||||
return this;
|
||||
}
|
||||
|
||||
interface OnItemClickListener {
|
||||
public interface OnItemClickListener {
|
||||
void onItemClick(MtbColr item);
|
||||
}
|
||||
|
||||
|
||||
@ -64,12 +64,12 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
|
||||
|
||||
public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment, RettificaGiacenzeViewModelNEW.Listener, BottomSheetMtbColrEditView.Listener {
|
||||
public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment, RettificaGiacenzeViewModel.Listener, BottomSheetMtbColrEditView.Listener {
|
||||
|
||||
private FragmentMainRettificaGiacenzeBinding mBinding = null;
|
||||
|
||||
@Inject
|
||||
RettificaGiacenzeViewModelNEW mViewModel;
|
||||
RettificaGiacenzeViewModel mViewModel;
|
||||
|
||||
public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false);
|
||||
public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(false);
|
||||
|
||||
@ -10,7 +10,6 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoViewModel;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer;
|
||||
|
||||
@Module(includes = {MainApplicationModule.class})
|
||||
@ -26,11 +25,11 @@ public class RettificaGiacenzeModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
RettificaGiacenzeViewModelNEW providesRettificaGiacenzeViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
RettificaGiacenzeViewModel providesRettificaGiacenzeViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
RettificaGiacenzeRESTConsumer rettificaGiacenzeRESTConsumer) {
|
||||
return new RettificaGiacenzeViewModelNEW(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer, rettificaGiacenzeRESTConsumer);
|
||||
return new RettificaGiacenzeViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer, rettificaGiacenzeRESTConsumer);
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,7 +43,7 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickDataDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
|
||||
public class RettificaGiacenzeViewModelNEW {
|
||||
public class RettificaGiacenzeViewModel {
|
||||
|
||||
public MtbColt mCurrentMtbColt = null;
|
||||
|
||||
@ -53,7 +53,7 @@ public class RettificaGiacenzeViewModelNEW {
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
private final RettificaGiacenzeRESTConsumer mRettificaGiacenzeRESTConsumer;
|
||||
|
||||
private RettificaGiacenzeViewModelNEW.Listener mListener;
|
||||
private RettificaGiacenzeViewModel.Listener mListener;
|
||||
|
||||
private String mCurrentUser;
|
||||
private String mDefaultCausale;
|
||||
@ -61,7 +61,7 @@ public class RettificaGiacenzeViewModelNEW {
|
||||
private boolean mIsCreatedLU;
|
||||
|
||||
@Inject
|
||||
public RettificaGiacenzeViewModelNEW(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
public RettificaGiacenzeViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
@ -101,7 +101,7 @@ public class RettificaGiacenzeViewModelNEW {
|
||||
}
|
||||
|
||||
|
||||
public RettificaGiacenzeViewModelNEW setListener(RettificaGiacenzeViewModelNEW.Listener listener) {
|
||||
public RettificaGiacenzeViewModel setListener(RettificaGiacenzeViewModel.Listener listener) {
|
||||
this.mListener = listener;
|
||||
return this;
|
||||
}
|
||||
@ -1,838 +0,0 @@
|
||||
package it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.res.Resources;
|
||||
import android.text.SpannableString;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
import com.tfb.fbtoast.FBToast;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.barcode_base_android_library.model.BarcodeType;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
||||
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
|
||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbCols;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||
import it.integry.integrywmsnative.core.rest.CommonRESTException;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
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.FragmentMainRettificaGiacenzeBinding;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.AutoCompleteFornitoreAdapter;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.RettificaGiacenzeMainListAdapter;
|
||||
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogCommon;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
|
||||
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
|
||||
|
||||
public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr> {
|
||||
|
||||
private Activity mContext;
|
||||
private FragmentMainRettificaGiacenzeBinding mBinding;
|
||||
|
||||
private BottomSheetBehavior mBottomSheetBehavior;
|
||||
|
||||
private RettificaGiacenzeHelper mHelper;
|
||||
private RettificaGiacenzeMainListAdapter mAdapter;
|
||||
|
||||
public ObservableField<MtbColt> mtbColt = new ObservableField<>();
|
||||
public BindableBoolean isFabVisible = new BindableBoolean();
|
||||
public BindableBoolean isMtbColtLoaded = new BindableBoolean();
|
||||
|
||||
private boolean isCreatedLU = true;
|
||||
|
||||
|
||||
public void init(Activity context, FragmentMainRettificaGiacenzeBinding binding, RettificaGiacenzeHelper helper) {
|
||||
mContext = context;
|
||||
mBinding = binding;
|
||||
mHelper = helper;
|
||||
}
|
||||
|
||||
public void setMtbColt(MtbColt mtbColt, boolean isCreated) {
|
||||
this.mtbColt.set(mtbColt);
|
||||
this.isCreatedLU = isCreated;
|
||||
|
||||
isFabVisible.set(mtbColt != null);
|
||||
isMtbColtLoaded.set(mtbColt != null);
|
||||
|
||||
if (this.mtbColt.get().getMtbColr() == null)
|
||||
this.mtbColt.get().setMtbColr(new ObservableArrayList<>());
|
||||
else {
|
||||
ObservableArrayList<MtbColr> mtbColrList = this.mtbColt.get().getMtbColr();
|
||||
|
||||
for (int i = 0; i < mtbColrList.size(); i++) {
|
||||
if (mtbColrList.get(i).getQtaCol() == null || mtbColrList.get(i).getQtaCol().floatValue() < 0) {
|
||||
mtbColrList.remove(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
initRecyclerView();
|
||||
initBottomSheetActions();
|
||||
}
|
||||
|
||||
public void resetMtbColt(boolean openNew) {
|
||||
this.mtbColt.set(null);
|
||||
isFabVisible.set(false);
|
||||
isMtbColtLoaded.set(false);
|
||||
mBinding.rettificaGiacenzeMainList.setAdapter(null);
|
||||
|
||||
((IPoppableActivity) mContext).pop();
|
||||
}
|
||||
|
||||
|
||||
private void initRecyclerView() {
|
||||
mBinding.rettificaGiacenzeMainList.setNestedScrollingEnabled(false);
|
||||
|
||||
mBinding.rettificaGiacenzeMainList.setHasFixedSize(true);
|
||||
|
||||
mBinding.rettificaGiacenzeMainList.setLayoutManager(new LinearLayoutManager(mContext));
|
||||
|
||||
DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL);
|
||||
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
|
||||
mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator);
|
||||
|
||||
// mAdapter = new RettificaGiacenzeMainListAdapter(mContext, mtbColt.get().getMtbColr(), this, mBinding.rettificaGiacenzeEmptyView);
|
||||
// mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private void initBottomSheetActions() {
|
||||
// mBinding.bg.setOnClickListener(v -> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED));
|
||||
|
||||
// mBottomSheetBehavior = BottomSheetBehavior.from(mBinding.bottomSheetActions);
|
||||
|
||||
// mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
|
||||
// @Override
|
||||
// public void onStateChanged(@NonNull View bottomSheet, int newState) {
|
||||
// if (newState == BottomSheetBehavior.STATE_COLLAPSED)
|
||||
// mBinding.bg.setVisibility(View.GONE);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onSlide(@NonNull View bottomSheet, float slideOffset) {
|
||||
// mBinding.bg.setVisibility(View.VISIBLE);
|
||||
// mBinding.bg.setAlpha(slideOffset);
|
||||
// }
|
||||
// });
|
||||
}
|
||||
|
||||
public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||
|
||||
BarcodeManager.disable();
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
if (data.getType() == BarcodeType.EAN8 || data.getType() == BarcodeType.EAN13 || data.getType() == BarcodeType.UPCA) {
|
||||
searchArtInt(data.getStringValue(), progressDialog);
|
||||
} else if (UtilityBarcode.isEtichetta128(data)) {
|
||||
this.executeEtichettaEan128(data, progressDialog);
|
||||
} else {
|
||||
BarcodeManager.enable();
|
||||
progressDialog.dismiss();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) {
|
||||
BarcodeRESTConsumer.decodeEan128Static(barcodeScanDTO, ean128Model -> {
|
||||
|
||||
String barcodeProd = null;
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
|
||||
barcodeProd = ean128Model.Content;
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
|
||||
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
|
||||
barcodeProd = barcodeProd.substring(1, barcodeProd.length());
|
||||
}
|
||||
this.loadBarcodeArticolo(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 loadBarcodeArticolo(String barcodeProd, Ean128Model ean128Model, Dialog progressDialog) {
|
||||
if (barcodeProd.length() == 14) {
|
||||
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
|
||||
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
||||
}
|
||||
|
||||
ArticoloRESTConsumer.getByBarcodeProdStatic(barcodeProd, mtbAartList -> {
|
||||
|
||||
if (mtbAartList != null && mtbAartList.size() > 0) {
|
||||
|
||||
this.dispatchArt(mtbAartList.get(0), ean128Model);
|
||||
|
||||
BarcodeManager.enable();
|
||||
progressDialog.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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void setupSearchFornitori(ArrayList<FornitoreDTO> listaFornitori) {
|
||||
AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(mContext, listaFornitori);
|
||||
mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter);
|
||||
mBinding.autoCompleteFornitori.setDropDownWidth(mContext.getResources().getDisplayMetrics().widthPixels);
|
||||
|
||||
mBinding.inputCodArtDescrForn.setOnEditorActionListener((v, actionId, event) -> {
|
||||
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
||||
resetAllError();
|
||||
if (UtilityString.isNullOrEmpty(mBinding.autoCompleteFornitori.getText().toString())) {
|
||||
setError(mBinding.autoCompleteFornitoriLayout, mContext.getResources().getText(R.string.error).toString());
|
||||
return true;
|
||||
}
|
||||
|
||||
if (UtilityString.isNullOrEmpty(mBinding.inputCodArtDescrForn.getText().toString())) {
|
||||
setError(mBinding.layoutCodArtDescrForn, mContext.getResources().getText(R.string.error).toString());
|
||||
return true;
|
||||
}
|
||||
|
||||
searchArtFor(
|
||||
mBinding.autoCompleteFornitori.getText().toString(),
|
||||
mBinding.inputCodArtDescrForn.getText().toString());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
mBinding.inputCodArtDescrInt.setOnEditorActionListener((v, actionId, event) -> {
|
||||
if (actionId == EditorInfo.IME_ACTION_DONE) {
|
||||
resetAllError();
|
||||
|
||||
if (UtilityString.isNullOrEmpty(mBinding.inputCodArtDescrInt.getText().toString())) {
|
||||
setError(mBinding.layoutCodArtDescrInt, mContext.getResources().getText(R.string.error).toString());
|
||||
return true;
|
||||
}
|
||||
|
||||
searchArtInt(mBinding.inputCodArtDescrInt.getText().toString(), UtilityProgress.createDefaultProgressDialog(mContext));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void setError(TextInputLayout textInputLayout, String message) {
|
||||
textInputLayout.setErrorEnabled(true);
|
||||
textInputLayout.setError(message);
|
||||
textInputLayout.setErrorIconDrawable(null);
|
||||
}
|
||||
|
||||
private void resetAllError() {
|
||||
resetError(mBinding.autoCompleteFornitoriLayout);
|
||||
resetError(mBinding.layoutCodArtDescrForn);
|
||||
resetError(mBinding.layoutCodArtDescrInt);
|
||||
}
|
||||
|
||||
private void resetTexts() {
|
||||
//mBinding.autoCompleteFornitori.setText("");
|
||||
mBinding.inputCodArtDescrForn.setText("");
|
||||
mBinding.inputCodArtDescrInt.setText("");
|
||||
}
|
||||
|
||||
private void resetError(TextInputLayout textInputLayout) {
|
||||
textInputLayout.setErrorEnabled(false);
|
||||
textInputLayout.setError(null);
|
||||
}
|
||||
|
||||
private void searchArtFor(String codAlis, String queryText) {
|
||||
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
//progressDialog.show();
|
||||
|
||||
mHelper.searchArtForn(codAlis, queryText, listaArts -> {
|
||||
progressDialog.dismiss();
|
||||
|
||||
List<MtbAart> mtbAarts = Stream.of(listaArts).map(x -> (MtbAart) x).toList();
|
||||
|
||||
dispatchArtsList(mtbAarts);
|
||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog));
|
||||
}
|
||||
|
||||
private void searchArtInt(String queryText, Dialog progressDialog) {
|
||||
//progressDialog.show();
|
||||
|
||||
mHelper.searchArtInt(queryText, listaArts -> {
|
||||
progressDialog.dismiss();
|
||||
BarcodeManager.enable();
|
||||
dispatchArtsList(listaArts);
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void dispatchArtsList(List<MtbAart> articoloFornitoreDTOS) {
|
||||
|
||||
if (articoloFornitoreDTOS != null) {
|
||||
if (articoloFornitoreDTOS.size() == 0) {
|
||||
showNoArtsFound();
|
||||
} else if (articoloFornitoreDTOS.size() == 1) {
|
||||
dispatchArt(articoloFornitoreDTOS.get(0), null);
|
||||
} else {
|
||||
DialogChooseArtFromListaArts.make(mContext, articoloFornitoreDTOS, mtbAart -> this.dispatchArt(mtbAart, null)).show();
|
||||
}
|
||||
} else {
|
||||
showNoArtsFound();
|
||||
}
|
||||
}
|
||||
|
||||
private void showNoArtsFound() {
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
||||
new SpannableString(mContext.getResources().getText(R.string.no_items_found_message)),
|
||||
null, null).show();
|
||||
}
|
||||
|
||||
|
||||
private void dispatchArt(MtbAart mtbAart, Ean128Model ean128Model) {
|
||||
DialogInputQuantity.DTO qtaDto = new DialogInputQuantity.DTO();
|
||||
|
||||
qtaDto.setMtbAart(mtbAart);
|
||||
|
||||
qtaDto.setQtaCnf(mtbAart.getQtaCnf());
|
||||
qtaDto.setNumCnf(1);
|
||||
qtaDto.setQtaTot(mtbAart.getQtaCnf());
|
||||
|
||||
qtaDto.setQtaDaEvadere(new BigDecimal(-1));
|
||||
qtaDto.setQtaDisponibile(new BigDecimal(-1));
|
||||
|
||||
qtaDto.setCanPartitaMagBeChanged(true);
|
||||
qtaDto.setCanDataScadBeChanged(true);
|
||||
|
||||
|
||||
if (ean128Model != null) {
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
|
||||
qtaDto.setBatchLot(ean128Model.BatchLot);
|
||||
qtaDto.setCanPartitaMagBeChanged(false);
|
||||
}
|
||||
|
||||
try {
|
||||
if (!UtilityString.isNullOrEmpty(ean128Model.BestBefore)) {
|
||||
qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore));
|
||||
qtaDto.setCanDataScadBeChanged(false);
|
||||
} else if (!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
|
||||
qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry));
|
||||
qtaDto.setCanDataScadBeChanged(false);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
UtilityLogger.errorMe(e);
|
||||
}
|
||||
|
||||
|
||||
if (ean128Model.Count != null && ean128Model.Count > 0) {
|
||||
qtaDto.setNumCnf(ean128Model.Count);
|
||||
}
|
||||
|
||||
if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
|
||||
qtaDto.setQtaTot(new BigDecimal(ean128Model.NetWeightKg));
|
||||
} else {
|
||||
qtaDto.setQtaTot(qtaDto.getQtaCnf().multiply(new BigDecimal(qtaDto.getNumCnf())));
|
||||
}
|
||||
|
||||
|
||||
qtaDto.setShouldAskDataScad(true);
|
||||
}
|
||||
|
||||
|
||||
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
|
||||
onPostDispatch(mtbAart, quantityDTO);
|
||||
}, null).show();
|
||||
}
|
||||
|
||||
|
||||
private void onPostDispatch(MtbAart mtbAart, QuantityDTO quantityDTO) {
|
||||
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
.setCodMart(mtbAart.getCodMart())
|
||||
.setPartitaMag(quantityDTO.batchLot.get())
|
||||
.setDataScadPartita(quantityDTO.expireDate)
|
||||
.setDescrizione(mtbAart.getDescrizioneEstesa())
|
||||
.setCausale(MtbColr.Causale.RETTIFICA)
|
||||
.setUtente(SettingsManager.i().user.fullname);
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
if (!isCreatedLU) {
|
||||
mtbColr
|
||||
.setQtaCol(BigDecimal.ZERO)
|
||||
.setNumCnf(BigDecimal.ZERO)
|
||||
.setDataCollo(mtbColt.get().getDataColloS())
|
||||
.setNumCollo(mtbColt.get().getNumCollo())
|
||||
.setGestione(mtbColt.get().getGestione())
|
||||
.setSerCollo(mtbColt.get().getSerCollo());
|
||||
|
||||
ColliMagazzinoRESTConsumer.creaRettificaColloStatic(mtbColr,
|
||||
quantityDTO.numCnf.getBigDecimal(),
|
||||
quantityDTO.qtaTot.getBigDecimal(),
|
||||
() -> {
|
||||
mtbColr.setUntMis(mtbAart.getUntMis())
|
||||
.setMtbAart(mtbAart);
|
||||
|
||||
mtbColt.get().getMtbColr().add(mtbColr);
|
||||
FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
resetTexts();
|
||||
progress.dismiss();
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progress);
|
||||
});
|
||||
} else {
|
||||
mtbColr
|
||||
.setQtaCol(quantityDTO.qtaTot.getBigDecimal())
|
||||
.setNumCnf(quantityDTO.numCnf.getBigDecimal());
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) mtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {
|
||||
@Override
|
||||
public void onSuccess(MtbColt value) {
|
||||
|
||||
mtbColr
|
||||
.setDataCollo(value.getDataColloS())
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setUntMis(mtbAart.getUntMis())
|
||||
.setMtbAart(mtbAart);
|
||||
|
||||
mtbColt.get().getMtbColr().add(mtbColr);
|
||||
|
||||
FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
resetTexts();
|
||||
progress.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
UtilityExceptions.defaultException(mContext, ex, progress);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onItemClick(MtbColr item, int position) {
|
||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
|
||||
|
||||
MtbColr clickedItem = mtbColt.get().getMtbColr().get(position);
|
||||
|
||||
// mBinding.bottomSheetActionsTitle.setText(clickedItem.getDescrizione());
|
||||
// mBinding.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart());
|
||||
//
|
||||
// mBinding.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(item, position));
|
||||
// mBinding.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(item));
|
||||
//
|
||||
// mBinding.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getMtbAart().getUntMis());
|
||||
}
|
||||
|
||||
public void openLU() {
|
||||
DialogScanOrCreateLU.make(mContext, true, false, (mtbColt, created) -> {
|
||||
if (mtbColt == null) {
|
||||
((IPoppableActivity) mContext).pop();
|
||||
} else {
|
||||
setMtbColt(mtbColt, created);
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
public boolean thereIsAnOpenedUL() {
|
||||
return mtbColt.get() != null;
|
||||
}
|
||||
|
||||
public boolean thereIsAnyRowInUL() {
|
||||
return mtbColt.get() != null &&
|
||||
mtbColt.get().getMtbColr() != null &&
|
||||
mtbColt.get().getMtbColr().size() > 0;
|
||||
}
|
||||
|
||||
public void closeLU(boolean openNewOne, boolean saveCausale) {
|
||||
|
||||
if (thereIsAnOpenedUL()) {
|
||||
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
if (thereIsAnyRowInUL()) {
|
||||
|
||||
if (!UtilityString.isNullOrEmpty(SettingsManager.iDB().getDefaultCausaleRettificaGiacenze()) && saveCausale) {
|
||||
saveCausaleRettificaGiacenze(progress, () -> {
|
||||
posizionaCollo(() -> postSaveOperations(openNewOne, progress),
|
||||
() -> {
|
||||
progress.dismiss();
|
||||
resetMtbColt(openNewOne);
|
||||
},
|
||||
ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
||||
});
|
||||
|
||||
|
||||
} else {
|
||||
posizionaCollo(() -> {
|
||||
postSaveOperations(openNewOne, progress);
|
||||
}, () -> {
|
||||
progress.dismiss();
|
||||
resetMtbColt(openNewOne);
|
||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
||||
}
|
||||
} else {
|
||||
|
||||
// ColliMagazzinoRESTConsumer.deleteCollo(mtbColt.get(), () -> {
|
||||
progress.dismiss();
|
||||
resetMtbColt(openNewOne);
|
||||
// }, ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void postSaveOperations(boolean openNewOne, Dialog progressDialog) {
|
||||
if (!mtbColt.get().getDisablePrint()) {
|
||||
printCollo(progressDialog);
|
||||
} else {
|
||||
progressDialog.dismiss();
|
||||
resetMtbColt(openNewOne);
|
||||
}
|
||||
}
|
||||
|
||||
private void saveCausaleRettificaGiacenze(Dialog progress, Runnable onComplete) {
|
||||
|
||||
final MtbCols mtbCols = new MtbCols()
|
||||
.setCausale(SettingsManager.iDB().getDefaultCausaleRettificaGiacenze());
|
||||
mtbCols.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) mtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
cloneMtbColt.setMtbCols(new ArrayList<>());
|
||||
cloneMtbColt.getMtbCols().add(mtbCols);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, mtbColt -> onComplete.run(), ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progress);
|
||||
DialogCommon.showRestError(mContext, ex, onComplete::run);
|
||||
});
|
||||
}
|
||||
|
||||
private void posizionaCollo(Runnable onComplete, Runnable onAbort, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
DialogYesNo.make(mContext, "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> {
|
||||
|
||||
switch (result) {
|
||||
case YES:
|
||||
DialogAskPositionOfLU.makeBase(mContext, mtbColt.get(), false, (status, mtbDepoPosizione) -> {
|
||||
if (status == DialogConsts.Results.ABORT) {
|
||||
onAbort.run();
|
||||
} else {
|
||||
if (mtbDepoPosizione != null && mtbColt.get() != null) {
|
||||
Objects.requireNonNull(mtbColt.get()).setPosizione(mtbDepoPosizione.getPosizione());
|
||||
onComplete.run();
|
||||
} else {
|
||||
onAbort.run();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}, onFailed).show();
|
||||
break;
|
||||
|
||||
case NO:
|
||||
onAbort.run();
|
||||
break;
|
||||
}
|
||||
|
||||
}).show();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void onItemEdit(MtbColr mtbColrToEdit, int index) {
|
||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
||||
|
||||
MtbColr mtbColrToEditClone = (MtbColr) mtbColrToEdit.clone();
|
||||
|
||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||
.setBatchLot(mtbColrToEditClone.getPartitaMag())
|
||||
.setQtaDaEvadere(null)
|
||||
.setQtaOrd(null)
|
||||
.setQtaDisponibile(new BigDecimal(-1))
|
||||
.setMtbAart(mtbColrToEditClone.getMtbAart())
|
||||
.setCanPartitaMagBeChanged(false)
|
||||
.setQtaTot(mtbColrToEditClone.getQtaCol())
|
||||
.setQtaCnf(mtbColrToEditClone.getQtaCnf())
|
||||
.setNumCnf(mtbColrToEditClone.getNumCnf().intValue());
|
||||
|
||||
DialogInputQuantity.makeBase(mContext, dto, true, value -> {
|
||||
|
||||
BigDecimal newQtaCol = value.qtaTot.getBigDecimal(); //.subtract(mtbColrToEditClone.getQtaCol());
|
||||
BigDecimal newNumCnf = value.numCnf.getBigDecimal(); //.subtract(mtbColrToEditClone.getNumCnf());
|
||||
|
||||
if (newQtaCol.compareTo(BigDecimal.ZERO) != 0) {
|
||||
if (newNumCnf.compareTo(BigDecimal.ZERO) == 0 && newQtaCol.compareTo(BigDecimal.ZERO) > 0)
|
||||
newNumCnf = BigDecimal.ONE;
|
||||
else if (newNumCnf.compareTo(BigDecimal.ZERO) == 0 && newQtaCol.compareTo(BigDecimal.ZERO) < 0)
|
||||
newNumCnf = new BigDecimal(-1);
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
mtbColrToEditClone
|
||||
.setRiga(null);
|
||||
|
||||
|
||||
if (!isCreatedLU) {
|
||||
BigDecimal finalNewNumCnf = newNumCnf;
|
||||
ColliMagazzinoRESTConsumer.creaRettificaColloStatic(
|
||||
mtbColrToEditClone,
|
||||
newNumCnf,
|
||||
newQtaCol,
|
||||
() -> {
|
||||
progressDialog.dismiss();
|
||||
mtbColt.get().getMtbColr().remove(index);
|
||||
|
||||
mtbColrToEditClone
|
||||
.setQtaCol(newQtaCol)
|
||||
.setNumCnf(finalNewNumCnf)
|
||||
.setMtbAart(mtbColrToEdit.getMtbAart())
|
||||
.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
mtbColt.get().getMtbColr().add(index, mtbColrToEditClone);
|
||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog)
|
||||
);
|
||||
} else {
|
||||
|
||||
mtbColrToEditClone
|
||||
.setRiga(null)
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
.setQtaCol(newQtaCol)
|
||||
.setNumCnf(newNumCnf)
|
||||
.setUtente(SettingsManager.i().user.fullname)
|
||||
.setCausale(MtbColr.Causale.RETTIFICA)
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
|
||||
MtbColt mtbColtClone = (MtbColt) mtbColt.get().clone();
|
||||
mtbColtClone.setMtbColr(new ObservableArrayList<>());
|
||||
mtbColtClone.getMtbColr().add(mtbColrToEditClone);
|
||||
mtbColtClone.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtClone, valueNewMtbColt -> {
|
||||
progressDialog.dismiss();
|
||||
mtbColt.get().getMtbColr().remove(index);
|
||||
|
||||
mtbColrToEditClone
|
||||
.setQtaCol(value.qtaTot.getBigDecimal())
|
||||
.setNumCnf(value.numCnf.getBigDecimal())
|
||||
.setMtbAart(mtbColrToEdit.getMtbAart())
|
||||
.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
mtbColt.get().getMtbColr().add(index, mtbColrToEditClone);
|
||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog));
|
||||
}
|
||||
}
|
||||
|
||||
}, null).show();
|
||||
|
||||
}
|
||||
|
||||
private void onItemDelete(MtbColr mtbColrToDelete) {
|
||||
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
|
||||
|
||||
MtbColr mtbColrToDeleteClone = (MtbColr) mtbColrToDelete.clone();
|
||||
|
||||
mtbColrToDeleteClone
|
||||
.setRiga(null)
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
.setUtente(SettingsManager.i().user.fullname)
|
||||
.setCausale(MtbColr.Causale.RETTIFICA)
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT);
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
||||
|
||||
|
||||
if (!isCreatedLU) {
|
||||
ColliMagazzinoRESTConsumer.creaRettificaColloStatic(
|
||||
mtbColrToDeleteClone,
|
||||
BigDecimal.ZERO,
|
||||
BigDecimal.ZERO,
|
||||
() -> {
|
||||
progressDialog.dismiss();
|
||||
mtbColt.get().getMtbColr().remove(mtbColrToDelete);
|
||||
}, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog)
|
||||
);
|
||||
} else {
|
||||
|
||||
mtbColrToDeleteClone
|
||||
.setQtaCol(mtbColrToDeleteClone.getQtaCol().multiply(new BigDecimal(-1)));
|
||||
|
||||
MtbColt mtbColtClone = (MtbColt) mtbColt.get().clone();
|
||||
mtbColtClone.setMtbColr(new ObservableArrayList<>());
|
||||
mtbColtClone.getMtbColr().add(mtbColrToDeleteClone);
|
||||
mtbColtClone.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtClone, value -> {
|
||||
progressDialog.dismiss();
|
||||
mtbColt.get().getMtbColr().remove(mtbColrToDelete);
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void printCollo(Dialog progress) {
|
||||
|
||||
this.showAskPrint(shouldPrint -> {
|
||||
|
||||
if (shouldPrint) {
|
||||
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), value -> {
|
||||
|
||||
if (value.size() > 0) {
|
||||
|
||||
try {
|
||||
ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum(), reportName -> {
|
||||
|
||||
PrinterRESTConsumer.printColloStatic(value.get(0),
|
||||
mtbColt.get(),
|
||||
1,
|
||||
reportName,
|
||||
() -> {
|
||||
progress.dismiss();
|
||||
resetMtbColt(true);
|
||||
|
||||
Resources res = mContext.getResources();
|
||||
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
|
||||
DialogSimpleMessageHelper.makeSuccessDialog(mContext, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
|
||||
}, ex -> {
|
||||
UtilityLogger.errorMe(ex);
|
||||
progress.dismiss();
|
||||
showPrintErrorDialog(ex.getMessage());
|
||||
});
|
||||
|
||||
}, ex -> {
|
||||
UtilityLogger.errorMe(ex);
|
||||
progress.dismiss();
|
||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||
showPrintErrorDialog(errorMessage);
|
||||
});
|
||||
} catch (Exception ex) {
|
||||
progress.dismiss();
|
||||
UtilityLogger.errorMe(ex);
|
||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||
showPrintErrorDialog(errorMessage);
|
||||
}
|
||||
|
||||
} else {
|
||||
progress.dismiss();
|
||||
String errorMessage = "Nessuna stampante configurata";
|
||||
showPrintErrorDialog(errorMessage);
|
||||
}
|
||||
}, ex -> {
|
||||
progress.dismiss();
|
||||
UtilityLogger.errorMe(ex);
|
||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||
showPrintErrorDialog(errorMessage);
|
||||
});
|
||||
} else {
|
||||
progress.dismiss();
|
||||
resetMtbColt(true);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void showAskPrint(RunnableArgs<Boolean> onComplete) {
|
||||
DialogSimpleMessageHelper.makeInfoDialog(
|
||||
mContext,
|
||||
mContext.getResources().getString(R.string.action_print_ul),
|
||||
new SpannableString(mContext.getResources().getString(R.string.ask_print_message)),
|
||||
null,
|
||||
() -> onComplete.run(true),
|
||||
() -> onComplete.run(false)).show();
|
||||
}
|
||||
|
||||
private void showPrintErrorDialog(String message) {
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
mContext,
|
||||
new SpannableString(message),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
() -> resetMtbColt(true)).show();
|
||||
}
|
||||
}
|
||||
@ -1024,7 +1024,6 @@ public class SpedizioneViewModel {
|
||||
pickedQuantityDTO.getDataScad(),
|
||||
shouldCloseLU);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
|
||||
<variable
|
||||
name="viewmodel"
|
||||
type="it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeViewModelNEW" />
|
||||
type="it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeViewModel" />
|
||||
</data>
|
||||
|
||||
<FrameLayout
|
||||
@ -341,141 +341,6 @@
|
||||
app:behavior_peekHeight="0dp"
|
||||
app:layout_behavior=".view.bottom_sheet__base.AutoCloseBottomSheetBehavior" />
|
||||
|
||||
<!-- <LinearLayout-->
|
||||
<!-- android:id="@+id/bottom_sheet_actions"-->
|
||||
<!-- android:layout_width="match_parent"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_gravity="bottom"-->
|
||||
<!-- android:background="#fff"-->
|
||||
<!-- android:orientation="vertical"-->
|
||||
<!-- android:padding="16dp"-->
|
||||
<!-- app:behavior_hideable="true"-->
|
||||
<!-- app:behavior_peekHeight="0dp"-->
|
||||
<!-- app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">-->
|
||||
|
||||
<!-- <androidx.constraintlayout.widget.ConstraintLayout-->
|
||||
<!-- android:layout_width="match_parent"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_gravity="center_vertical"-->
|
||||
<!-- android:orientation="horizontal">-->
|
||||
|
||||
<!-- <LinearLayout-->
|
||||
<!-- android:layout_width="0dp"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:layout_marginBottom="8dp"-->
|
||||
<!-- android:orientation="vertical"-->
|
||||
<!-- app:layout_constraintEnd_toStartOf="@id/bottom_sheet_actions_quantity"-->
|
||||
<!-- app:layout_constraintStart_toStartOf="parent"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent">-->
|
||||
|
||||
<!-- <androidx.appcompat.widget.AppCompatTextView-->
|
||||
<!-- android:id="@+id/bottom_sheet_actions_title"-->
|
||||
<!-- style="@style/AppTheme.NewMaterial.Text.Medium"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:ellipsize="end"-->
|
||||
<!-- android:maxLines="2"-->
|
||||
<!-- android:paddingStart="0dp"-->
|
||||
<!-- android:paddingEnd="8dp"-->
|
||||
<!-- android:textColor="#444"-->
|
||||
<!-- android:textStyle="bold"-->
|
||||
<!-- tools:text="Descrizione articolo" />-->
|
||||
|
||||
<!-- <androidx.appcompat.widget.AppCompatTextView-->
|
||||
<!-- android:id="@+id/bottom_sheet_actions_subtitle"-->
|
||||
<!-- style="@style/AppTheme.NewMaterial.Text.Small"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- tools:text="ABF52IL" />-->
|
||||
|
||||
<!-- </LinearLayout>-->
|
||||
|
||||
<!-- <TextView-->
|
||||
<!-- android:id="@+id/bottom_sheet_actions_quantity"-->
|
||||
<!-- style="@style/AppTheme.NewMaterial.Text.Small"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:gravity="end"-->
|
||||
<!-- android:textStyle="bold"-->
|
||||
<!-- app:layout_constraintEnd_toEndOf="parent"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
||||
<!-- tools:text="250 PZ" />-->
|
||||
<!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
|
||||
|
||||
<!-- <androidx.constraintlayout.widget.ConstraintLayout-->
|
||||
<!-- android:layout_width="match_parent"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:orientation="horizontal">-->
|
||||
|
||||
|
||||
<!-- <androidx.constraintlayout.widget.Guideline-->
|
||||
<!-- android:id="@+id/guideline_action"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:orientation="vertical"-->
|
||||
<!-- app:layout_constraintGuide_percent="0.50" />-->
|
||||
|
||||
<!-- <LinearLayout-->
|
||||
<!-- android:layout_width="0dp"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:gravity="center"-->
|
||||
<!-- android:orientation="vertical"-->
|
||||
<!-- app:layout_constraintEnd_toStartOf="@id/guideline_action"-->
|
||||
<!-- app:layout_constraintStart_toStartOf="parent"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent">-->
|
||||
|
||||
<!-- <androidx.appcompat.widget.AppCompatImageButton-->
|
||||
<!-- android:id="@+id/bottom_sheet_actions_edit_btn"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:background="@android:color/white"-->
|
||||
<!-- android:padding="16dp"-->
|
||||
<!-- android:scaleX="1.5"-->
|
||||
<!-- android:scaleY="1.5"-->
|
||||
<!-- android:src="@drawable/ic_edit_24dp"-->
|
||||
<!-- android:tint="@color/green_600" />-->
|
||||
|
||||
<!-- <androidx.appcompat.widget.AppCompatTextView-->
|
||||
<!-- style="@style/AppTheme.NewMaterial.Text.Small"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:text="@string/edit" />-->
|
||||
|
||||
<!-- </LinearLayout>-->
|
||||
|
||||
<!-- <LinearLayout-->
|
||||
<!-- android:layout_width="0dp"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:gravity="center"-->
|
||||
<!-- android:orientation="vertical"-->
|
||||
<!-- app:layout_constraintEnd_toEndOf="parent"-->
|
||||
<!-- app:layout_constraintStart_toStartOf="@id/guideline_action"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent">-->
|
||||
|
||||
<!-- <androidx.appcompat.widget.AppCompatImageButton-->
|
||||
<!-- android:id="@+id/bottom_sheet_actions_delete_btn"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:background="@android:color/white"-->
|
||||
<!-- android:padding="16dp"-->
|
||||
<!-- android:scaleX="1.5"-->
|
||||
<!-- android:scaleY="1.5"-->
|
||||
<!-- android:src="@drawable/ic_delete_24dp"-->
|
||||
<!-- android:tint="@color/red_600" />-->
|
||||
|
||||
<!-- <androidx.appcompat.widget.AppCompatTextView-->
|
||||
<!-- style="@style/AppTheme.NewMaterial.Text.Small"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="wrap_content"-->
|
||||
<!-- android:text="@string/delete" />-->
|
||||
|
||||
<!-- </LinearLayout>-->
|
||||
|
||||
<!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
|
||||
|
||||
|
||||
<!-- </LinearLayout>-->
|
||||
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
|
||||
@ -135,112 +135,20 @@
|
||||
fab:fab_colorRipple="#66FFFFFF"/>
|
||||
|
||||
|
||||
|
||||
<View
|
||||
android:visibility="gone"
|
||||
android:id="@+id/bg"
|
||||
android:background="#99000000"
|
||||
android:id="@+id/bottom_sheet__mtb_colr_edit__background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
android:layout_height="match_parent"
|
||||
android:background="#99000000"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_sheet_actions"
|
||||
<it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView
|
||||
android:id="@+id/bottom_sheet__mtb_colr_edit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#fff"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp"
|
||||
android:layout_gravity="bottom"
|
||||
app:behavior_hideable="true"
|
||||
app:behavior_peekHeight="0dp"
|
||||
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_gravity="center_vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/bottom_sheet_actions_quantity"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/bottom_sheet_actions_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="Descrizione articolo"
|
||||
android:textColor="#444"
|
||||
android:textSize="18sp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:paddingEnd="8dp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/bottom_sheet_actions_subtitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="ABF52IL"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bottom_sheet_actions_quantity"
|
||||
android:layout_width="wrap_content"
|
||||
android:gravity="end"
|
||||
android:layout_height="wrap_content"
|
||||
android:textStyle="bold"
|
||||
android:textSize="15sp"
|
||||
tools:text="250 PZ"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:gravity="center">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageButton
|
||||
android:id="@+id/bottom_sheet_actions_delete_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:background="@android:color/white"
|
||||
android:scaleX="1.5"
|
||||
android:scaleY="1.5"
|
||||
android:src="@drawable/ic_delete_24dp"
|
||||
android:tint="@color/red_600" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/delete"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
app:layout_behavior=".view.bottom_sheet__base.AutoCloseBottomSheetBehavior" />
|
||||
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user