Implementato recupera UL in Spedizione
This commit is contained in:
parent
2e1d4d6325
commit
908755a669
@ -88,7 +88,7 @@ dependencies {
|
||||
})
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation 'com.orhanobut:logger:2.2.0'
|
||||
implementation 'com.google.firebase:firebase-core:17.4.1'
|
||||
implementation 'com.google.firebase:firebase-core:17.4.2'
|
||||
implementation 'com.google.firebase:firebase-crash:16.2.1'
|
||||
implementation 'com.google.firebase:firebase-perf:19.0.7'
|
||||
implementation 'com.google.firebase:firebase-crashlytics:17.0.0'
|
||||
|
||||
@ -5,6 +5,7 @@ import androidx.databinding.ObservableArrayList;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
|
||||
@ -34,8 +35,10 @@ import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
|
||||
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.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
@ -45,6 +48,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||
import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding;
|
||||
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
|
||||
import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListAdapter;
|
||||
import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListModel;
|
||||
import it.integry.integrywmsnative.gest.spedizione_new.exceptions.InvalidPesoKGException;
|
||||
@ -92,6 +96,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
private Dialog mCurrentProgress;
|
||||
private boolean mShouldCloseActivity;
|
||||
|
||||
private final int PICK_UL_REQUEST = 1;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -368,8 +374,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
public void showCreatedUL() {
|
||||
this.mBindings.spedizioneFab.close(true);
|
||||
}
|
||||
|
||||
ArrayList<MtbColt> createdMtbColts = this.mViewmodel.getCreatedMtbColts();
|
||||
|
||||
Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, PrinterRESTConsumer.Type.PRIMARIA);
|
||||
this.startActivityForResult(myIntent, PICK_UL_REQUEST);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@ -383,7 +393,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUCreated(MtbColt mtbColt) {
|
||||
public void onLUOpened(MtbColt mtbColt) {
|
||||
this.addExtraItemsEnabled.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione());
|
||||
noLUPresent.set(false);
|
||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
@ -462,6 +472,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
@Override
|
||||
public void onItemDispatched(PickingObjectDTO pickingObjectDTO,
|
||||
MtbAart mtbAart,
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
@ -479,7 +490,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
boolean canOverflowOrderQuantity,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
|
||||
.setMtbAart(pickingObjectDTO.getMtbAart())
|
||||
.setMtbAart(mtbAart)
|
||||
.setInitialNumCnf(initialNumCnf)
|
||||
.setInitialQtaCnf(initialQtaCnf)
|
||||
.setInitialQtaTot(initialQtaTot)
|
||||
@ -545,4 +556,20 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
mCurrentProgress = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
|
||||
// Check which request we're responding to
|
||||
if (requestCode == PICK_UL_REQUEST) {
|
||||
|
||||
// Make sure the request was successful
|
||||
if (resultCode == RESULT_OK) {
|
||||
MtbColt recoveredMtbColt = DataCache.retrieveItem(data.getStringExtra("key"));
|
||||
this.mViewmodel.recoverLU(recoveredMtbColt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import androidx.databinding.ObservableArrayList;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -50,6 +51,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.spedizione_new.exceptions.CurrentMonoLUPositionIsNotCorrectException;
|
||||
import it.integry.integrywmsnative.gest.spedizione_new.exceptions.InvalidLUException;
|
||||
import it.integry.integrywmsnative.gest.spedizione_new.exceptions.InvalidPesoKGException;
|
||||
import it.integry.integrywmsnative.gest.spedizione_new.exceptions.NoPrintersFoundException;
|
||||
import it.integry.integrywmsnative.gest.spedizione_new.exceptions.OrdersLoadException;
|
||||
@ -282,8 +284,8 @@ public class SpedizioneViewModel {
|
||||
if (this.mListeners != null) mListeners.onError(ex);
|
||||
}
|
||||
|
||||
private void sendLUCreated(MtbColt mtbColt) {
|
||||
if (this.mListeners != null) mListeners.onLUCreated(mtbColt);
|
||||
private void sendLUOpened(MtbColt mtbColt) {
|
||||
if (this.mListeners != null) mListeners.onLUOpened(mtbColt);
|
||||
}
|
||||
|
||||
private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) {
|
||||
@ -316,6 +318,7 @@ public class SpedizioneViewModel {
|
||||
}
|
||||
|
||||
private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO,
|
||||
MtbAart mtbAart,
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
@ -333,6 +336,7 @@ public class SpedizioneViewModel {
|
||||
boolean canOverflowOrderQuantity,
|
||||
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
|
||||
if (this.mListeners != null) mListeners.onItemDispatched(pickingObjectDTO,
|
||||
mtbAart,
|
||||
initialNumCnf,
|
||||
initialQtaCnf,
|
||||
initialQtaTot,
|
||||
@ -477,7 +481,9 @@ public class SpedizioneViewModel {
|
||||
mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
|
||||
|
||||
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
|
||||
searchArtFromUL(mtbColt, onComplete);
|
||||
if(mtbColt.getSegno() != -1) {
|
||||
searchArtFromUL(mtbColt, onComplete);
|
||||
} else this.sendError(new InvalidLUException());
|
||||
} else {
|
||||
this.sendError(new NoArtsFoundException());
|
||||
}
|
||||
@ -763,6 +769,7 @@ public class SpedizioneViewModel {
|
||||
|
||||
this.sendOnItemDispatched(
|
||||
pickingObjectDTO,
|
||||
pickingObjectDTO.getMtbAart(),
|
||||
null, null, null,
|
||||
qtaDaEvadere,
|
||||
numCnfDaEvadere,
|
||||
@ -848,6 +855,7 @@ public class SpedizioneViewModel {
|
||||
|
||||
this.sendOnItemDispatched(
|
||||
pickingObjectDTO,
|
||||
pickingObjectDTO.getMtbAart(),
|
||||
initialNumCnf,
|
||||
initialQtaCnf,
|
||||
initialQtaTot,
|
||||
@ -876,30 +884,49 @@ public class SpedizioneViewModel {
|
||||
|
||||
|
||||
public void dispatchRowEdit(final MtbColr mtbColrToEdit) {
|
||||
PickingObjectDTO pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
.filter(x -> Stream.of(x.getWithdrawMtbColr()).anyMatch(y -> y == mtbColrToEdit))
|
||||
.single();
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
Optional<PickingObjectDTO> optionalPickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
.filter(x -> Stream.of(x.getWithdrawMtbColr()).anyMatch(y -> y == mtbColrToEdit))
|
||||
.findSingle();
|
||||
|
||||
PickingObjectDTO pickingObjectDTO = null;
|
||||
|
||||
if(optionalPickingObjectDTO.isPresent()) {
|
||||
pickingObjectDTO = optionalPickingObjectDTO.get();
|
||||
}
|
||||
|
||||
|
||||
PickingObjectDTO finalPickingObjectDTO = pickingObjectDTO;
|
||||
loadRifULFromMtbColr(mtbColrToEdit, mtbColtRif -> {
|
||||
|
||||
BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
||||
BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
||||
BigDecimal qtaCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd();
|
||||
BigDecimal totalQtaOrd = null;
|
||||
BigDecimal totalNumCnfOrd = null;
|
||||
BigDecimal qtaCnfOrd = null;
|
||||
|
||||
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal();
|
||||
AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal();
|
||||
BigDecimal numCnfDaEvadere = null;
|
||||
BigDecimal qtaDaEvadere = null;
|
||||
BigDecimal qtaCnfDaEvadere = null;
|
||||
|
||||
Stream.of(pickingObjectDTO.getWithdrawMtbColr())
|
||||
.forEach(row -> {
|
||||
numCnfWithdrawRows.addAndGet(row.getNumCnf());
|
||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||
});
|
||||
if(finalPickingObjectDTO != null) {
|
||||
totalQtaOrd = finalPickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
|
||||
totalNumCnfOrd = finalPickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
|
||||
qtaCnfOrd = finalPickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd();
|
||||
|
||||
BigDecimal numCnfDaEvadere = totalNumCnfOrd.subtract(numCnfWithdrawRows.getBigDecimalValue()).add(mtbColrToEdit.getNumCnf());
|
||||
BigDecimal qtaDaEvadere = totalQtaOrd.subtract(qtaColWithdrawRows.getBigDecimalValue()).add(mtbColrToEdit.getQtaCol());
|
||||
BigDecimal qtaCnfDaEvadere = mtbColrToEdit.getQtaCnf();
|
||||
|
||||
AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(0);
|
||||
AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(0);
|
||||
|
||||
Stream.of(finalPickingObjectDTO.getWithdrawMtbColr())
|
||||
.forEach(row -> {
|
||||
numCnfWithdrawRows.addAndGet(row.getNumCnf());
|
||||
qtaColWithdrawRows.addAndGet(row.getQtaCol());
|
||||
});
|
||||
|
||||
numCnfDaEvadere = totalNumCnfOrd.subtract(numCnfWithdrawRows.getBigDecimalValue()).add(mtbColrToEdit.getNumCnf());
|
||||
qtaDaEvadere = totalQtaOrd.subtract(qtaColWithdrawRows.getBigDecimalValue()).add(mtbColrToEdit.getQtaCol());
|
||||
qtaCnfDaEvadere = mtbColrToEdit.getQtaCnf();
|
||||
}
|
||||
|
||||
BigDecimal numCnfDaPrelevare = null;
|
||||
BigDecimal qtaColDaPrelevare = null;
|
||||
@ -960,7 +987,8 @@ public class SpedizioneViewModel {
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
this.sendOnItemDispatched(
|
||||
pickingObjectDTO,
|
||||
finalPickingObjectDTO,
|
||||
mtbColrToEdit.getMtbAart(),
|
||||
mtbColrToEdit.getNumCnf(),
|
||||
mtbColrToEdit.getQtaCnf(),
|
||||
mtbColrToEdit.getQtaCol(),
|
||||
@ -991,7 +1019,8 @@ public class SpedizioneViewModel {
|
||||
|
||||
private void loadRifULFromMtbColr(MtbColr mtbColr, RunnableArgs<MtbColt> onComplete) {
|
||||
//Se ho dei riferimenti ad una UL devo leggere la QTA ancora disponibile sulla Ul
|
||||
if (!UtilityString.isNullOrEmpty(mtbColr.getGestioneRif()) &&
|
||||
if (mtbColr != null &&
|
||||
!UtilityString.isNullOrEmpty(mtbColr.getGestioneRif()) &&
|
||||
!UtilityString.isNullOrEmpty(mtbColr.getSerColloRif()) &&
|
||||
!UtilityString.isNullOrEmpty(mtbColr.getDataColloRifS()) &&
|
||||
mtbColr.getNumColloRif() != null) {
|
||||
@ -1042,7 +1071,7 @@ public class SpedizioneViewModel {
|
||||
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini);
|
||||
|
||||
if (onComplete != null) onComplete.run();
|
||||
this.sendLUCreated(mtbColt);
|
||||
this.sendLUOpened(mtbColt);
|
||||
}, this::sendError);
|
||||
|
||||
}
|
||||
@ -1068,6 +1097,8 @@ public class SpedizioneViewModel {
|
||||
pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
|
||||
|
||||
if (mtbColrToDispatch != null) {
|
||||
|
||||
|
||||
mtbColr
|
||||
.setCodJcom(UtilityString.empty2null(mtbColrToDispatch.getCodJcom()))
|
||||
.setSerColloRif(UtilityString.empty2null(mtbColrToDispatch.getSerCollo()))
|
||||
@ -1075,16 +1106,20 @@ public class SpedizioneViewModel {
|
||||
.setGestioneRif(UtilityString.empty2null(mtbColrToDispatch.getGestione()))
|
||||
.setDataColloRif(UtilityString.empty2null(mtbColrToDispatch.getDataColloS()));
|
||||
|
||||
if (mCurrentMtbColt.getCodTcol() == null &&
|
||||
mCurrentMtbColt.getPesoKg() == null &&
|
||||
mCurrentMtbColt.getPesoNettoKg() == null) {
|
||||
|
||||
MtbColt sourceMtbColt = pickingObjectDTO.getTempPickData().getSourceMtbColt();
|
||||
|
||||
mCurrentMtbColt.setCodTcol(sourceMtbColt.getCodTcol());
|
||||
mCurrentMtbColt.setPesoKg(sourceMtbColt.getPesoKg());
|
||||
mCurrentMtbColt.setPesoNettoKg(sourceMtbColt.getPesoNettoKg());
|
||||
if(mtbColrToDispatch.getPesoNettoKg() != null) {
|
||||
//Proporzione
|
||||
BigDecimal pesoNettoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoNettoKg()), mtbColrToDispatch.getQtaCol());
|
||||
mtbColr.setPesoNettoKg(pesoNettoKg);
|
||||
}
|
||||
|
||||
if(mtbColrToDispatch.getPesoLordoKg() != null) {
|
||||
//Proporzione
|
||||
BigDecimal pesoLordoKg = UtilityBigDecimal.divide(UtilityBigDecimal.multiply(qtaTot, mtbColrToDispatch.getPesoLordoKg()), mtbColrToDispatch.getQtaCol());
|
||||
mtbColr.setPesoLordoKg(pesoLordoKg);
|
||||
}
|
||||
|
||||
|
||||
} else if (mEnableGiacenza && pickingObjectDTO.getMtbColts() != null && pickingObjectDTO.getMtbColts().size() > 0) {
|
||||
// Vecchia logica di aggancio UL (se non ho sparato una etichetta UL comunque ti aggangio la prima UL suggerita)
|
||||
// mtbColr
|
||||
@ -1174,17 +1209,18 @@ public class SpedizioneViewModel {
|
||||
|
||||
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
|
||||
|
||||
PickingObjectDTO pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
.filter(x -> Stream.of(x.getWithdrawMtbColr()).anyMatch(y -> y == mtbColrToUpdate))
|
||||
.single();
|
||||
|
||||
|
||||
mtbColr.setNumCnf(numCnf)
|
||||
.setQtaCnf(qtaCnf)
|
||||
.setQtaCol(qtaTot);
|
||||
|
||||
pickingObjectDTO.getWithdrawMtbColr().remove(mtbColrToUpdate);
|
||||
pickingObjectDTO.getWithdrawMtbColr().add(mtbColr);
|
||||
Optional<PickingObjectDTO> pickingObjectDTO = Stream.of(this.mPickingList.getValue())
|
||||
.filter(x -> Stream.of(x.getWithdrawMtbColr()).anyMatch(y -> y == mtbColrToUpdate))
|
||||
.findSingle();
|
||||
|
||||
if(pickingObjectDTO.isPresent()) {
|
||||
pickingObjectDTO.get().getWithdrawMtbColr().remove(mtbColrToUpdate);
|
||||
pickingObjectDTO.get().getWithdrawMtbColr().add(mtbColr);
|
||||
}
|
||||
|
||||
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
|
||||
this.mCurrentMtbColt.getMtbColr().add(mtbColr);
|
||||
@ -1343,6 +1379,15 @@ public class SpedizioneViewModel {
|
||||
}, onFailed);
|
||||
}
|
||||
|
||||
|
||||
public void recoverLU(MtbColt mtbColt) {
|
||||
this.mCurrentMtbColt = mtbColt;
|
||||
mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(mtbColt, mTestateOrdini);
|
||||
|
||||
this.resetMatchedRows();
|
||||
this.sendLUOpened(this.mCurrentMtbColt);
|
||||
}
|
||||
|
||||
private void postCloseOperations(List<MtbColt> mtbColtList) {
|
||||
this.mColliRegistrati.addAll(mtbColtList);
|
||||
|
||||
@ -1411,6 +1456,10 @@ public class SpedizioneViewModel {
|
||||
return mPickingList;
|
||||
}
|
||||
|
||||
public ArrayList<MtbColt> getCreatedMtbColts() {
|
||||
return (ArrayList<MtbColt>) this.mColliRegistrati;
|
||||
}
|
||||
|
||||
public SpedizioneViewModel setListeners(Listeners listeners) {
|
||||
this.mListeners = listeners;
|
||||
return this;
|
||||
@ -1421,7 +1470,7 @@ public class SpedizioneViewModel {
|
||||
|
||||
void onLoadingEnded();
|
||||
|
||||
void onLUCreated(MtbColt mtbColt);
|
||||
void onLUOpened(MtbColt mtbColt);
|
||||
|
||||
void onLUClosed();
|
||||
|
||||
@ -1440,6 +1489,7 @@ public class SpedizioneViewModel {
|
||||
void onError(Exception ex);
|
||||
|
||||
void onItemDispatched(PickingObjectDTO pickingObjectDTO,
|
||||
MtbAart mtbAart,
|
||||
BigDecimal initialNumCnf,
|
||||
BigDecimal initialQtaCnf,
|
||||
BigDecimal initialQtaTot,
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione_new.exceptions;
|
||||
|
||||
public class InvalidLUException extends Exception {
|
||||
public InvalidLUException() {
|
||||
super("L'unità logistica scansionata non è valida");
|
||||
}
|
||||
}
|
||||
@ -64,6 +64,7 @@ public class BottomSheetFragmentLUContentView extends BottomSheetFragmentBaseVie
|
||||
this.mViewModel.getObservableMtbColt().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
|
||||
@Override
|
||||
public void onPropertyChanged(Observable sender, int propertyId) {
|
||||
initAdapter();
|
||||
if(mViewModel.getObservableMtbColt().get() != null) {
|
||||
onMtbColrItemChanged();
|
||||
|
||||
|
||||
@ -27,6 +27,8 @@ public class HoneywellBarcodeTypeMapper {
|
||||
return BarcodeType.UPCA;
|
||||
case "E":
|
||||
return BarcodeType.UPCE;
|
||||
case "e":
|
||||
return BarcodeType.INTERLEAVED_2OF5;
|
||||
default:
|
||||
Log.d("SCAN TYPE", inputType);
|
||||
return null;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user