diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java index 5d1d42df..d6d20648 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java @@ -6,7 +6,7 @@ import androidx.room.ForeignKey; import androidx.room.Index; import androidx.room.PrimaryKey; -import java.util.Date; +import it.integry.integrywmsnative.core.utility.UtilityDate; @Entity( tableName = "articoli_griglia", @@ -159,7 +159,7 @@ public class ArticoloGriglia { articolo.setQtaCnf(this.getQtaCnf()); articolo.setUntMis(this.getUntMis()); articolo.setDescrizione(this.getDescrizione()); - articolo.setDataIns(new Date()); + articolo.setDataIns(UtilityDate.getDateInstance()); articolo.setQtaOrd(0); return articolo; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUBaseOperationsListener.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUBaseOperationsListener.java index 0cf83dbb..d29d5fce 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUBaseOperationsListener.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILUBaseOperationsListener.java @@ -1,10 +1,15 @@ package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; public interface ILUBaseOperationsListener { + void onMtbColrDeleteRequest(RunnableArgs onComplete); + void onLUOpened(MtbColt mtbColt); void onLUClosed(); + + void onRowSaved(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILoadingListener.java b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILoadingListener.java index f77f00f0..a02d3378 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILoadingListener.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/interfaces/viewmodel_listeners/ILoadingListener.java @@ -1,7 +1,9 @@ package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners; public interface ILoadingListener { + void onLoadingStarted(); void onLoadingEnded(); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java index 1f2d8cef..88a823ea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/DtbDocr.java @@ -141,6 +141,8 @@ public class DtbDocr { private MtbAart mtbAart; + private String dataScadPartitaMag; + public String getCodAnag() { return codAnag; } @@ -739,6 +741,19 @@ public class DtbDocr { return this; } + public String getDataScadPartitaMag() { + return dataScadPartitaMag; + } + + public Date getDataScadPartitaMagD() { + return UtilityDate.recognizeDateWithExceptionHandler(getDataScadPartitaMag()); + } + + public DtbDocr setDataScadPartitaMag(String dataScadPartitaMag) { + this.dataScadPartitaMag = dataScadPartitaMag; + return this; + } + public MtbAart getMtbAart() { return mtbAart; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java index 16dcb743..dc73ded6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java @@ -6,7 +6,6 @@ import com.annimon.stream.Stream; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Date; import java.util.List; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; @@ -18,6 +17,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityThread; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO; @@ -84,7 +84,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { } ordineDTO.setChiaveGriglia(griglia.getCodAlis()); - ordineDTO.setDataConsD(new Date()); + ordineDTO.setDataConsD(UtilityDate.getDateInstance()); ordineDTO.setArtRows(artRows); saveDTO.setGestione("O"); saveDTO.setOrdineDTO(ordineDTO); @@ -101,7 +101,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { if (dtoList.size() > 0){ DtbOrdt dto = dtoList.get(0); ordine.setTransmitted(true); - ordine.setTransmissionDate(new Date()); + ordine.setTransmissionDate(UtilityDate.getDateInstance()); ordine.setGestione(dto.getGestione()); ordine.setDataOrdS(dto.getDataOrd()); ordine.setCodMdep(dto.getCodMdep()); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java index 79b8db0d..69e27a21 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java @@ -26,6 +26,14 @@ public class UtilityBigDecimal { return input.compareTo(toCompareWith) < 0; } + public static boolean equalsOrLowerThan(BigDecimal input, BigDecimal toCompareWith) { + return equalsTo(input, toCompareWith) || lowerThan(input, toCompareWith); + } + + public static boolean equalsOrGreaterThan(BigDecimal input, BigDecimal toCompareWith) { + return equalsTo(input, toCompareWith) || greaterThan(input, toCompareWith); + } + public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) { if(input1 == null) return input2; if(input2 == null) return input1; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index 84209fc5..165b7bca 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -493,10 +493,30 @@ public class AccettazionePickingViewModel { } } + BigDecimal initialNumCnf; + BigDecimal initialQtaCnf; + BigDecimal initialQtaTot; + + if (qtaColDaPrelevare != null) { + initialNumCnf = numCnfDaPrelevare; + initialQtaCnf = qtaCnfDaPrelevare; + initialQtaTot = qtaColDaPrelevare; + + } else { + initialNumCnf = totalNumCnfOrd; + initialQtaCnf = qtaCnfOrd; + initialQtaTot = totalQtaOrd; + } + + if(UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { + initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana(); + initialQtaTot = initialNumCnf.multiply(initialQtaCnf); + } + this.sendOnItemDispatched( pickingObjectDTO, pickingObjectDTO.getMtbAart(), - null, null, null, + initialNumCnf, initialQtaCnf, initialQtaTot, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, @@ -904,14 +924,10 @@ public class AccettazionePickingViewModel { boolean canOverflowQuantity, RunnableArgss onComplete); - void onRowSaved(); - void onFilterApplied(String newValue); void onFilterRemoved(); - void onMtbColrDeleteRequest(RunnableArgs onComplete); - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java index c994a493..b56e3eb1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java @@ -7,7 +7,6 @@ import dagger.Provides; 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.PrinterRESTConsumer; @Module(subcomponents = {PickingLiberoComponent.class}) public class PickingLiberoModule { @@ -16,8 +15,7 @@ public class PickingLiberoModule { @Singleton PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { - return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer); + return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 9b332953..82b46947 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -24,11 +24,11 @@ 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.VtbDest; +import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; 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.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -37,7 +37,6 @@ import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; -import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; @@ -48,7 +47,6 @@ public class PickingLiberoViewModel { private final ArticoloRESTConsumer mArticoloRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; - private final PrinterRESTConsumer mPrinterRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer; @@ -62,11 +60,9 @@ public class PickingLiberoViewModel { @Inject public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; - this.mPrinterRESTConsumer = printerRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; } @@ -815,7 +811,6 @@ public class PickingLiberoViewModel { } public interface Listener extends ILoadingListener, ILUBaseOperationsListener { - void onMtbColrDeleteRequest(RunnableArgs onComplete); void onError(Exception ex); @@ -840,8 +835,6 @@ public class PickingLiberoViewModel { boolean canPartitaMagBeChanged, boolean canLUBeClosed, RunnableArgss onComplete); - - void onRowSaved(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index c04e2980..da258280 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -2,14 +2,16 @@ package it.integry.integrywmsnative.gest.picking_resi; import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.os.Bundle; +import android.text.SpannableString; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; import androidx.recyclerview.widget.LinearLayoutManager; import com.annimon.stream.Stream; +import com.tfb.fbtoast.FBToast; import java.math.BigDecimal; import java.util.ArrayList; @@ -37,14 +39,20 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding; import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter; import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListModel; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; +import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; -import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; +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_v2.DialogInputQuantityV2; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; +import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog; public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener { @@ -64,10 +72,8 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag private String mTitle; private List mDocumentiResiList; - private int mDefaultSegnoLU; private int barcodeScannerIstanceID = -1; - public ObservableList mDtbDocrList = new ObservableArrayList<>(); private boolean mShouldCloseActivity; @@ -91,7 +97,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag mTitle = getIntent().getStringExtra("activity_title"); mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key")); - mDefaultSegnoLU = getIntent().getIntExtra("segno", +1);; + int defaultSegnoLU = getIntent().getIntExtra("segno", +1); mBindings = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi); @@ -120,7 +126,10 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag this.initBarcodeReader(); this.initRecyclerView(); - this.mViewmodel.init(mDocumentiResiList); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + + this.mViewmodel.init(mDocumentiResiList, defaultSegnoLU, codMdep); } @Override @@ -172,7 +181,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag pickingResiListAdapter.setOnItemClicked(clickedItem -> { if (!noLUPresent.get()) { -// this.mViewmodel.dispatchOrdineRow(clickedItem); + this.mViewmodel.dispatchOrdineRow(clickedItem); } }); } @@ -191,11 +200,12 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag pickingResiListModel.setBadge1(x.getCodMart()); pickingResiListModel.setDescrizione(UtilityString.isNull(x.getDescrizioneEstesa(), x.getDescrizione())); pickingResiListModel.setActive(true); + pickingResiListModel.setOriginalModel(x); BigDecimal qtaColEvasa = BigDecimal.ZERO; BigDecimal numCnfColEvasa = BigDecimal.ZERO; - for(MtbColr mtbColr : x.getWithdrawRows()) { + for (MtbColr mtbColr : x.getWithdrawRows()) { qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol()); numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf()); } @@ -206,7 +216,8 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag pickingResiListModel.setQtaTot(x.getNumCnf()); } else { - if (x.getMtbAart() != null) pickingResiListModel.setUntMis(x.getMtbAart().getUntMis()); + if (x.getMtbAart() != null) + pickingResiListModel.setUntMis(x.getMtbAart().getUntMis()); else pickingResiListModel.setUntMis(x.getUntDoc()); pickingResiListModel.setQtaEvasa(qtaColEvasa); pickingResiListModel.setQtaTot(x.getQtaDoc()); @@ -242,66 +253,142 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag @Override public void onMtbColrEdit(MtbColr mtbColr) { - + this.mViewmodel.dispatchRowEdit(mtbColr); } @Override public void onMtbColrDelete(MtbColr mtbColr) { - + this.mViewmodel.deleteRow(mtbColr); } @Override public void onBottomSheetLUClose() { + this.mViewmodel.closeLU(true); + } + @Override + public void onNoteAggiuntiveRequired(RunnableArgs onComplete, Runnable onAbort) { + NoteAggiuntiveLUDialog.make(this, onComplete, onAbort).show(); } @Override public void onError(Exception ex) { + this.closeProgress(); + if(ex instanceof InvalidPesoKGException) { + UtilityToast.showToast(ex.getMessage()); + } else { + UtilityExceptions.defaultException(this, ex, mCurrentProgress); + } + + BarcodeManager.enable(); } @Override - public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, Date dataScad, boolean canOverflowOrderQuantity, RunnableArgss onComplete) { + public void onItemDispatched(MtbAart mtbAart, + BigDecimal initialNumCnf, + BigDecimal initialQtaCnf, + BigDecimal initialQtaTot, + BigDecimal totalQtaAvailable, + BigDecimal totalNumCnfAvailable, + BigDecimal qtaCnfAvailable, + String partitaMag, + Date dataScad, + RunnableArgss onComplete) { + DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() + .setMtbAart(mtbAart) + .setInitialNumCnf(initialNumCnf) + .setInitialQtaCnf(initialQtaCnf) + .setInitialQtaTot(initialQtaTot) + .setTotalQtaAvailable(totalQtaAvailable) + .setTotalNumCnfAvailable(totalNumCnfAvailable) + .setQtaCnfAvailable(qtaCnfAvailable) + .setPartitaMag(partitaMag) + .setDataScad(dataScad) + .setCanOverflowOrderQuantity(false) + .setCanLUBeClosed(false) + .setCanPartitaMagBeChanged(false); + DialogInputQuantityV2 + .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> { + PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO() + .setNumCnf(resultDTO.getNumCnf()) + .setQtaCnf(resultDTO.getQtaCnf()) + .setQtaTot(resultDTO.getQtaTot()) + .setPartitaMag(resultDTO.getPartitaMag()) + .setDataScad(resultDTO.getDataScad()); + + this.openProgress(); + onComplete.run(pickedQuantityDTO, shouldCloseLU); + }, () -> { +// this.mViewmodel.resetMatchedRows(); + }) + .show(getSupportFragmentManager(), "tag"); } @Override public void onRowSaved() { + FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + } + @Override + public void onMtbColrDeleteRequest(RunnableArgs onComplete) { + String text = getResources().getString(R.string.alert_delete_mtb_colr); + DialogSimpleMessageHelper.makeWarningDialog(this, + new SpannableString(text), + null, + () -> onComplete.run(true), + () -> onComplete.run(false) + ).show(); } @Override public void onLUOpened(MtbColt mtbColt) { + noLUPresent.set(false); + FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt); } @Override public void onLUClosed() { + noLUPresent.set(true); + this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null); + if (this.mShouldCloseActivity) super.onBackPressed(); } @Override public void onLUSuccessullyPrinted() { - + Resources res = getResources(); + String errorMessage = res.getText(R.string.alert_print_completed_message).toString(); + DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show(); } @Override public void onLUPrintRequest(RunnableArgs onComplete) { - + DialogAskShouldPrint.make(this, "Packing List", onComplete).show(); } @Override public void onLUPrintError(Exception ex, Runnable onComplete) { - + this.closeProgress(); + DialogSimpleMessageHelper.makeErrorDialog( + this, + new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete).show(); } @Override public void onLoadingStarted() { - + this.openProgress(); } @Override public void onLoadingEnded() { - + this.closeProgress(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index c68550a9..3087bfd0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -1,8 +1,13 @@ package it.integry.integrywmsnative.gest.picking_resi; +import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; +import com.annimon.stream.Optional; +import com.annimon.stream.Stream; + import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -10,12 +15,17 @@ import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; +import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +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.report.ReportManager; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; @@ -23,21 +33,29 @@ import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException; import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; -import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; public class PickingResiViewModel { private Listener mListener; - private MutableLiveData> mPickingList = new MutableLiveData<>(); + private final MutableLiveData> mPickingList = new MutableLiveData<>(); + private final List mColliRegistrati = new ArrayList<>(); private MtbColt mCurrentMtbColt = null; + private String mDefaultGestioneOfLU; + private String mDefaultCodAnagOfLU; + private int mDefaultSegnoOfLU; + private String mDefaultCodMdepOfLU; + private final ArticoloRESTConsumer mArticoloRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final ColliDataRecoverService mColliDataRecoverService; @@ -46,6 +64,7 @@ public class PickingResiViewModel { private final PrinterRESTConsumer mPrinterRESTConsumer; private final PickingResiRESTConsumer mPickingResiRESTConsumer; + @Inject public PickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, @@ -63,17 +82,65 @@ public class PickingResiViewModel { this.mPickingResiRESTConsumer = mPickingResiRESTConsumer; } - public void init(List mDocumentList) { + public void init(List documentList, int defaultSegnoLU, String codMdep) { + this.mDefaultSegnoOfLU = defaultSegnoLU; + this.mDefaultCodMdepOfLU = codMdep; + this.sendOnLoadingStarted(); - this.mPickingResiRESTConsumer.loadDocRows(mDocumentList, withdrawableDtbDocr -> { + this.initDatiPicking(documentList); + + this.mPickingResiRESTConsumer.loadDocRows(documentList, withdrawableDtbDocr -> { this.mPickingList.postValue(withdrawableDtbDocr); this.sendOnLoadingEnded(); }, ex -> this.sendError(new DocumentsLoadException(ex))); } - public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { + private void initDatiPicking(List documentList) { + List foundGestioni = Stream.of(documentList) + .map(DocumentoResoDTO::getGestione) + .distinct() + .withoutNulls() + .toList(); + if (foundGestioni.size() > 1) { + this.sendError(new Exception("Sono stati caricati documenti con diverse gestioni")); + } else mDefaultGestioneOfLU = foundGestioni.get(0); + + + List foundCodAnags = Stream.of(documentList) + .map(DocumentoResoDTO::getCodAnag) + .distinct() + .toList(); + + if (foundCodAnags.size() > 1) { + this.sendError(new Exception("Sono stati caricati documenti con diversi codici anagrafici")); + } else mDefaultCodAnagOfLU = foundCodAnags.get(0); + } + + public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { + MtbColt mtbColt = new MtbColt(); + mtbColt.initDefaultFields(); + mtbColt.setGestione(mDefaultGestioneOfLU) + .setSegno(mDefaultSegnoOfLU) + .setCodAnag(mDefaultCodAnagOfLU) + .setCodMdep(mDefaultCodMdepOfLU) + .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + if (customNumCollo != null) mtbColt.setNumCollo(customNumCollo); + if (!UtilityString.isNullOrEmpty(customSerCollo)) mtbColt.setSerCollo(customSerCollo); + + mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { + mtbColt + .setNumCollo(value.getNumCollo()) + .setDataCollo(value.getDataColloS()) + .setMtbColr(new ObservableArrayList<>()); + + this.mCurrentMtbColt = mtbColt; + + if (onComplete != null) onComplete.run(); + this.sendLUOpened(mtbColt); + }, this::sendError); } @@ -82,6 +149,105 @@ public class PickingResiViewModel { this.sendOnLoadingStarted(); + mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> { + + if (canBeDeleted) { + deleteLU(() -> { + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); + } else { + this.sendOnNoteAggiuntiveRequired(noteAggiuntive -> { + + if (!UtilityString.isNullOrEmpty(noteAggiuntive)) { + this.mCurrentMtbColt.setAnnotazioni(noteAggiuntive); + } + + this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> { + + if (shouldPrint) { + printCollo(mCurrentMtbColt, () -> { + postCloseOperations(mCurrentMtbColt, () -> { + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); + }); + } else { + postCloseOperations(mCurrentMtbColt, () -> { + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); + } + + }, this::sendError); + + }, () -> { + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); + } + }, this::sendError); + } + + private void deleteLU(Runnable onComplete) { + mColliMagazzinoRESTConsumer.deleteCollo(mCurrentMtbColt, () -> { + + this.mCurrentMtbColt = null; + if (onComplete != null) onComplete.run(); + + }, this::sendError); + } + + private void printCollo(MtbColt mtbColtToPrint, Runnable onComplete) { + this.sendLUPrintRequest(shouldPrint -> { + if (!shouldPrint) { + onComplete.run(); + } else { + this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdepOfLU, PrinterRESTConsumer.Type.PRIMARIA, printerList -> { + if (printerList == null || printerList.size() == 0) { + this.sendError(new NoPrintersFoundException()); + onComplete.run(); + return; + } + singlePrint(mtbColtToPrint, printerList.get(0), onComplete, ex -> this.sendLUPrintError(ex, onComplete)); + }, this::sendError); + } + }); + } + + private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onFailed) { + ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { + + this.mPrinterRESTConsumer.printCollo( + printerName, + mtbColtToPrint, + 1, + reportName, onComplete, onFailed); + + }, onFailed); + } + + private void postCloseOperations(MtbColt mtbColt, Runnable onComplete) { + this.mColliRegistrati.add(mtbColt); + + Stream.of(this.mPickingList.getValue()) + .forEach(x -> { + List withdraws = x.getWithdrawRows(); + + for (int k = 0; k < withdraws.size(); k++) { + MtbColr withdrawRow = withdraws.get(k); + x.setQtaDoc(x.getQtaDoc().subtract(withdrawRow.getQtaCol())); + } + + x.getWithdrawRows().clear(); + + if (UtilityBigDecimal.equalsOrLowerThan(x.getQtaDoc(), BigDecimal.ZERO)) { + this.mPickingList.getValue().remove(x); + } + }); + + this.mPickingList.postValue(this.mPickingList.getValue()); + onComplete.run(); } public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { @@ -110,11 +276,223 @@ public class PickingResiViewModel { } } + public void dispatchOrdineRow(final WithdrawableDtbDocr withdrawableDtbDocr) { + BigDecimal totalQtaDoc = withdrawableDtbDocr.getQtaDoc(); + BigDecimal totalNumCnfDoc = withdrawableDtbDocr.getNumCnf(); + BigDecimal qtaCnfDoc = withdrawableDtbDocr.getQtaCnf(); + + + + this.sendOnItemDispatched( + withdrawableDtbDocr.getMtbAart(), + totalNumCnfDoc, + qtaCnfDoc, + totalQtaDoc, + totalQtaDoc, + totalNumCnfDoc, + qtaCnfDoc, + withdrawableDtbDocr.getPartitaMag(), + withdrawableDtbDocr.getDataScadPartitaMagD(), + (pickedQuantityDTO, shouldCloseLU) -> { + + this.saveNewRow(withdrawableDtbDocr, + pickedQuantityDTO.getNumCnf(), + pickedQuantityDTO.getQtaCnf(), + pickedQuantityDTO.getQtaTot(), + pickedQuantityDTO.getPartitaMag(), + pickedQuantityDTO.getDataScad(), + shouldCloseLU); + }); + } + + public void dispatchRowEdit(final MtbColr mtbColrToEdit) { + + this.sendOnItemDispatched( + mtbColrToEdit.getMtbAart(), + mtbColrToEdit.getNumCnf(), + mtbColrToEdit.getQtaCnf(), + mtbColrToEdit.getQtaCol(), + null, + null, + null, + mtbColrToEdit.getPartitaMag(), + mtbColrToEdit.getDataScadPartitaD(), + (pickedQuantityDTO, shouldCloseLU) -> { + + this.saveEditedRow(mtbColrToEdit, + pickedQuantityDTO.getNumCnf(), + pickedQuantityDTO.getQtaCnf(), + pickedQuantityDTO.getQtaTot(), + pickedQuantityDTO.getPartitaMag(), + pickedQuantityDTO.getDataScad(), + shouldCloseLU); + }); + } + + + public void saveNewRow(WithdrawableDtbDocr withdrawableDtbDocr, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { + this.sendOnLoadingStarted(); + + final MtbColr mtbColr = new MtbColr() + .setCodMart(withdrawableDtbDocr.getMtbAart().getCodMart()) + .setPartitaMag(partitaMag) + .setDataScadPartita(dataScad) + .setQtaCol(qtaTot) + .setQtaCnf(qtaCnf) + .setNumCnf(numCnf) + .setDescrizione(withdrawableDtbDocr.getMtbAart().getDescrizioneEstesa()) + .setDatetimeRow(UtilityDate.getDateInstance()) + + .setCodAnagDoc(withdrawableDtbDocr.getCodAnag()) + .setCodDtipDoc(withdrawableDtbDocr.getCodDtip()) + .setSerDoc(withdrawableDtbDocr.getSerDoc()) + .setNumDoc(withdrawableDtbDocr.getNumDoc()) + .setDataDoc(withdrawableDtbDocr.getDataDocS()) + .setIdRigaDoc(withdrawableDtbDocr.getIdRiga()); + + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); + + cloneMtbColt.setMtbColr(new ObservableArrayList<>()); + cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone()); + + boolean shouldPrint = true; + + //Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe) + if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) { + shouldPrint = false; + } + + if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { + this.sendOnLoadingEnded(); + + if (shouldCloseLU) closeLU(shouldPrint); + return; + } + + boolean finalShouldPrint = shouldPrint; + this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + + mtbColr + .setDataCollo(value.getDataColloS()) + .setNumCollo(value.getNumCollo()) + .setGestione(value.getGestione()) + .setSerCollo(value.getSerCollo()) + .setRiga(value.getMtbColr().get(0).getRiga()) + .setUntMis(withdrawableDtbDocr.getMtbAart().getUntMis()) + .setMtbAart(withdrawableDtbDocr.getMtbAart()); + + withdrawableDtbDocr.getWithdrawRows().add(mtbColr); + mCurrentMtbColt.getMtbColr().add(mtbColr); + + this.mPickingList.postValue(this.mPickingList.getValue()); + + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + + if (shouldCloseLU) closeLU(finalShouldPrint); + }, this::sendError); + } + + 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.INSERT); + mtbColr.setRiga(null) + .setNumCnf(numCnf.subtract(mtbColrToUpdate.getNumCnf())) + .setQtaCnf(qtaCnf) + .setQtaCol(qtaTot.subtract(mtbColrToUpdate.getQtaCol())) + .setPartitaMag(partitaMag) + .setDataScadPartita(dataScad); + + mtbColt.getMtbColr().add(mtbColr); + + this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> { + + mtbColr.setNumCnf(numCnf) + .setQtaCnf(qtaCnf) + .setQtaCol(qtaTot); + + Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()) + .filter(x -> Stream.of(x.getWithdrawRows()).anyMatch(y -> y == mtbColrToUpdate)) + .findSingle(); + + if (pickingObjectDTO.isPresent()) { + pickingObjectDTO.get().getWithdrawRows().remove(mtbColrToUpdate); + pickingObjectDTO.get().getWithdrawRows().add(mtbColr); + } + + this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate); + this.mCurrentMtbColt.getMtbColr().add(mtbColr); + + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + + }, this::sendError); + } + + public void deleteRow(MtbColr mtbColrToDelete) { + this.sendMtbColrDeleteRequest(canDelete -> { + if (canDelete) { + 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.INSERT); + mtbColr.setQtaCol(mtbColr.getQtaCol().multiply(new BigDecimal(-1))) + .setNumCnf(mtbColr.getNumCnf().multiply(new BigDecimal(-1))) + .setRiga(null); + + mtbColt.getMtbColr().add(mtbColr); + + this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> { + + Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()) + .filter(x -> Stream.of(x.getWithdrawRows()).anyMatch(y -> y == mtbColrToDelete)) + .findSingle(); + + if (pickingObjectDTO.isPresent()) { + pickingObjectDTO.get().getWithdrawRows().remove(mtbColrToDelete); + } + + this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); + + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + + }, this::sendError); + } + }); + } + public MutableLiveData> getPickingList() { return mPickingList; } + private void sendOnNoteAggiuntiveRequired(RunnableArgs onComplete, Runnable onAbort) { + if (this.mListener != null) this.mListener.onNoteAggiuntiveRequired(onComplete, onAbort); + } + private void sendOnLoadingStarted() { if (this.mListener != null) mListener.onLoadingStarted(); } @@ -135,41 +513,37 @@ public class PickingResiViewModel { if (this.mListener != null) mListener.onLUClosed(); } - private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, - MtbAart mtbAart, + private void sendLUPrintRequest(RunnableArgs onComplete) { + if (this.mListener != null) mListener.onLUPrintRequest(onComplete); + } + + private void sendLUPrintError(Exception ex, Runnable onComplete) { + if (this.mListener != null) mListener.onLUPrintError(ex, onComplete); + } + + private void sendMtbColrDeleteRequest(RunnableArgs onComplete) { + if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete); + } + + private void sendOnItemDispatched(MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, - BigDecimal totalQtaOrd, - BigDecimal totalNumCnfOrd, - BigDecimal qtaCnfOrd, - BigDecimal totalQtaToBeTaken, - BigDecimal totalNumCnfToBeTaken, - BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, Date dataScad, - boolean canOverflowOrderQuantity, RunnableArgss onComplete) { - if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO, - mtbAart, + if (this.mListener != null) mListener.onItemDispatched(mtbAart, initialNumCnf, initialQtaCnf, initialQtaTot, - totalQtaOrd, - totalNumCnfOrd, - qtaCnfOrd, - totalQtaToBeTaken, - totalNumCnfToBeTaken, - qtaCnfToBeTaken, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, - canOverflowOrderQuantity, onComplete); } @@ -185,28 +559,20 @@ public class PickingResiViewModel { public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener { + void onNoteAggiuntiveRequired(RunnableArgs onComplete, Runnable onAbort); + void onError(Exception ex); - void onItemDispatched(PickingObjectDTO pickingObjectDTO, - MtbAart mtbAart, + void onItemDispatched(MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, - BigDecimal totalQtaOrd, - BigDecimal totalNumCnfOrd, - BigDecimal qtaCnfOrd, - BigDecimal totalQtaToBeTaken, - BigDecimal totalNumCnfToBeTaken, - BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, Date dataScad, - boolean canOverflowOrderQuantity, RunnableArgss onComplete); - void onRowSaved(); - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java index e58b102f..a05850e4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java @@ -112,12 +112,61 @@ public class PickingResiRESTConsumer { " ,dtb_docr.[data_ins_row]" + " ,dtb_docr.[note] " + " ,dtb_doct.[gestione] " + + " ,mtb_partita_mag.[data_scad] as data_scad_partita_mag " + "FROM dtb_docr " + "INNER JOIN dtb_doct ON dtb_docr.num_doc = dtb_doct.num_doc AND dtb_docr.data_doc = dtb_doct.data_doc AND dtb_docr.cod_anag = dtb_doct.cod_anag AND dtb_docr.cod_dtip = dtb_doct.cod_dtip AND dtb_docr.ser_doc = dtb_doct.ser_doc " + "INNER JOIN mtb_aart ON dtb_docr.cod_mart = mtb_aart.cod_mart " + + "LEFT OUTER JOIN mtb_partita_mag ON dtb_docr.cod_mart = mtb_partita_mag.cod_mart " + + " AND dtb_docr.partita_mag = mtb_partita_mag.partita_mag " + "LEFT OUTER JOIN ctb_cont ON mtb_aart.cod_ccon_ricavi = ctb_cont.cod_ccon " + "LEFT OUTER JOIN ctb_grup ON ctb_cont.cod_cgrp = ctb_grup.cod_cgrp " + - "LEFT OUTER JOIN mtb_colr ON " + + "LEFT OUTER JOIN (" + + " SELECT gestione," + + " cod_mart," + + " cod_col," + + " cod_tagl," + + " SUM(qta_col) as qta_col," + + " data_ord," + + " num_ord," + + " riga_ord," + + " partita_mag," + + " qta_cnf," + + " gestione_rif," + + " data_collo_rif," + + " ser_collo_rif," + + " num_collo_rif," + + " cod_jcom," + + " SUM(num_cnf) as num_cnf," + + " cod_anag_doc," + + " cod_dtip_doc," + + " data_doc," + + " ser_doc," + + " num_doc," + + " id_riga_doc" + + " FROM mtb_colr" + + " GROUP BY gestione," + + " cod_barre," + + " cod_mart," + + " cod_col," + + " cod_tagl," + + " data_ord," + + " num_ord," + + " riga_ord," + + " partita_mag," + + " qta_cnf," + + " gestione_rif," + + " data_collo_rif," + + " ser_collo_rif," + + " num_collo_rif," + + " cod_jcom," + + " cod_anag_doc," + + " cod_dtip_doc," + + " data_doc," + + " ser_doc," + + " num_doc," + + " id_riga_doc" + + " ) mtb_colr" + + " ON " + " dtb_docr.cod_anag = mtb_colr.cod_anag_doc AND " + " dtb_docr.cod_dtip = mtb_colr.cod_dtip_doc AND " + " dtb_docr.ser_doc = mtb_colr.ser_doc AND " + diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java index 7f401c84..7d968e41 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/helper/OrdineAcquistoPvHelper.java @@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper; import android.app.Activity; import java.util.ArrayList; -import java.util.Date; import java.util.List; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; @@ -16,6 +15,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepositor import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; +import it.integry.integrywmsnative.core.utility.UtilityDate; public class OrdineAcquistoPvHelper { @@ -67,7 +67,7 @@ public class OrdineAcquistoPvHelper { public void createNewOrder(Griglia griglia, RunnableArgs onSuccess, RunnableArgs onError) { Ordine ordine = new Ordine(); - ordine.setDataIns(new Date()); + ordine.setDataIns(UtilityDate.getDateInstance()); ordine.setIdGriglia(griglia.getGrigliaId()); mOrdineRepository.insert(ordine, id -> { ordine.setOrdineId(id); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index 0d6b94d3..5bbad96b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -1155,10 +1155,6 @@ public class SpedizioneViewModel { //Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe) if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) { shouldPrint = false; -// if(UtilityString.isNullOrEmpty(cloneMtbColt.getCodTcol())) { -// cloneMtbColt.setCodTcol(pickingObjectDTO.getSitArtOrdDTO().getCodTcol()); -// cloneMtbColt.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); -// } } @@ -1387,7 +1383,7 @@ public class SpedizioneViewModel { private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onFailed) { ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { - PrinterRESTConsumer.printColloStatic( + this.mPrinterRESTConsumer.printCollo( printerName, mtbColtToPrint, 1, @@ -1515,15 +1511,12 @@ public class SpedizioneViewModel { public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener { - void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete); void onFilterApplied(String newValue); void onFilterRemoved(); - void onMtbColrDeleteRequest(RunnableArgs onComplete); - void onError(Exception ex); void onItemDispatched(PickingObjectDTO pickingObjectDTO, @@ -1544,8 +1537,6 @@ public class SpedizioneViewModel { Date dataScad, boolean canOverflowOrderQuantity, RunnableArgss onComplete); - - void onRowSaved(); } }