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 f541207c..a41a66e7 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 @@ -31,6 +31,7 @@ import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityExceptions; @@ -42,6 +43,8 @@ import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListModel; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; public class SpedizioneActivity extends AppCompatActivity implements SpedizioneViewModel.Listeners { @@ -77,7 +80,6 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione); -// ((MainApplication) getApplicationContext()).appComponent.inject(this); SpedizioneComponent spedizioneComponent = DaggerSpedizioneComponent.builder() .mainApplicationModule(MainApplication.appModule) .mainApplicationComponent(MainApplication.appComponent) @@ -94,7 +96,6 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV mFlashShowCodForn = customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE); mBindings.setLifecycleOwner(this); - mBindings.setSpedizioneViewModel(mViewmodel); mBindings.setSpedizioneView(this); this.initBarcodeReader(); @@ -105,6 +106,12 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV mViewmodel.setDataset(codMdep, mPickingList, mTestateOrdini); } + @Override + public boolean onSupportNavigateUp() { + onBackPressed(); + return true; + } + private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessfull(onScanSuccessful) @@ -121,6 +128,12 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV SpedizioneListAdapter spedizioneListAdapter = new SpedizioneListAdapter(this, mSpedizioneMutableData); this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter); this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); + + spedizioneListAdapter.setOnItemClicked(clickedItem -> { + if(!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick()) { + this.mViewmodel.dispatchOrdineRow(clickedItem); + } + }); } @@ -197,13 +210,15 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV spedizioneListModel.setUntMis(x.getMtbAart().getUntMis()); } + spedizioneListModel.setOriginalModel(x); + return spedizioneListModel; }).toList(); } private boolean isThereAnyItemToPick(List dataList) { return Stream.of(dataList) - .anyMatch(x -> !x.isDeactivated() && !x.isHidden() && !x.isTempHidden()); + .anyMatch(x -> !x.isHidden() && !x.isTempHidden()); } private RunnableArgs onScanSuccessful = data -> { @@ -270,4 +285,12 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV UtilityExceptions.defaultException(this, ex, mCurrentProgress); BarcodeManager.enable(); } + + @Override + public void onItemDispatched(MtbAart mtbAart) { + DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO(); + dialogInputQuantityV2DTO.setMtbAart(mtbAart); + + DialogInputQuantityV2.make(this, dialogInputQuantityV2DTO).show(); + } } 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 5d5262df..d0cb2d79 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 @@ -35,6 +35,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityPosizione; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.spedizione_new.exceptions.CurrentMonoLUPositionIsNotCorrectException; @@ -204,6 +205,10 @@ public class SpedizioneViewModel { for (Listeners listener : mListeners) listener.onFilterChanged(newValue); } + private void sendOnItemDispatched(MtbAart mtbAart) { + for (Listeners listener : mListeners) listener.onItemDispatched(mtbAart); + } + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { //Se non c'รจ una UL aperta @@ -566,7 +571,7 @@ public class SpedizioneViewModel { } - private void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) { + public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) { AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(); @@ -577,6 +582,15 @@ public class SpedizioneViewModel { qtaColWithdrawRows.addAndGet(row.getQtaCol()); }); + + BigDecimal numCnfDaEvadere = pickingObjectDTO.getNumCnfCollo().subtract(numCnfWithdrawRows.getBigDecimalValue()); + BigDecimal qtaColDaEvadere = pickingObjectDTO.getQtaCollo().subtract(qtaColWithdrawRows.getBigDecimalValue()); + + if(UtilityBigDecimal.lowerThan(numCnfDaEvadere, BigDecimal.ZERO)) numCnfDaEvadere = BigDecimal.ZERO; + if(UtilityBigDecimal.lowerThan(qtaColDaEvadere, BigDecimal.ZERO)) qtaColDaEvadere = BigDecimal.ZERO; + + + this.sendOnItemDispatched(pickingObjectDTO.getMtbAart()); } @@ -637,6 +651,8 @@ public class SpedizioneViewModel { void onFilterChanged(String newValue); void onError(Exception ex); + + void onItemDispatched(MtbAart mtbAart); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java index 3fec2ea1..3a6ce8a5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java @@ -28,6 +28,7 @@ import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -44,6 +45,8 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter mDataset = new ArrayList<>(); + private RunnableArgs mOnItemClicked; + static class SubheaderHolder extends RecyclerView.ViewHolder { SpedizioneMainListGroupHeaderBinding mBinding; @@ -80,6 +83,10 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter onItemClicked) { + this.mOnItemClicked = onItemClicked; + } + @Override public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { @@ -99,12 +106,6 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter { + if(this.mOnItemClicked != null) this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel()); + }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListModel.java index e435d708..45f8874a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListModel.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.gest.spedizione_new.core; import java.math.BigDecimal; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; + public class SpedizioneListModel { private String groupTitle; @@ -19,6 +21,8 @@ public class SpedizioneListModel { private boolean active; + private PickingObjectDTO mOriginalModel; + public String getGroupTitle() { return groupTitle; } @@ -117,4 +121,13 @@ public class SpedizioneListModel { this.active = active; return this; } + + public PickingObjectDTO getOriginalModel() { + return mOriginalModel; + } + + public SpedizioneListModel setOriginalModel(PickingObjectDTO originalModel) { + this.mOriginalModel = originalModel; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java new file mode 100644 index 00000000..3b25c95d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java @@ -0,0 +1,50 @@ +package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; + +import android.app.Dialog; +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.view.LayoutInflater; + +import androidx.databinding.DataBindingUtil; + +import org.jetbrains.annotations.NotNull; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; + +public class DialogInputQuantityV2 { + + + private Dialog mDialog; + private Context mContext; + + private DialogInputQuantityV2ViewModel mViewModel; + private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; + + public static Dialog make(@NotNull Context context, @NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO) { + return new DialogInputQuantityV2(context, dialogInputQuantityV2DTO) + .mDialog; + } + + private DialogInputQuantityV2(@NotNull Context context, @NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO) { + this.mContext = context; + this.mDialogInputQuantityV2DTO = dialogInputQuantityV2DTO; + + LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + DialogInputQuantityV2Binding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_v2, null, false); + + this.mViewModel = new DialogInputQuantityV2ViewModel(); + this.mViewModel.setMtbAart(dialogInputQuantityV2DTO.getMtbAart()); + + bindings.setViewmodel(this.mViewModel); + + mDialog = new Dialog(context); + mDialog.setContentView(bindings.getRoot()); + + mDialog.setCanceledOnTouchOutside(false); + mDialog.setCancelable(false); + mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java new file mode 100644 index 00000000..43d3a330 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -0,0 +1,17 @@ +package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; + +import it.integry.integrywmsnative.core.model.MtbAart; + +public class DialogInputQuantityV2DTO { + + private MtbAart mtbAart; + + public MtbAart getMtbAart() { + return mtbAart; + } + + public DialogInputQuantityV2DTO setMtbAart(MtbAart mtbAart) { + this.mtbAart = mtbAart; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java new file mode 100644 index 00000000..ef67b3cf --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -0,0 +1,20 @@ +package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; + +import androidx.databinding.ObservableField; + +import it.integry.integrywmsnative.core.model.MtbAart; + +public class DialogInputQuantityV2ViewModel { + + public ObservableField mtbAart = new ObservableField<>(); + + + public DialogInputQuantityV2ViewModel() { + + } + + public void setMtbAart(MtbAart mtbAart) { + this.mtbAart.set(mtbAart); + } + +} diff --git a/app/src/main/res/drawable/bg_bordered.xml b/app/src/main/res/drawable/bg_bordered.xml new file mode 100644 index 00000000..2b79012a --- /dev/null +++ b/app/src/main/res/drawable/bg_bordered.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_spedizione.xml b/app/src/main/res/layout/activity_spedizione.xml index d33173a3..f7668ef0 100644 --- a/app/src/main/res/layout/activity_spedizione.xml +++ b/app/src/main/res/layout/activity_spedizione.xml @@ -8,10 +8,6 @@ - - diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml new file mode 100644 index 00000000..338f616f --- /dev/null +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 9cd1ea14..6c7408b9 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -92,6 +92,7 @@ collo colli + Unt mis col Chiudi UL Articoli presenti diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9f78a3a1..e6d5e446 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -31,6 +31,7 @@ package packages + UM pkg Integry WMS Integry @@ -44,7 +45,7 @@ Waiting Loading Completed - Search... + Search… Login Permissions are required for app to work properly %s of %s]]> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index da1bec89..8b8de75f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -84,12 +84,19 @@ - - + + + +