Completato refactoring picking resi

This commit is contained in:
Giuseppe Scorrano 2020-11-09 12:29:12 +01:00
parent 598372675f
commit 03e1a186b8
14 changed files with 615 additions and 85 deletions

View File

@ -6,7 +6,7 @@ import androidx.room.ForeignKey;
import androidx.room.Index; import androidx.room.Index;
import androidx.room.PrimaryKey; import androidx.room.PrimaryKey;
import java.util.Date; import it.integry.integrywmsnative.core.utility.UtilityDate;
@Entity( @Entity(
tableName = "articoli_griglia", tableName = "articoli_griglia",
@ -159,7 +159,7 @@ public class ArticoloGriglia {
articolo.setQtaCnf(this.getQtaCnf()); articolo.setQtaCnf(this.getQtaCnf());
articolo.setUntMis(this.getUntMis()); articolo.setUntMis(this.getUntMis());
articolo.setDescrizione(this.getDescrizione()); articolo.setDescrizione(this.getDescrizione());
articolo.setDataIns(new Date()); articolo.setDataIns(UtilityDate.getDateInstance());
articolo.setQtaOrd(0); articolo.setQtaOrd(0);
return articolo; return articolo;

View File

@ -1,10 +1,15 @@
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners; package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
public interface ILUBaseOperationsListener { public interface ILUBaseOperationsListener {
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
void onLUOpened(MtbColt mtbColt); void onLUOpened(MtbColt mtbColt);
void onLUClosed(); void onLUClosed();
void onRowSaved();
} }

View File

@ -1,7 +1,9 @@
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners; package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
public interface ILoadingListener { public interface ILoadingListener {
void onLoadingStarted(); void onLoadingStarted();
void onLoadingEnded(); void onLoadingEnded();
} }

View File

@ -141,6 +141,8 @@ public class DtbDocr {
private MtbAart mtbAart; private MtbAart mtbAart;
private String dataScadPartitaMag;
public String getCodAnag() { public String getCodAnag() {
return codAnag; return codAnag;
} }
@ -739,6 +741,19 @@ public class DtbDocr {
return this; 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() { public MtbAart getMtbAart() {
return mtbAart; return mtbAart;
} }

View File

@ -6,7 +6,6 @@ import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; 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.model.DtbOrdt;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; 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.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityThread; import it.integry.integrywmsnative.core.utility.UtilityThread;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO; 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.setChiaveGriglia(griglia.getCodAlis());
ordineDTO.setDataConsD(new Date()); ordineDTO.setDataConsD(UtilityDate.getDateInstance());
ordineDTO.setArtRows(artRows); ordineDTO.setArtRows(artRows);
saveDTO.setGestione("O"); saveDTO.setGestione("O");
saveDTO.setOrdineDTO(ordineDTO); saveDTO.setOrdineDTO(ordineDTO);
@ -101,7 +101,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
if (dtoList.size() > 0){ if (dtoList.size() > 0){
DtbOrdt dto = dtoList.get(0); DtbOrdt dto = dtoList.get(0);
ordine.setTransmitted(true); ordine.setTransmitted(true);
ordine.setTransmissionDate(new Date()); ordine.setTransmissionDate(UtilityDate.getDateInstance());
ordine.setGestione(dto.getGestione()); ordine.setGestione(dto.getGestione());
ordine.setDataOrdS(dto.getDataOrd()); ordine.setDataOrdS(dto.getDataOrd());
ordine.setCodMdep(dto.getCodMdep()); ordine.setCodMdep(dto.getCodMdep());

View File

@ -26,6 +26,14 @@ public class UtilityBigDecimal {
return input.compareTo(toCompareWith) < 0; 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) { public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) {
if(input1 == null) return input2; if(input1 == null) return input2;
if(input2 == null) return input1; if(input2 == null) return input1;

View File

@ -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( this.sendOnItemDispatched(
pickingObjectDTO, pickingObjectDTO,
pickingObjectDTO.getMtbAart(), pickingObjectDTO.getMtbAart(),
null, null, null, initialNumCnf, initialQtaCnf, initialQtaTot,
qtaDaEvadere, qtaDaEvadere,
numCnfDaEvadere, numCnfDaEvadere,
qtaCnfDaEvadere, qtaCnfDaEvadere,
@ -904,14 +924,10 @@ public class AccettazionePickingViewModel {
boolean canOverflowQuantity, boolean canOverflowQuantity,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete); RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
void onRowSaved();
void onFilterApplied(String newValue); void onFilterApplied(String newValue);
void onFilterRemoved(); void onFilterRemoved();
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
} }
} }

View File

@ -7,7 +7,6 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
@Module(subcomponents = {PickingLiberoComponent.class}) @Module(subcomponents = {PickingLiberoComponent.class})
public class PickingLiberoModule { public class PickingLiberoModule {
@ -16,8 +15,7 @@ public class PickingLiberoModule {
@Singleton @Singleton
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer) { BarcodeRESTConsumer barcodeRESTConsumer) {
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer); return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer);
} }
} }

View File

@ -24,11 +24,11 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.VtbDest; 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.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; 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.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.settings.SettingsManager; 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.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; 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.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
@ -48,7 +47,6 @@ public class PickingLiberoViewModel {
private final ArticoloRESTConsumer mArticoloRESTConsumer; private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final PrinterRESTConsumer mPrinterRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
@ -62,11 +60,9 @@ public class PickingLiberoViewModel {
@Inject @Inject
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer, public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer) { BarcodeRESTConsumer barcodeRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer; this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mPrinterRESTConsumer = printerRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
} }
@ -815,7 +811,6 @@ public class PickingLiberoViewModel {
} }
public interface Listener extends ILoadingListener, ILUBaseOperationsListener { public interface Listener extends ILoadingListener, ILUBaseOperationsListener {
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
void onError(Exception ex); void onError(Exception ex);
@ -840,8 +835,6 @@ public class PickingLiberoViewModel {
boolean canPartitaMagBeChanged, boolean canPartitaMagBeChanged,
boolean canLUBeClosed, boolean canLUBeClosed,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete); RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
void onRowSaved();
} }

View File

@ -2,14 +2,16 @@ package it.integry.integrywmsnative.gest.picking_resi;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.text.SpannableString;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.tfb.fbtoast.FBToast;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; 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.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding; import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter; 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.core.PickingResiListModel;
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; 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.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.BottomSheetFragmentLUContentView;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; 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 { 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 String mTitle;
private List<DocumentoResoDTO> mDocumentiResiList; private List<DocumentoResoDTO> mDocumentiResiList;
private int mDefaultSegnoLU;
private int barcodeScannerIstanceID = -1; private int barcodeScannerIstanceID = -1;
public ObservableList<WithdrawableDtbDocr> mDtbDocrList = new ObservableArrayList<>();
private boolean mShouldCloseActivity; private boolean mShouldCloseActivity;
@ -91,7 +97,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
mTitle = getIntent().getStringExtra("activity_title"); mTitle = getIntent().getStringExtra("activity_title");
mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key")); 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); mBindings = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
@ -120,7 +126,10 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
this.initBarcodeReader(); this.initBarcodeReader();
this.initRecyclerView(); this.initRecyclerView();
this.mViewmodel.init(mDocumentiResiList);
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
this.mViewmodel.init(mDocumentiResiList, defaultSegnoLU, codMdep);
} }
@Override @Override
@ -172,7 +181,7 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
pickingResiListAdapter.setOnItemClicked(clickedItem -> { pickingResiListAdapter.setOnItemClicked(clickedItem -> {
if (!noLUPresent.get()) { 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.setBadge1(x.getCodMart());
pickingResiListModel.setDescrizione(UtilityString.isNull(x.getDescrizioneEstesa(), x.getDescrizione())); pickingResiListModel.setDescrizione(UtilityString.isNull(x.getDescrizioneEstesa(), x.getDescrizione()));
pickingResiListModel.setActive(true); pickingResiListModel.setActive(true);
pickingResiListModel.setOriginalModel(x);
BigDecimal qtaColEvasa = BigDecimal.ZERO; BigDecimal qtaColEvasa = BigDecimal.ZERO;
BigDecimal numCnfColEvasa = BigDecimal.ZERO; BigDecimal numCnfColEvasa = BigDecimal.ZERO;
for(MtbColr mtbColr : x.getWithdrawRows()) { for (MtbColr mtbColr : x.getWithdrawRows()) {
qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol()); qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf()); numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
} }
@ -206,7 +216,8 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
pickingResiListModel.setQtaTot(x.getNumCnf()); pickingResiListModel.setQtaTot(x.getNumCnf());
} else { } else {
if (x.getMtbAart() != null) pickingResiListModel.setUntMis(x.getMtbAart().getUntMis()); if (x.getMtbAart() != null)
pickingResiListModel.setUntMis(x.getMtbAart().getUntMis());
else pickingResiListModel.setUntMis(x.getUntDoc()); else pickingResiListModel.setUntMis(x.getUntDoc());
pickingResiListModel.setQtaEvasa(qtaColEvasa); pickingResiListModel.setQtaEvasa(qtaColEvasa);
pickingResiListModel.setQtaTot(x.getQtaDoc()); pickingResiListModel.setQtaTot(x.getQtaDoc());
@ -242,66 +253,142 @@ public class PickingResiActivity extends BaseActivity implements BottomSheetFrag
@Override @Override
public void onMtbColrEdit(MtbColr mtbColr) { public void onMtbColrEdit(MtbColr mtbColr) {
this.mViewmodel.dispatchRowEdit(mtbColr);
} }
@Override @Override
public void onMtbColrDelete(MtbColr mtbColr) { public void onMtbColrDelete(MtbColr mtbColr) {
this.mViewmodel.deleteRow(mtbColr);
} }
@Override @Override
public void onBottomSheetLUClose() { public void onBottomSheetLUClose() {
this.mViewmodel.closeLU(true);
}
@Override
public void onNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
NoteAggiuntiveLUDialog.make(this, onComplete, onAbort).show();
} }
@Override @Override
public void onError(Exception ex) { public void onError(Exception ex) {
this.closeProgress();
if(ex instanceof InvalidPesoKGException) {
UtilityToast.showToast(ex.getMessage());
} else {
UtilityExceptions.defaultException(this, ex, mCurrentProgress);
}
BarcodeManager.enable();
} }
@Override @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<PickedQuantityDTO, Boolean> onComplete) { public void onItemDispatched(MtbAart mtbAart,
BigDecimal initialNumCnf,
BigDecimal initialQtaCnf,
BigDecimal initialQtaTot,
BigDecimal totalQtaAvailable,
BigDecimal totalNumCnfAvailable,
BigDecimal qtaCnfAvailable,
String partitaMag,
Date dataScad,
RunnableArgss<PickedQuantityDTO, Boolean> 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 @Override
public void onRowSaved() { public void onRowSaved() {
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
}
@Override
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> 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 @Override
public void onLUOpened(MtbColt mtbColt) { 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 @Override
public void onLUClosed() { public void onLUClosed() {
noLUPresent.set(true);
this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null);
if (this.mShouldCloseActivity) super.onBackPressed();
} }
@Override @Override
public void onLUSuccessullyPrinted() { 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 @Override
public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) { public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) {
DialogAskShouldPrint.make(this, "Packing List", onComplete).show();
} }
@Override @Override
public void onLUPrintError(Exception ex, Runnable onComplete) { 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 @Override
public void onLoadingStarted() { public void onLoadingStarted() {
this.openProgress();
} }
@Override @Override
public void onLoadingEnded() { public void onLoadingEnded() {
this.closeProgress();
} }
} }

View File

@ -1,8 +1,13 @@
package it.integry.integrywmsnative.gest.picking_resi; package it.integry.integrywmsnative.gest.picking_resi;
import androidx.databinding.ObservableArrayList;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -10,12 +15,17 @@ import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; 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.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener; 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.ILUPrintListener;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; 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.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; 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.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; 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.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; 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.exceptions.DocumentsLoadException;
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer; import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
public class PickingResiViewModel { public class PickingResiViewModel {
private Listener mListener; private Listener mListener;
private MutableLiveData<List<WithdrawableDtbDocr>> mPickingList = new MutableLiveData<>(); private final MutableLiveData<List<WithdrawableDtbDocr>> mPickingList = new MutableLiveData<>();
private final List<MtbColt> mColliRegistrati = new ArrayList<>();
private MtbColt mCurrentMtbColt = null; private MtbColt mCurrentMtbColt = null;
private String mDefaultGestioneOfLU;
private String mDefaultCodAnagOfLU;
private int mDefaultSegnoOfLU;
private String mDefaultCodMdepOfLU;
private final ArticoloRESTConsumer mArticoloRESTConsumer; private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final ColliDataRecoverService mColliDataRecoverService; private final ColliDataRecoverService mColliDataRecoverService;
@ -46,6 +64,7 @@ public class PickingResiViewModel {
private final PrinterRESTConsumer mPrinterRESTConsumer; private final PrinterRESTConsumer mPrinterRESTConsumer;
private final PickingResiRESTConsumer mPickingResiRESTConsumer; private final PickingResiRESTConsumer mPickingResiRESTConsumer;
@Inject @Inject
public PickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer, public PickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer,
@ -63,17 +82,65 @@ public class PickingResiViewModel {
this.mPickingResiRESTConsumer = mPickingResiRESTConsumer; this.mPickingResiRESTConsumer = mPickingResiRESTConsumer;
} }
public void init(List<DocumentoResoDTO> mDocumentList) { public void init(List<DocumentoResoDTO> documentList, int defaultSegnoLU, String codMdep) {
this.mDefaultSegnoOfLU = defaultSegnoLU;
this.mDefaultCodMdepOfLU = codMdep;
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
this.mPickingResiRESTConsumer.loadDocRows(mDocumentList, withdrawableDtbDocr -> { this.initDatiPicking(documentList);
this.mPickingResiRESTConsumer.loadDocRows(documentList, withdrawableDtbDocr -> {
this.mPickingList.postValue(withdrawableDtbDocr); this.mPickingList.postValue(withdrawableDtbDocr);
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
}, ex -> this.sendError(new DocumentsLoadException(ex))); }, ex -> this.sendError(new DocumentsLoadException(ex)));
} }
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { private void initDatiPicking(List<DocumentoResoDTO> documentList) {
List<String> 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<String> 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(); 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<Exception> 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<MtbColr> 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) { 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<WithdrawableDtbDocr> 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<WithdrawableDtbDocr> 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<List<WithdrawableDtbDocr>> getPickingList() { public MutableLiveData<List<WithdrawableDtbDocr>> getPickingList() {
return mPickingList; return mPickingList;
} }
private void sendOnNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort) {
if (this.mListener != null) this.mListener.onNoteAggiuntiveRequired(onComplete, onAbort);
}
private void sendOnLoadingStarted() { private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted(); if (this.mListener != null) mListener.onLoadingStarted();
} }
@ -135,41 +513,37 @@ public class PickingResiViewModel {
if (this.mListener != null) mListener.onLUClosed(); if (this.mListener != null) mListener.onLUClosed();
} }
private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) {
MtbAart mtbAart, 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<Boolean> onComplete) {
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
}
private void sendOnItemDispatched(MtbAart mtbAart,
BigDecimal initialNumCnf, BigDecimal initialNumCnf,
BigDecimal initialQtaCnf, BigDecimal initialQtaCnf,
BigDecimal initialQtaTot, BigDecimal initialQtaTot,
BigDecimal totalQtaOrd,
BigDecimal totalNumCnfOrd,
BigDecimal qtaCnfOrd,
BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken,
BigDecimal totalQtaAvailable, BigDecimal totalQtaAvailable,
BigDecimal totalNumCnfAvailable, BigDecimal totalNumCnfAvailable,
BigDecimal qtaCnfAvailable, BigDecimal qtaCnfAvailable,
String partitaMag, String partitaMag,
Date dataScad, Date dataScad,
boolean canOverflowOrderQuantity,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) { RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO, if (this.mListener != null) mListener.onItemDispatched(mtbAart,
mtbAart,
initialNumCnf, initialNumCnf,
initialQtaCnf, initialQtaCnf,
initialQtaTot, initialQtaTot,
totalQtaOrd,
totalNumCnfOrd,
qtaCnfOrd,
totalQtaToBeTaken,
totalNumCnfToBeTaken,
qtaCnfToBeTaken,
totalQtaAvailable, totalQtaAvailable,
totalNumCnfAvailable, totalNumCnfAvailable,
qtaCnfAvailable, qtaCnfAvailable,
partitaMag, partitaMag,
dataScad, dataScad,
canOverflowOrderQuantity,
onComplete); onComplete);
} }
@ -185,28 +559,20 @@ public class PickingResiViewModel {
public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener { public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
void onNoteAggiuntiveRequired(RunnableArgs<String> onComplete, Runnable onAbort);
void onError(Exception ex); void onError(Exception ex);
void onItemDispatched(PickingObjectDTO pickingObjectDTO, void onItemDispatched(MtbAart mtbAart,
MtbAart mtbAart,
BigDecimal initialNumCnf, BigDecimal initialNumCnf,
BigDecimal initialQtaCnf, BigDecimal initialQtaCnf,
BigDecimal initialQtaTot, BigDecimal initialQtaTot,
BigDecimal totalQtaOrd,
BigDecimal totalNumCnfOrd,
BigDecimal qtaCnfOrd,
BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken,
BigDecimal totalQtaAvailable, BigDecimal totalQtaAvailable,
BigDecimal totalNumCnfAvailable, BigDecimal totalNumCnfAvailable,
BigDecimal qtaCnfAvailable, BigDecimal qtaCnfAvailable,
String partitaMag, String partitaMag,
Date dataScad, Date dataScad,
boolean canOverflowOrderQuantity,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete); RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
void onRowSaved();
} }
} }

View File

@ -112,12 +112,61 @@ public class PickingResiRESTConsumer {
" ,dtb_docr.[data_ins_row]" + " ,dtb_docr.[data_ins_row]" +
" ,dtb_docr.[note] " + " ,dtb_docr.[note] " +
" ,dtb_doct.[gestione] " + " ,dtb_doct.[gestione] " +
" ,mtb_partita_mag.[data_scad] as data_scad_partita_mag " +
"FROM dtb_docr " + "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 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 " + "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_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 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_anag = mtb_colr.cod_anag_doc AND " +
" dtb_docr.cod_dtip = mtb_colr.cod_dtip_doc AND " + " dtb_docr.cod_dtip = mtb_colr.cod_dtip_doc AND " +
" dtb_docr.ser_doc = mtb_colr.ser_doc AND " + " dtb_docr.ser_doc = mtb_colr.ser_doc AND " +

View File

@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper;
import android.app.Activity; import android.app.Activity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; 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.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineAcquistoPvHelper { public class OrdineAcquistoPvHelper {
@ -67,7 +67,7 @@ public class OrdineAcquistoPvHelper {
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) { public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
Ordine ordine = new Ordine(); Ordine ordine = new Ordine();
ordine.setDataIns(new Date()); ordine.setDataIns(UtilityDate.getDateInstance());
ordine.setIdGriglia(griglia.getGrigliaId()); ordine.setIdGriglia(griglia.getGrigliaId());
mOrdineRepository.insert(ordine, id -> { mOrdineRepository.insert(ordine, id -> {
ordine.setOrdineId(id); ordine.setOrdineId(id);

View File

@ -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) //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) { if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) {
shouldPrint = false; 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<Exception> onFailed) { private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
PrinterRESTConsumer.printColloStatic( this.mPrinterRESTConsumer.printCollo(
printerName, printerName,
mtbColtToPrint, mtbColtToPrint,
1, 1,
@ -1515,15 +1511,12 @@ public class SpedizioneViewModel {
public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener { public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete); void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete);
void onFilterApplied(String newValue); void onFilterApplied(String newValue);
void onFilterRemoved(); void onFilterRemoved();
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
void onError(Exception ex); void onError(Exception ex);
void onItemDispatched(PickingObjectDTO pickingObjectDTO, void onItemDispatched(PickingObjectDTO pickingObjectDTO,
@ -1544,8 +1537,6 @@ public class SpedizioneViewModel {
Date dataScad, Date dataScad,
boolean canOverflowOrderQuantity, boolean canOverflowOrderQuantity,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete); RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
void onRowSaved();
} }
} }