diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java index 1a3c1243..9050c3b6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java @@ -11,7 +11,7 @@ public class BaseActivity extends AppCompatActivity { public BaseActivity() { -// Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, BaseActivity.class)); + Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler(this, BaseActivity.class)); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java index 70cf9adf..67511009 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.gest.spedizione_new; -import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; @@ -8,7 +7,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; import android.app.Dialog; import android.os.Bundle; import android.text.SpannableString; -import android.widget.Toast; import com.annimon.stream.Stream; import com.tfb.fbtoast.FBToast; @@ -53,6 +51,7 @@ import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; 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.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; @@ -61,6 +60,7 @@ import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso; 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.input_quantity_v2.DialogInputQuantityV2ResultDTO; +import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt; public class SpedizioneActivity extends BaseActivity implements SpedizioneViewModel.Listeners, BottomSheetFragmentLUContentViewModel.Listener, BottomSheetFragmentLUContentView.Listener { @@ -123,6 +123,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo mBindings.bottomSheetLuContent.setListener(this); mBottomSheetFragmentLUContentViewModel.setListener(this); + this.addExtraItemsEnabled.set(SettingsManager.iDB().isFlagCanAddExtraItemSpedizione()); this.initVars(); this.initBarcodeReader(); @@ -325,6 +326,13 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo }); }; + public void addExtraItem() { + DialogScanArt.make(this, (status, mtbAart, ean128Model) -> { + if(status == DialogConsts.Results.YES) { + this.mViewmodel.dispatchExtraItem(mtbAart, ean128Model); + } + }).show(); + } public void startManualSearch() { BarcodeManager.disable(); @@ -354,8 +362,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo this.openProgress(); this.mViewmodel.createNewLU(null, null, () -> { - mCurrentProgress.dismiss(); - mCurrentProgress = null; + this.closeProgress(); }); } @@ -364,8 +371,14 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo } + @Override - public void onDatasetLoaded() { + public void onLoadingStarted() { + this.openProgress(); + } + + @Override + public void onLoadingEnded() { this.closeProgress(); } @@ -375,18 +388,10 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt); - - this.closeProgress(); - } - - @Override - public void onLUClosing() { - this.openProgress(); } @Override public void onLUClosed() { - this.closeProgress(); noLUPresent.set(true); this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null); @@ -502,7 +507,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo @Override public void onRowSaved() { - this.closeProgress(); FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java index 562535d7..11723726 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java @@ -41,6 +41,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; 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.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.utility.UtilityBarcode; @@ -113,6 +114,8 @@ public class SpedizioneViewModel { List pickingList, List testateOrdini, List colliRegistrati) { + this.sendOnLoadingStarted(); + this.mDefaultCodMdep = codMdep; this.mTestateOrdini = testateOrdini; this.mColliRegistrati = colliRegistrati; @@ -124,12 +127,12 @@ public class SpedizioneViewModel { if (enableGiacenza) { mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> { this.mPickingList.postValue(pickingObjectList); - this.sendDatasetLoaded(); + this.sendOnLoadingEnded(); }, ex -> this.sendError(new OrdersLoadException(ex))); } else { getEmptyPickingList(pickingList, pickingObjectList -> { this.mPickingList.postValue(pickingObjectList); - this.sendDatasetLoaded(); + this.sendOnLoadingEnded(); }); } @@ -266,9 +269,12 @@ public class SpedizioneViewModel { } + private void sendOnLoadingStarted() { + if (this.mListeners != null) mListeners.onLoadingStarted(); + } - private void sendDatasetLoaded() { - if (this.mListeners != null) mListeners.onDatasetLoaded(); + private void sendOnLoadingEnded() { + if (this.mListeners != null) mListeners.onLoadingEnded(); } private void sendError(Exception ex) { @@ -292,10 +298,6 @@ public class SpedizioneViewModel { if (this.mListeners != null) mListeners.onLUPrintError(ex, onComplete); } - private void sendLUClosing() { - if (this.mListeners != null) mListeners.onLUClosing(); - } - private void sendLUClosed() { if (this.mListeners != null) mListeners.onLUClosed(); } @@ -767,11 +769,83 @@ public class SpedizioneViewModel { } + public void dispatchExtraItem(MtbAart mtbAart, Ean128Model ean128Model) { + + PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() + .setMtbAart(mtbAart) + .setTempPickData(PickDataDTO.fromEan128(ean128Model)); + + + + BigDecimal numCnfDaPrelevare = null; + BigDecimal qtaColDaPrelevare = null; + BigDecimal qtaCnfDaPrelevare = null; + + String partitaMag = null; + Date dataScad = null; + + if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) { + //Oppure le info del barcode scansionato + PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO(); + + qtaColDaPrelevare = manualPickDTO.getQtaTot(); + numCnfDaPrelevare = manualPickDTO.getNumCnf(); + + if (mtbAart.isFlagQtaCnfFissaBoolean()) { + qtaCnfDaPrelevare = mtbAart.getQtaCnf(); + } else if (qtaColDaPrelevare != null && numCnfDaPrelevare != null) { + qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); + } + + + if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) { + numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); + qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); + } else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) { + qtaCnfDaPrelevare = mtbAart.getQtaCnf(); + qtaColDaPrelevare = UtilityBigDecimal.multiply(numCnfDaPrelevare, qtaCnfDaPrelevare); + } + + if (manualPickDTO.getMtbPartitaMag() != null) { + partitaMag = manualPickDTO.getMtbPartitaMag().getPartitaMag(); + dataScad = manualPickDTO.getMtbPartitaMag().getDataScadD(); + } + } + + this.sendOnItemDispatched( + pickingObjectDTO, + null, null, null, + null, + null, + null, + qtaColDaPrelevare, + numCnfDaPrelevare, + qtaCnfDaPrelevare, + null, + null, + null, + partitaMag, + dataScad, + mCanOverflowOrderQuantity, + (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, + pickedQuantityDTO.getNumCnf(), + pickedQuantityDTO.getQtaCnf(), + pickedQuantityDTO.getQtaTot(), + pickedQuantityDTO.getPartitaMag(), + pickedQuantityDTO.getDataScad(), + shouldCloseLU); + }); + } + + 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(); + loadRifULFromMtbColr(mtbColrToEdit, mtbColtRif -> { BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); @@ -847,6 +921,8 @@ public class SpedizioneViewModel { partitaMag = mtbColrToEdit.getPartitaMag(); dataScad = mtbColrToEdit.getDataScadPartitaD(); + this.sendOnLoadingEnded(); + this.sendOnItemDispatched( pickingObjectDTO, mtbColrToEdit.getNumCnf(), @@ -936,6 +1012,8 @@ public class SpedizioneViewModel { } public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { + this.sendOnLoadingStarted(); + final MtbColr mtbColr = new MtbColr() .setCodMart(pickingObjectDTO.getSitArtOrdDTO().getCodMart()) .setPartitaMag(partitaMag) @@ -1019,6 +1097,7 @@ public class SpedizioneViewModel { resetMatchedRows(); this.sendOnRowSaved(); + this.sendOnLoadingEnded(); if (shouldCloseLU) closeLU(finalShouldPrint); }, this::sendError); @@ -1027,6 +1106,8 @@ public class SpedizioneViewModel { public 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()) @@ -1065,6 +1146,7 @@ public class SpedizioneViewModel { this.resetMatchedRows(); this.sendOnRowSaved(); + this.sendOnLoadingEnded(); }, this::sendError); } @@ -1074,6 +1156,8 @@ public class SpedizioneViewModel { this.sendMtbColrDeleteRequest(shouldDelete -> { if (shouldDelete) { + this.sendOnLoadingStarted(); + MtbColt mtbColt = new MtbColt() .setNumCollo(mtbColrToDelete.getNumCollo()) .setDataCollo(mtbColrToDelete.getDataColloS()) @@ -1101,6 +1185,7 @@ public class SpedizioneViewModel { this.resetMatchedRows(); this.sendOnRowSaved(); + this.sendOnLoadingEnded(); }, this::sendError); } @@ -1111,12 +1196,15 @@ public class SpedizioneViewModel { public void closeLU(boolean shouldPrint) { if (mCurrentMtbColt == null) return; - this.sendLUClosing(); + this.sendOnLoadingStarted(); mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> { if (canBeDeleted) { - deleteLU(this::sendLUClosed); + deleteLU(() -> { + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); } else { Runnable saveAction = () -> { @@ -1251,6 +1339,7 @@ public class SpedizioneViewModel { this.resetMatchedRows(); this.sendLUClosed(); + this.sendOnLoadingEnded(); } private void deleteLU(Runnable onComplete) { @@ -1283,12 +1372,12 @@ public class SpedizioneViewModel { } public interface Listeners { - void onDatasetLoaded(); + void onLoadingStarted(); + + void onLoadingEnded(); void onLUCreated(MtbColt mtbColt); - void onLUClosing(); - void onLUClosed(); void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java index 85fdde8b..a70b4569 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java @@ -100,8 +100,8 @@ public class UltimeConsegneClienteRESTConsumer { " ,dtb_docr.[cod_mart]" + " ,dtb_docr.[descrizione]" + " ,dtb_docr.[unt_doc]" + - " ,dtb_docr.[rap_conv]" + - " ,dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) as qta_doc" + + " ,(dtb_docr.[rap_conv] / dtb_docr.[rap_conv]) as rap_conv" + + " ,(dtb_docr.[qta_doc] * dtb_docr.[rap_conv]) - ISNULL(mtb_colr.qta_col, 0) as qta_doc" + " ,dtb_docr.[val_unt]" + " ,dtb_docr.[sconto5]" + " ,dtb_docr.[sconto6]" + diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java index 3b3c89cf..567c6a37 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java @@ -79,7 +79,6 @@ public class MainListVenditaAdapter extends SectionedRecyclerViewAdapter CREATOR = new Creator() { - @Override - public OrdineVenditaInevasoDTO createFromParcel(Parcel in) { - return new OrdineVenditaInevasoDTO(in); - } - - @Override - public OrdineVenditaInevasoDTO[] newArray(int size) { - return new OrdineVenditaInevasoDTO[size]; - } - }; public String getDataOrdS() { return data; @@ -513,19 +385,24 @@ public class OrdineVenditaInevasoDTO implements Parcelable { return this; } - - public boolean flagExistCollo() { - return existCollo != null && existCollo.equalsIgnoreCase("S"); - } - public String getExistCollo() { + public boolean isExistCollo() { return existCollo; } - public OrdineVenditaInevasoDTO setExistCollo(String existCollo) { + public OrdineVenditaInevasoDTO setExistCollo(boolean existCollo) { this.existCollo = existCollo; return this; } + public boolean isFlagEvaso() { + return flagEvaso; + } + + public OrdineVenditaInevasoDTO setFlagEvaso(boolean flagEvaso) { + this.flagEvaso = flagEvaso; + return this; + } + public String getNomeAgente() { return nomeAgente; } diff --git a/app/src/main/res/layout/activity_spedizione.xml b/app/src/main/res/layout/activity_spedizione.xml index 90548109..4bd2e7ba 100644 --- a/app/src/main/res/layout/activity_spedizione.xml +++ b/app/src/main/res/layout/activity_spedizione.xml @@ -64,7 +64,8 @@ android:background="@drawable/ripple_effect" android:src="@drawable/ic_add_24dp" android:tint="@color/colorPrimaryGray" - app:visibility="@{spedizioneView.addExtraItemsEnabled}" /> + app:visibility="@{spedizioneView.addExtraItemsEnabled}" + app:singleClick="@{() -> spedizioneView.addExtraItem()}"/> @@ -85,7 +86,7 @@ android:layout_gravity="end" android:adjustViewBounds="true" android:background="@drawable/ripple_effect" - android:onClick="@{() -> spedizioneView.startCameraBarcode()}" + app:singleClick="@{() -> spedizioneView.startCameraBarcode()}" android:src="@drawable/ic_photo_camera_black_24dp" android:tint="@color/colorPrimaryGray" android:visibility="@{BuildConfig.DEBUG ? View.VISIBLE : View.GONE}" />