diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index 9503f75c..da604c82 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -59,6 +59,7 @@ public class MtbColt extends EntityBase { public List mtbCols; private Boolean disablePrint; + private String ragSocCliente; public void generaFiltroOrdine() throws Exception { @@ -100,11 +101,13 @@ public class MtbColt extends EntityBase { setSerCollo("/"); } - public void initDefaultFields() { + public MtbColt initDefaultFields() { setCodMdep(SettingsManager.i().userSession.depo.getCodMdep()); setPreparatoDa(SettingsManager.i().user.fullname); setOraInizPrep(UtilityDate.getDateInstance()); setCodAnag(SettingsManager.iDB().getDefaultCodAnag()); + + return this; } @@ -470,6 +473,15 @@ public class MtbColt extends EntityBase { return this; } + public String getRagSocCliente() { + return ragSocCliente; + } + + public MtbColt setRagSocCliente(String ragSocCliente) { + this.ragSocCliente = ragSocCliente; + return this; + } + public void generaFiltroOrdineFromDTO(List filtroOrdineDtos) { String xmlPrefix = "{\"whereCond\": \""; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java index 606f094d..54b9bec3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java @@ -66,8 +66,6 @@ public class ProdRecuperoMaterialeFragment extends Fragment implements ITitledFr ((IPoppableActivity) getActivity()).pop(); }); -// mViewmodel.openLU(); - } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/HistoryULsListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/HistoryULsListAdapter.java index e67f4c05..b062b5cf 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/HistoryULsListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/HistoryULsListAdapter.java @@ -13,6 +13,7 @@ import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; import java.util.List; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ProdRecuperoMaterialeListHeaderBinding; import it.integry.integrywmsnative.databinding.ProdRecuperoMaterialeListItemBinding; @@ -28,6 +29,8 @@ public class HistoryULsListAdapter extends SectionedRecyclerViewAdapter mDataset; + private RunnableArgs mOnItemClicked; + static class SubheaderHolder extends RecyclerView.ViewHolder { ProdRecuperoMaterialeListHeaderBinding binding; @@ -57,6 +60,10 @@ public class HistoryULsListAdapter extends SectionedRecyclerViewAdapter onItemClicked) { + this.mOnItemClicked = onItemClicked; + } + public void updateItems(List updatedDataset) { mDataset.clear(); mDataset.addAll(orderItems(updatedDataset)); @@ -112,7 +119,7 @@ public class HistoryULsListAdapter extends SectionedRecyclerViewAdapter { - + if(this.mOnItemClicked != null) this.mOnItemClicked.run(ul); }); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java index 45ed69c7..cce0db8a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/core/ProdRecuperoMaterialeHelper.java @@ -2,12 +2,15 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale.core; import android.content.Context; +import com.annimon.stream.Stream; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -73,8 +76,42 @@ public class ProdRecuperoMaterialeHelper { Type typeOfObjectsList = new TypeToken>() {}.getType(); SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override - public void onSuccess(List value) { - onComplete.run(value); + public void onSuccess(List ulList) { + + if(ulList != null && ulList.size() > 0){ + List codMarts = Stream.of(ulList) + .map(HistoryVersamentoProdUL::getCodMart) + .withoutNulls() + .distinct() + .toList(); + + ArticoloRESTConsumer.getByCodMart(codMarts, arts -> { + + if(arts != null && arts.size() > 0) { + for (HistoryVersamentoProdUL value : ulList) { + + MtbAart foundMtbAart = null; + + List mtbAartStream = Stream.of(arts) + .filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList(); + + if(mtbAartStream != null && mtbAartStream.size() > 0){ + foundMtbAart = mtbAartStream.get(0); + } + + value.setMtbAart(foundMtbAart); + } + + + onComplete.run(ulList); + } + + }, onFailed); + + } else { + onComplete.run(ulList); + } + } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/dto/HistoryVersamentoProdUL.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/dto/HistoryVersamentoProdUL.java index 2ed7327b..1f14606d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/dto/HistoryVersamentoProdUL.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/dto/HistoryVersamentoProdUL.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale.dto; import java.math.BigDecimal; +import it.integry.integrywmsnative.core.model.MtbAart; + public class HistoryVersamentoProdUL { @@ -22,6 +24,8 @@ public class HistoryVersamentoProdUL { private String descrizioneArt; private String untMis; + private MtbAart mtbAart; + public String getGestione() { return gestione; } @@ -165,4 +169,13 @@ public class HistoryVersamentoProdUL { this.untMis = untMis; return this; } + + public MtbAart getMtbAart() { + return mtbAart; + } + + public HistoryVersamentoProdUL setMtbAart(MtbAart mtbAart) { + this.mtbAart = mtbAart; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java index 0d514c21..367c516a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java @@ -6,18 +6,32 @@ import android.content.Context; import android.text.Html; import android.text.SpannableString; +import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableField; import androidx.recyclerview.widget.LinearLayoutManager; +import com.tfb.fbtoast.FBToast; + import java.math.BigDecimal; import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; +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.MtbColt; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.report.ReportManager; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +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.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -26,7 +40,10 @@ import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.HistoryULsL import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper; import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdUL; import it.integry.integrywmsnative.gest.prod_recupero_materiale.views.InputQuantityToReturnDialog; +import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +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; public class ProdRecuperoMaterialeViewModel { @@ -125,9 +142,127 @@ public class ProdRecuperoMaterialeViewModel { private void initRecyclerView(List historyULs) { mAdapter = new HistoryULsListAdapter(mContext, historyULs); + mAdapter.setOnItemClicked(this::onListItemClicked); mBinding.prodRecuperoMaterialeMainList.setLayoutManager(new LinearLayoutManager(mContext)); mBinding.prodRecuperoMaterialeMainList.setAdapter(mAdapter); } + private void onListItemClicked(HistoryVersamentoProdUL item) { + BigDecimal qtaDaEvadere = BigDecimal.ZERO; + + qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol()); + + DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO() + .setBatchLot(item.getPartitaMag()) + .setMtbAart(item.getMtbAart()) + .setQtaDisponibile(qtaDaEvadere) + .setQtaTot(qtaDaEvadere) + .setCanPartitaMagBeChanged(false) + .setMaxQta(qtaDaEvadere); + + + DialogInputQuantity.makeBase(mContext, dto, false, (quantityDTO) -> { + onItemDispatched(item, quantityDTO); + }, () -> { + BarcodeManager.enable(); + }).show(); + } + + private void onItemDispatched(HistoryVersamentoProdUL item, QuantityDTO quantityDTO) { + + final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mContext); + + final MtbColt mtbColt = new MtbColt() + .initDefaultFields() + .setGestione(GestioneEnum.LAVORAZIONE) + .setSegno(+1) + .setMtbColr(new ObservableArrayList<>()); + mtbColt + .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + final MtbColr mtbColr = new MtbColr() + .setCodMart(item.getCodMart()) + .setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get())) + .setQtaCol(quantityDTO.qtaTot.getBigDecimal()) + .setQtaCnf(quantityDTO.qtaCnf.getBigDecimal()) + .setNumCnf(quantityDTO.numCnf.getBigDecimal()) + .setDescrizione(UtilityString.isNullOrEmpty(item.getMtbAart().getDescrizioneEstesa()) ? item.getMtbAart().getDescrizione() : item.getMtbAart().getDescrizioneEstesa()) + .setDatetimeRow(UtilityDate.getDateInstance()); + + + + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + mtbColt.getMtbColr().add(mtbColr); + + ColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { + + FBToast.successToast(mContext, mContext.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + + printCollo(progress, value, () -> { + mOnRecuperoCompleted.run(); + }); + + }, ex -> { + UtilityExceptions.defaultException(mContext, ex, progress); + }); + + } + + + private void printCollo(ProgressDialog progress, MtbColt mtbColtToPrint, Runnable onComplete) { + DialogAskShouldPrint.make(mContext, "Packing List", shouldPrint -> { + + if(shouldPrint) { + PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> { + + if (printerList.size() > 0) { + try { + singlePrint(mtbColtToPrint, printerList.get(0), () -> { + onComplete.run(); + progress.dismiss(); + }, ex -> { + progress.dismiss(); + String errorMessage = ex.getMessage(); + DialogSimpleMessageHelper.makeErrorDialog( + mContext, + new SpannableString(errorMessage), + null, + null, + R.string.button_ignore_print, + onComplete).show(); + }); + + } catch (Exception ex) { + UtilityExceptions.defaultException(mContext, ex, progress); + onComplete.run(); + } + } else { + progress.dismiss(); + String errorMessage = "Nessuna stampante configurata"; + DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, onComplete).show(); + } + }, ex -> { + UtilityExceptions.defaultException(mContext, ex, progress); + }); + } else { + onComplete.run(); + progress.dismiss(); + } + }).show(); + } + + + + private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onAbort) { + ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { + + PrinterRESTConsumer.printCollo( + printerName, + mtbColtToPrint, + 1, + reportName, onComplete, onAbort); + + }, onAbort); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index 0c08c0f1..e907dd02 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -859,7 +859,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO value .setDisablePrint(disablePrint) - .setMtbColr(new ObservableArrayList<>()); + .setMtbColr(new ObservableArrayList<>()) + .setRagSocCliente(defaultRagSocOfUL); setULToCurrentContext(value); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java index dc3dc7df..d0ce723f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java @@ -8,6 +8,11 @@ import androidx.databinding.ObservableField; import androidx.databinding.ObservableList; import androidx.annotation.NonNull; import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.shape.CornerFamily; +import com.google.android.material.shape.CornerTreatment; +import com.google.android.material.shape.MaterialShapeDrawable; +import com.google.android.material.shape.ShapeAppearanceModel; + import androidx.appcompat.app.AppCompatActivity; import android.text.SpannableString; import android.view.LayoutInflater; @@ -57,6 +62,14 @@ public class ArticoliInColloBottomSheetViewModel { mBindings.setViewModel(this); +// ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel(); +// +// shapeAppearanceModel.setTopLeftCorner(CornerFamily.ROUNDED, 6); +// shapeAppearanceModel.setTopRightCorner(CornerFamily.ROUNDED, 6); +// +// MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel); +// mBindings.getRoot().setBackground(materialShapeDrawable); + mtbColt.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override public void onPropertyChanged(Observable sender, int propertyId) { diff --git a/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml b/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml index 75ab4c3f..e8fdc40b 100644 --- a/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml +++ b/app/src/main/res/layout/fragment_articoli_in_collo_bottom_sheet.xml @@ -169,6 +169,7 @@ app:layout_constraintStart_toStartOf="parent" />