Ricreato caricamento lista principale
This commit is contained in:
parent
d3396cdb63
commit
f9483e14be
@ -91,27 +91,27 @@ dependencies {
|
||||
//Firebase
|
||||
|
||||
// Import the Firebase BoM
|
||||
implementation platform('com.google.firebase:firebase-bom:25.12.0')
|
||||
implementation platform('com.google.firebase:firebase-bom:26.0.0')
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
implementation 'com.google.firebase:firebase-core'
|
||||
implementation 'com.google.firebase:firebase-crash'
|
||||
implementation 'com.google.firebase:firebase-perf'
|
||||
implementation 'com.google.firebase:firebase-crashlytics'
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
implementation 'com.google.android.gms:play-services-basement:17.4.0'
|
||||
implementation 'com.google.firebase:firebase-perf'
|
||||
implementation 'com.google.android.gms:play-services-basement:17.5.0'
|
||||
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'com.google.android.material:material:1.3.0-alpha03'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.3'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||
implementation 'androidx.preference:preference:1.1.1'
|
||||
implementation 'androidx.preference:preference-ktx:1.1.1'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||
implementation 'com.annimon:stream:1.2.1'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'
|
||||
implementation 'org.apache.commons:commons-text:1.9'
|
||||
|
||||
@ -14,14 +14,6 @@
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
"android_info": {
|
||||
"package_name": "it.integry.integrywmsnative",
|
||||
"certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "963231271247-59qdc1vobbnjfp135ce4hv12c53s9hse.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
@ -30,6 +22,14 @@
|
||||
"certificate_hash": "3b6d97a981f446f5011049d781aeb9960f9352af"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
"android_info": {
|
||||
"package_name": "it.integry.integrywmsnative",
|
||||
"certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
@ -41,20 +41,13 @@
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"analytics_service": {
|
||||
"status": 1
|
||||
},
|
||||
"appinvite_service": {
|
||||
"status": 2,
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
"ads_service": {
|
||||
"status": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,10 +25,14 @@
|
||||
android:windowSoftInputMode="adjustNothing" />
|
||||
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity" />
|
||||
<activity
|
||||
android:name=".gest.picking_resi.PickingResiActivity"
|
||||
android:name=".gest.picking_resi_OLD.PickingResiActivity"
|
||||
android:label="@string/activity_ultime_consegne_title"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Light" />
|
||||
<activity
|
||||
android:name=".gest.picking_resi.PickingResiActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Light" />
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:screenOrientation="portrait"
|
||||
|
||||
@ -8,6 +8,8 @@ import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePicking
|
||||
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule;
|
||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoComponent;
|
||||
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoModule;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
|
||||
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
|
||||
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdineAcquistoGrigliaComponent;
|
||||
@ -28,7 +30,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
|
||||
PickingLiberoModule.class,
|
||||
RettificaGiacenzeModule.class,
|
||||
SpedizioneModule.class,
|
||||
AccettazionePickingModule.class})
|
||||
AccettazionePickingModule.class,
|
||||
PickingResiModule.class})
|
||||
public interface MainApplicationComponent {
|
||||
|
||||
MainActivityComponent.Factory mainActivityComponent();
|
||||
@ -38,5 +41,6 @@ public interface MainApplicationComponent {
|
||||
RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
|
||||
SpedizioneComponent.Factory spedizioneComponent();
|
||||
AccettazionePickingComponent.Factory accettazionePickingComponent();
|
||||
PickingResiComponent.Factory pickingResiComponent();
|
||||
|
||||
}
|
||||
|
||||
@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
|
||||
@ -246,7 +247,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setUntMis("col");
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
@ -299,7 +300,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setUntMis("col");
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
@ -353,7 +354,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
|
||||
|
||||
accettazioneListModel.setQtaEvasa(numCnfEvasa);
|
||||
accettazioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
accettazioneListModel.setUntMis("col");
|
||||
accettazioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
} else {
|
||||
BigDecimal qtaEvasa = BigDecimal.ZERO;
|
||||
|
||||
|
||||
@ -1,109 +1,126 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.tfb.fbtoast.FBToast;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
|
||||
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
|
||||
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.DialogInputQuantity;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListModel;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||
|
||||
public class PickingResiActivity extends BaseActivity implements IOnColloClosedCallback {
|
||||
public class PickingResiActivity extends BaseActivity implements BottomSheetFragmentLUContentView.Listener, BottomSheetFragmentLUContentViewModel.Listener, PickingResiViewModel.Listener {
|
||||
|
||||
|
||||
private ActivityPickingResiBinding mBindings;
|
||||
|
||||
@Inject
|
||||
PickingResiViewModel mViewmodel;
|
||||
|
||||
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
|
||||
|
||||
private ObservableArrayList<PickingResiListModel> mPickingResiMutableData = new ObservableArrayList<>();
|
||||
|
||||
public BindableBoolean noLUPresent = new BindableBoolean(true);
|
||||
public BindableBoolean noItemsToPick = new BindableBoolean(false);
|
||||
public BindableBoolean bottomSheetEnabled = new BindableBoolean(false);
|
||||
|
||||
private String mTitle;
|
||||
private List<DocumentoResoDTO> mDocumentiResiList;
|
||||
public ObservableList<WithdrawableDtbDocr> mDtbDocrList;
|
||||
private final List<MtbColt> mColliRegistrati = new ArrayList<>();
|
||||
|
||||
private ActivityPickingResiBinding mBinding;
|
||||
private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
|
||||
|
||||
public ObservableField<MtbColt> currentMtbColt = new ObservableField<>();
|
||||
|
||||
private PickingResiListAdapter mAdapter;
|
||||
private int mDefaultSegnoLU;
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
public ObservableList<WithdrawableDtbDocr> mDtbDocrList = new ObservableArrayList<>();
|
||||
|
||||
private String mActivityTitle;
|
||||
private String mDefaultGestioneOfUL;
|
||||
private String mDefaultCodAnagOfUL;
|
||||
private Integer mDefaultSegnoOfUL;
|
||||
|
||||
private boolean mShouldCloseActivity;
|
||||
|
||||
public static void startActivity(Context context, String activityTitle, List<DocumentoResoDTO> documentoResoDTOList, Integer segno) {
|
||||
String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
|
||||
|
||||
Intent intent = new Intent(context, PickingResiActivity.class);
|
||||
|
||||
intent.putExtra("activity_title", activityTitle);
|
||||
|
||||
String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
|
||||
intent.putExtra("key", consegneCacheKey);
|
||||
|
||||
intent.putExtra("segno", segno);
|
||||
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
|
||||
mBinding.setViewmodel(this);
|
||||
|
||||
this.mDtbDocrList = new ObservableArrayList<>();
|
||||
|
||||
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, this.mBinding.bottomSheetInclude);
|
||||
mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
|
||||
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onItemEdited);
|
||||
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onItemDeleted);
|
||||
|
||||
|
||||
mTitle = getIntent().getStringExtra("activity_title");
|
||||
mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key"));
|
||||
mDefaultSegnoOfUL = getIntent().getIntExtra("segno", +1);
|
||||
mDefaultSegnoLU = getIntent().getIntExtra("segno", +1);;
|
||||
|
||||
mActivityTitle = getIntent().getStringExtra("activity_title");
|
||||
mBindings = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
|
||||
|
||||
this.initView();
|
||||
MainApplication.appComponent
|
||||
.pickingResiComponent()
|
||||
.create()
|
||||
.inject(this);
|
||||
|
||||
mViewmodel.setListener(this);
|
||||
|
||||
setSupportActionBar(mBindings.toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
getSupportActionBar().setTitle(mTitle);
|
||||
|
||||
mBindings.setLifecycleOwner(this);
|
||||
mBindings.setPickingResiView(this);
|
||||
|
||||
mBindings.bottomSheetLuContent.init(mBindings.bottomSheetLuContent, null);
|
||||
mBottomSheetFragmentLUContentViewModel = mBindings.bottomSheetLuContent.getViewModelInstance();
|
||||
mBindings.bottomSheetLuContent.setListener(this);
|
||||
mBottomSheetFragmentLUContentViewModel.setListener(this);
|
||||
|
||||
|
||||
this.initVars();
|
||||
this.initBarcodeReader();
|
||||
this.initRecyclerView();
|
||||
|
||||
this.mViewmodel.init(mDocumentiResiList);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -114,435 +131,177 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if(mArticoliInColloBottomSheetViewModel.isExpanded()){
|
||||
mArticoliInColloBottomSheetViewModel.collapse();
|
||||
}
|
||||
else if(thereIsAnOpenedUL()) {
|
||||
mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> {
|
||||
|
||||
if (this.mBindings.bottomSheetLuContent.isExpanded()) {
|
||||
this.mBindings.bottomSheetLuContent.collapse();
|
||||
} else if (!noLUPresent.get()) {
|
||||
this.mShouldCloseActivity = true;
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
this.mViewmodel.closeLU(true);
|
||||
} else {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void initVars() {
|
||||
this.noLUPresent.addOnPropertyChangedCallback(() -> {
|
||||
this.bottomSheetEnabled.set(!this.noLUPresent.get());
|
||||
});
|
||||
|
||||
}
|
||||
else {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
private void initView() {
|
||||
private void initBarcodeReader() {
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(this::onScanSuccessful)
|
||||
.setOnScanSuccessfull(onScanSuccessful)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||
|
||||
|
||||
setSupportActionBar(this.mBinding.toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
getSupportActionBar().setTitle(mActivityTitle);
|
||||
|
||||
this.mBinding.elevatedToolbar.setRecyclerView(this.mBinding.mainList);
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(this);
|
||||
UltimeConsegneClienteRESTConsumer.loadDocRowFromConsegna(mDocumentiResiList, dtbDocrToPick -> {
|
||||
progressDialog.dismiss();
|
||||
this.mDtbDocrList.addAll(dtbDocrToPick);
|
||||
|
||||
try {
|
||||
this.initDatiPicking();
|
||||
} catch (Exception ex) {
|
||||
DialogSimpleMessageHelper.showSimpleErrorDialog(this, ex.getMessage());
|
||||
}
|
||||
|
||||
this.initList();
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progressDialog);
|
||||
});
|
||||
}
|
||||
private void initRecyclerView() {
|
||||
this.mBindings.elevatedToolbar.setRecyclerView(this.mBindings.mainList);
|
||||
|
||||
private void initList() {
|
||||
|
||||
mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList);
|
||||
mAdapter.setOnItemClicked(this::onOrdineRowDispatch);
|
||||
|
||||
this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this));
|
||||
this.mBinding.mainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private void initDatiPicking() throws Exception {
|
||||
List<String> foundGestioni = Stream.of(this.mDocumentiResiList)
|
||||
.map(DocumentoResoDTO::getGestione)
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.toList();
|
||||
|
||||
if(foundGestioni.size() > 1) {
|
||||
throw new Exception("Sono stati caricati documenti con diverse gestioni");
|
||||
} else mDefaultGestioneOfUL = foundGestioni.get(0);
|
||||
|
||||
|
||||
List<String> foundCodAnags = Stream.of(this.mDocumentiResiList)
|
||||
.map(DocumentoResoDTO::getCodAnag)
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if(foundCodAnags.size() > 1) {
|
||||
throw new Exception("Sono stati caricati documenti con diversi codici anagrafici");
|
||||
} else mDefaultCodAnagOfUL = foundCodAnags.get(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void onScanSuccessful(BarcodeScanDTO data) {
|
||||
|
||||
}
|
||||
|
||||
public void createNewUL() {
|
||||
this.createNewUL(null, null, null, false, true, null);
|
||||
}
|
||||
|
||||
public void createNewUL(Integer customNumCollo, String customSerCollo, Dialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) {
|
||||
this.mBinding.mainFab.close(true);
|
||||
|
||||
if (progress == null){
|
||||
progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
}
|
||||
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields();
|
||||
mtbColt .setGestione(mDefaultGestioneOfUL)
|
||||
.setSegno(mDefaultSegnoOfUL)
|
||||
.setCodAnag(mDefaultCodAnagOfUL)
|
||||
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
|
||||
if(customNumCollo != null) {
|
||||
mtbColt.setNumCollo(customNumCollo);
|
||||
}
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(customSerCollo)) {
|
||||
mtbColt.setSerCollo(customSerCollo);
|
||||
}
|
||||
|
||||
|
||||
Dialog finalProgress = progress;
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, value -> {
|
||||
|
||||
value.setDisablePrint(disablePrint);
|
||||
|
||||
setULToCurrentContext(value);
|
||||
|
||||
if(closeProgress) finalProgress.dismiss();
|
||||
|
||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, finalProgress);
|
||||
this.mViewmodel.getPickingList().observe(this, updatedData -> {
|
||||
this.mPickingResiMutableData.clear();
|
||||
this.mPickingResiMutableData.addAll(convertDataModelToListModel(updatedData));
|
||||
this.noItemsToPick.set(updatedData.isEmpty());
|
||||
});
|
||||
|
||||
PickingResiListAdapter pickingResiListAdapter = new PickingResiListAdapter(this, mPickingResiMutableData);
|
||||
this.mBindings.mainList.setAdapter(pickingResiListAdapter);
|
||||
this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
pickingResiListAdapter.setOnItemClicked(clickedItem -> {
|
||||
if (!noLUPresent.get()) {
|
||||
// this.mViewmodel.dispatchOrdineRow(clickedItem);
|
||||
}
|
||||
|
||||
private void setULToCurrentContext(MtbColt mtbColt){
|
||||
if(mtbColt != null && mtbColt.getMtbColr() == null) {
|
||||
mtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
}
|
||||
|
||||
this.currentMtbColt.set(mtbColt);
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void onOrdineRowDispatch(final WithdrawableDtbDocr item) {
|
||||
if(currentMtbColt.get() != null){
|
||||
|
||||
List<MtbColr> currentMtbColrs = item.getWithdrawRows();
|
||||
|
||||
BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO;
|
||||
for (MtbColr mtbColr : currentMtbColrs) {
|
||||
qtaEvasaTotaleInMtbColr.add(mtbColr.getQtaCol());
|
||||
}
|
||||
|
||||
BigDecimal qtaDaEvadere = item.getQtaDoc().subtract(qtaEvasaTotaleInMtbColr);
|
||||
if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO;
|
||||
|
||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||
.setBatchLot(item.getPartitaMag())
|
||||
.setCodArtFor(item.getCodArtFor())
|
||||
.setMtbAart(item.getMtbAart())
|
||||
.setQtaDisponibile(qtaDaEvadere)
|
||||
.setQtaTot(qtaDaEvadere)
|
||||
.setQtaEvasa(qtaEvasaTotaleInMtbColr)
|
||||
.setCanPartitaMagBeChanged(false)
|
||||
.setMaxQta(qtaDaEvadere);
|
||||
|
||||
|
||||
DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
|
||||
onOrdineRowDispatched(item, quantityDTO, closeUL);
|
||||
|
||||
}, null).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void onOrdineRowDispatched(WithdrawableDtbDocr item, QuantityDTO quantityDTO, boolean closeUL){
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
.setCodMart(item.getCodMart())
|
||||
.setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get()))
|
||||
.setQtaCol(quantityDTO.qtaTot.getBigDecimal())
|
||||
.setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
|
||||
.setNumCnf(quantityDTO.numCnf.getBigDecimal())
|
||||
.setDescrizione(item.getDescrizioneEstesa())
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
|
||||
.setCodAnagDoc(item.getCodAnag())
|
||||
.setCodDtipDoc(item.getCodDtip())
|
||||
.setSerDoc(item.getSerDoc())
|
||||
.setNumDoc(item.getNumDoc())
|
||||
.setDataDoc(item.getDataDocS())
|
||||
.setIdRigaDoc(item.getIdRiga());
|
||||
// .setCodJcom(item.getCodJcom());
|
||||
|
||||
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
cloneMtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> {
|
||||
|
||||
mtbColr
|
||||
.setDataCollo(value.getDataColloS())
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setUntMis(item.getMtbAart().getUntMis())
|
||||
.setMtbAart(item.getMtbAart());
|
||||
|
||||
item.getWithdrawRows().add(mtbColr);
|
||||
|
||||
this.refreshDtbDocrItem(item);
|
||||
|
||||
currentMtbColt.get().getMtbColr().add(mtbColr);
|
||||
|
||||
//Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei
|
||||
removeListFilter();
|
||||
|
||||
FBToast.successToast(this, this.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
progress.dismiss();
|
||||
|
||||
// if(closeUL) onColloClosed(null);
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onColloClosed(Runnable onComplete, boolean shouldPrint) {
|
||||
if(thereIsAnOpenedUL()) {
|
||||
private List<PickingResiListModel> convertDataModelToListModel(List<WithdrawableDtbDocr> dataList) {
|
||||
List<PickingResiListModel> pickingResiListModels = new ArrayList<>();
|
||||
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
progress.show();
|
||||
Stream.of(dataList)
|
||||
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
|
||||
.forEach(x -> {
|
||||
|
||||
if(thereIsAnyRowInUL()) {
|
||||
NoteAggiuntiveLUDialog.make(this, noteString -> {
|
||||
PickingResiListModel pickingResiListModel = new PickingResiListModel();
|
||||
|
||||
MtbColt currentLU = currentMtbColt.get();
|
||||
pickingResiListModel.setGroupTitle(x.getCodDtip() + " - N° " + x.getNumDoc() + " del " + UtilityDate.formatDate(x.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
|
||||
pickingResiListModel.setBadge1(x.getCodMart());
|
||||
pickingResiListModel.setDescrizione(UtilityString.isNull(x.getDescrizioneEstesa(), x.getDescrizione()));
|
||||
pickingResiListModel.setActive(true);
|
||||
|
||||
Runnable postNoteSave = () -> {
|
||||
ColliMagazzinoRESTConsumer.updateDataFineStatic(
|
||||
currentLU,
|
||||
() -> printCollo(progress, currentMtbColt.get(), onComplete),
|
||||
ex -> UtilityExceptions.defaultException(this, ex, progress));
|
||||
BigDecimal qtaColEvasa = BigDecimal.ZERO;
|
||||
BigDecimal numCnfColEvasa = BigDecimal.ZERO;
|
||||
|
||||
for(MtbColr mtbColr : x.getWithdrawRows()) {
|
||||
qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
|
||||
numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
|
||||
}
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
pickingResiListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
pickingResiListModel.setQtaEvasa(numCnfColEvasa);
|
||||
pickingResiListModel.setQtaTot(x.getNumCnf());
|
||||
|
||||
} else {
|
||||
if (x.getMtbAart() != null) pickingResiListModel.setUntMis(x.getMtbAart().getUntMis());
|
||||
else pickingResiListModel.setUntMis(x.getUntDoc());
|
||||
pickingResiListModel.setQtaEvasa(qtaColEvasa);
|
||||
pickingResiListModel.setQtaTot(x.getQtaDoc());
|
||||
}
|
||||
|
||||
|
||||
pickingResiListModels.add(pickingResiListModel);
|
||||
});
|
||||
|
||||
return pickingResiListModels;
|
||||
}
|
||||
|
||||
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
BarcodeManager.disable();
|
||||
|
||||
this.openProgress();
|
||||
|
||||
this.mViewmodel.processBarcodeDTO(data, () -> {
|
||||
BarcodeManager.enable();
|
||||
this.closeProgress();
|
||||
});
|
||||
};
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(noteString)) {
|
||||
currentLU.setAnnotazioni(noteString);
|
||||
public void createNewLU() {
|
||||
this.mBindings.mainFab.close(true);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(currentLU, mtbColt -> {
|
||||
postNoteSave.run();
|
||||
}, ex -> UtilityExceptions.defaultException(this, ex, progress));
|
||||
} else postNoteSave.run();
|
||||
this.openProgress();
|
||||
|
||||
|
||||
}, () -> {
|
||||
|
||||
}).show();
|
||||
} else {
|
||||
deleteCollo(progress, onComplete);
|
||||
}
|
||||
|
||||
} else {
|
||||
if(onComplete != null) onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
private void onItemEdited(MtbColr mtbColrOriginal, MtbColr mtbColrEdited) {
|
||||
for(int i = 0; i < mDtbDocrList.size(); i++) {
|
||||
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrOriginal);
|
||||
|
||||
if(foundIndex >= 0){
|
||||
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
|
||||
mDtbDocrList.get(i).getWithdrawRows().add(foundIndex, mtbColrEdited);
|
||||
|
||||
refreshDtbDocrItem(this.mDtbDocrList.get(i));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void onItemDeleted(MtbColr mtbColrDeleted) {
|
||||
for(int i = 0; i < mDtbDocrList.size(); i++) {
|
||||
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrDeleted);
|
||||
|
||||
if(foundIndex >= 0){
|
||||
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
|
||||
|
||||
refreshDtbDocrItem(this.mDtbDocrList.get(i));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void printCollo(Dialog progress, MtbColt mtbColtToPrint, Runnable onComplete) {
|
||||
DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> {
|
||||
|
||||
if(shouldPrint) {
|
||||
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
|
||||
|
||||
if (printerList.size() > 0) {
|
||||
try {
|
||||
singlePrint(mtbColtToPrint, printerList.get(0), () -> {
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
progress.dismiss();
|
||||
}, ex -> {
|
||||
progress.dismiss();
|
||||
String errorMessage = ex.getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
this,
|
||||
new SpannableString(errorMessage),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
() -> postCloseOperations(mtbColtToPrint, onComplete)).show();
|
||||
this.mViewmodel.createNewLU(null, null, () -> {
|
||||
this.closeProgress();
|
||||
});
|
||||
|
||||
} catch (Exception ex) {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
}
|
||||
} else {
|
||||
progress.dismiss();
|
||||
String errorMessage = "Nessuna stampante configurata";
|
||||
DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
|
||||
}
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
});
|
||||
} else {
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
progress.dismiss();
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMtbColrEdit(MtbColr mtbColr) {
|
||||
|
||||
|
||||
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
|
||||
|
||||
PrinterRESTConsumer.printColloStatic(
|
||||
printerName,
|
||||
mtbColtToPrint,
|
||||
1,
|
||||
reportName, onComplete, onAbort);
|
||||
|
||||
}, onAbort);
|
||||
}
|
||||
|
||||
private void postCloseOperations(MtbColt generatedMtbColt, Runnable onComplete) {
|
||||
this.mColliRegistrati.add(generatedMtbColt);
|
||||
@Override
|
||||
public void onMtbColrDelete(MtbColr mtbColr) {
|
||||
|
||||
setULToCurrentContext(null);
|
||||
|
||||
for(int i = 0; i < this.mDtbDocrList.size(); i++) {
|
||||
WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i);
|
||||
|
||||
List<MtbColr> withdraws = dtbDocr.getWithdrawRows();
|
||||
|
||||
for(int k = 0; k < withdraws.size(); k++) {
|
||||
MtbColr withdrawRow = withdraws.get(k);
|
||||
|
||||
dtbDocr.setQtaDoc(dtbDocr.getQtaDoc().subtract(withdrawRow.getQtaCol()));
|
||||
}
|
||||
|
||||
dtbDocr.getWithdrawRows().clear();
|
||||
@Override
|
||||
public void onBottomSheetLUClose() {
|
||||
|
||||
if(UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc()) <= 0) {
|
||||
this.mDtbDocrList.remove(dtbDocr);
|
||||
i--;
|
||||
} else this.refreshDtbDocrItem(dtbDocr);
|
||||
}
|
||||
|
||||
removeListFilter();
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}
|
||||
|
||||
@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) {
|
||||
|
||||
private void deleteCollo(Dialog progress, Runnable onComplete) {
|
||||
|
||||
ColliMagazzinoRESTConsumer.deleteColloStatic(currentMtbColt.get(), () -> {
|
||||
setULToCurrentContext(null);
|
||||
|
||||
progress.dismiss();
|
||||
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, ex -> UtilityExceptions.defaultException(this, ex, progress)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRowSaved() {
|
||||
|
||||
public boolean thereIsAnOpenedUL() {
|
||||
return currentMtbColt.get() != null;
|
||||
}
|
||||
|
||||
public boolean thereIsAnyRowInUL() {
|
||||
return currentMtbColt.get() != null &&
|
||||
currentMtbColt.get().getMtbColr() != null &&
|
||||
currentMtbColt.get().getMtbColr().size() > 0;
|
||||
@Override
|
||||
public void onLUOpened(MtbColt mtbColt) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUClosed() {
|
||||
|
||||
private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) {
|
||||
int index = this.mDtbDocrList.indexOf(dtbDocr);
|
||||
this.mDtbDocrList.remove(dtbDocr);
|
||||
this.mDtbDocrList.add(index, dtbDocr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUSuccessullyPrinted() {
|
||||
|
||||
public void removeListFilter() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLUPrintError(Exception ex, Runnable onComplete) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingStarted() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadingEnded() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent
|
||||
public interface PickingResiComponent {
|
||||
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
PickingResiComponent create();
|
||||
}
|
||||
|
||||
void inject(PickingResiActivity pickingResiActivity);
|
||||
|
||||
}
|
||||
@ -0,0 +1,33 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
|
||||
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel;
|
||||
|
||||
@Module(subcomponents = PickingResiComponent.class)
|
||||
public class PickingResiModule {
|
||||
|
||||
@Provides
|
||||
PickingResiRESTConsumer providesPickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
return new PickingResiRESTConsumer(systemRESTConsumer);
|
||||
}
|
||||
|
||||
@Provides
|
||||
BottomSheetFragmentLUContentViewModel providesBottomSheetFragmentLUContentViewModel() {
|
||||
return new BottomSheetFragmentLUContentViewModel();
|
||||
}
|
||||
|
||||
@Provides
|
||||
PickingResiViewModel providesPickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, PickingResiRESTConsumer pickingResiRESTConsumer) {
|
||||
return new PickingResiViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, pickingResiRESTConsumer);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,212 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.PickingResiRESTConsumer;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
|
||||
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
|
||||
public class PickingResiViewModel {
|
||||
|
||||
|
||||
private Listener mListener;
|
||||
|
||||
private MutableLiveData<List<WithdrawableDtbDocr>> mPickingList = new MutableLiveData<>();
|
||||
|
||||
private MtbColt mCurrentMtbColt = null;
|
||||
|
||||
private final ArticoloRESTConsumer mArticoloRESTConsumer;
|
||||
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
|
||||
private final ColliDataRecoverService mColliDataRecoverService;
|
||||
private final OrdiniRESTConsumer mOrdiniRestConsumerService;
|
||||
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
|
||||
private final PrinterRESTConsumer mPrinterRESTConsumer;
|
||||
private final PickingResiRESTConsumer mPickingResiRESTConsumer;
|
||||
|
||||
@Inject
|
||||
public PickingResiViewModel(ArticoloRESTConsumer articoloRESTConsumer,
|
||||
BarcodeRESTConsumer barcodeRESTConsumer,
|
||||
ColliDataRecoverService colliDataRecoverService,
|
||||
OrdiniRESTConsumer ordiniRESTConsumer,
|
||||
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
|
||||
PrinterRESTConsumer printerRESTConsumer,
|
||||
PickingResiRESTConsumer mPickingResiRESTConsumer) {
|
||||
this.mArticoloRESTConsumer = articoloRESTConsumer;
|
||||
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
|
||||
this.mColliDataRecoverService = colliDataRecoverService;
|
||||
this.mOrdiniRestConsumerService = ordiniRESTConsumer;
|
||||
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
|
||||
this.mPrinterRESTConsumer = printerRESTConsumer;
|
||||
this.mPickingResiRESTConsumer = mPickingResiRESTConsumer;
|
||||
}
|
||||
|
||||
public void init(List<DocumentoResoDTO> mDocumentList) {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.mPickingResiRESTConsumer.loadDocRows(mDocumentList, withdrawableDtbDocr -> {
|
||||
this.mPickingList.postValue(withdrawableDtbDocr);
|
||||
this.sendOnLoadingEnded();
|
||||
}, ex -> this.sendError(new DocumentsLoadException(ex)));
|
||||
}
|
||||
|
||||
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void closeLU(boolean shouldPrint) {
|
||||
if (mCurrentMtbColt == null) return;
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
}
|
||||
|
||||
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
|
||||
|
||||
//Se non c'è una UL aperta
|
||||
if (mCurrentMtbColt == null) {
|
||||
|
||||
//Se è un'etichetta anonima
|
||||
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
//Se il collo non esiste allora lo creo associandolo a questa etichetta anonima
|
||||
//invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
|
||||
//dell'etichetta anonima
|
||||
// this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete);
|
||||
} else {
|
||||
// this.processBarcodeNotOpenedLU(barcodeScanDTO, onComplete);
|
||||
}
|
||||
|
||||
} else {
|
||||
if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) {
|
||||
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
|
||||
// this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
|
||||
|
||||
} else {
|
||||
// this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public MutableLiveData<List<WithdrawableDtbDocr>> getPickingList() {
|
||||
return mPickingList;
|
||||
}
|
||||
|
||||
private void sendOnLoadingStarted() {
|
||||
if (this.mListener != null) mListener.onLoadingStarted();
|
||||
}
|
||||
|
||||
private void sendOnLoadingEnded() {
|
||||
if (this.mListener != null) mListener.onLoadingEnded();
|
||||
}
|
||||
|
||||
private void sendError(Exception ex) {
|
||||
if (this.mListener != null) mListener.onError(ex);
|
||||
}
|
||||
|
||||
private void sendLUOpened(MtbColt mtbColt) {
|
||||
if (this.mListener != null) mListener.onLUOpened(mtbColt);
|
||||
}
|
||||
|
||||
private void sendLUClosed() {
|
||||
if (this.mListener != null) mListener.onLUClosed();
|
||||
}
|
||||
|
||||
private void sendOnItemDispatched(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) {
|
||||
if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO,
|
||||
mtbAart,
|
||||
initialNumCnf,
|
||||
initialQtaCnf,
|
||||
initialQtaTot,
|
||||
totalQtaOrd,
|
||||
totalNumCnfOrd,
|
||||
qtaCnfOrd,
|
||||
totalQtaToBeTaken,
|
||||
totalNumCnfToBeTaken,
|
||||
qtaCnfToBeTaken,
|
||||
totalQtaAvailable,
|
||||
totalNumCnfAvailable,
|
||||
qtaCnfAvailable,
|
||||
partitaMag,
|
||||
dataScad,
|
||||
canOverflowOrderQuantity,
|
||||
onComplete);
|
||||
}
|
||||
|
||||
private void sendOnRowSaved() {
|
||||
if (this.mListener != null) mListener.onRowSaved();
|
||||
}
|
||||
|
||||
|
||||
public PickingResiViewModel setListener(Listener listener) {
|
||||
this.mListener = listener;
|
||||
return this;
|
||||
}
|
||||
|
||||
public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener {
|
||||
|
||||
void onError(Exception ex);
|
||||
|
||||
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);
|
||||
|
||||
void onRowSaved();
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,197 +1,149 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemBinding;
|
||||
import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemHeaderBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.databinding.PickingResiMainListItemBinding;
|
||||
import it.integry.integrywmsnative.databinding.PickingResiMainListItemHeaderBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
|
||||
public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<PickingResiListAdapter.SubheaderHolder, PickingResiListAdapter.SingleItemViewHolder> {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private List<WithdrawableDtbDocr> mDataset;
|
||||
|
||||
private final List<PickingResiListModel> mDataset = new ArrayList<>();
|
||||
private RunnableArgs<WithdrawableDtbDocr> mOnItemClicked;
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
PickingResiMainListItemHeaderBinding mBinding;
|
||||
|
||||
UltimeConsegneMainListItemHeaderBinding mBinding;
|
||||
|
||||
SubheaderHolder(UltimeConsegneMainListItemHeaderBinding binding) {
|
||||
SubheaderHolder(PickingResiMainListItemHeaderBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.mBinding = binding;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
||||
PickingResiMainListItemBinding mBinding;
|
||||
|
||||
UltimeConsegneMainListItemBinding mBinding;
|
||||
|
||||
SingleItemViewHolder(UltimeConsegneMainListItemBinding binding) {
|
||||
SingleItemViewHolder(PickingResiMainListItemBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.mBinding = binding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public PickingResiListAdapter(Context context, ObservableList<WithdrawableDtbDocr> data) {
|
||||
public PickingResiListAdapter(AppCompatActivity context, ObservableArrayList<PickingResiListModel> mutableDataSet) {
|
||||
this.mContext = context;
|
||||
this.mDataset = new ArrayList<>();
|
||||
|
||||
refreshData(data);
|
||||
|
||||
data.addOnListChangedCallback(new ObservableList.OnListChangedCallback<ObservableList<WithdrawableDtbDocr>>() {
|
||||
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
|
||||
@Override
|
||||
public void onChanged(ObservableList<WithdrawableDtbDocr> sender) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeChanged(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeInserted(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeMoved(ObservableList<WithdrawableDtbDocr> sender, int fromPosition, int toPosition, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeRemoved(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
public void onChanged(ObservableList sender) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(sender);
|
||||
notifyDataSetChanged();
|
||||
notifyDataChanged();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshData(List<WithdrawableDtbDocr> data) {
|
||||
this.mDataset.clear();
|
||||
this.mDataset.addAll(Stream.of(data)
|
||||
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
|
||||
.toList());
|
||||
|
||||
this.notifyDataChanged();
|
||||
}
|
||||
|
||||
public void setOnItemClicked(RunnableArgs<WithdrawableDtbDocr> onItemClicked) {
|
||||
this.mOnItemClicked = onItemClicked;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||
UltimeConsegneMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ultime_consegne_main_list__item, parent, false);
|
||||
return new SingleItemViewHolder(binding);
|
||||
public PickingResiListAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||
PickingResiMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item, parent, false);
|
||||
return new PickingResiListAdapter.SingleItemViewHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||
UltimeConsegneMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.ultime_consegne_main_list__item_header, parent, false);
|
||||
return new SubheaderHolder(binding);
|
||||
public PickingResiListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||
PickingResiMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item_header, parent, false);
|
||||
return new PickingResiListAdapter.SubheaderHolder(binding);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindSubheaderViewHolder(PickingResiListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||
PickingResiListModel pickingResiListModel = this.mDataset.get(nextItemPosition);
|
||||
|
||||
subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(pickingResiListModel.getGroupTitle()) ? View.GONE : View.VISIBLE);
|
||||
subheaderHolder.mBinding.groupTitle.setText(pickingResiListModel.getGroupTitle());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindItemViewHolder(final SingleItemViewHolder holder, final int position) {
|
||||
final WithdrawableDtbDocr dtbDocr = this.mDataset.get(position);
|
||||
public void onBindItemViewHolder(final PickingResiListAdapter.SingleItemViewHolder holder, final int position) {
|
||||
PickingResiListModel pickingResiListModel = this.mDataset.get(position);
|
||||
|
||||
BigDecimal qtaColEvasa = BigDecimal.ZERO;
|
||||
BigDecimal numCnfColEvasa = BigDecimal.ZERO;
|
||||
|
||||
for(MtbColr mtbColr : dtbDocr.getWithdrawRows()) {
|
||||
qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
|
||||
numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
|
||||
}
|
||||
|
||||
Float qtaDaEvadere = UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc().subtract(qtaColEvasa));
|
||||
|
||||
holder.mBinding.badge1.setText(dtbDocr.getCodMart());
|
||||
holder.mBinding.descrizione.setText(UtilityString.isNullOrEmpty(dtbDocr.getDescrizioneEstesa()) ? dtbDocr.getDescrizioneEstesa() : dtbDocr.getDescrizione());
|
||||
|
||||
|
||||
|
||||
//Setting qty with unt_mis
|
||||
if(!SettingsManager.iDB().isFlagForceAllToColli() && (dtbDocr.getMtbAart() == null || dtbDocr.getMtbAart().isFlagQtaCnfFissaBoolean())){
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(qtaColEvasa));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getQtaDoc()));
|
||||
holder.mBinding.untMis.setText(dtbDocr.getUntDoc());
|
||||
} else {
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(numCnfColEvasa));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getNumCnf()));
|
||||
holder.mBinding.untMis.setText(UtilityResources.getString(R.string.unt_mis_col));
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (qtaDaEvadere <= 0 ) {
|
||||
if (pickingResiListModel.getQtaEvasa().subtract(pickingResiListModel.getQtaTot()).floatValue() >= 0) {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
|
||||
} else if (qtaDaEvadere > 0 && qtaColEvasa.floatValue() > 0) {
|
||||
} else if (pickingResiListModel.getQtaEvasa().floatValue() > 0) {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
|
||||
} else if (position % 2 == 1) {
|
||||
holder.mBinding.getRoot().setBackgroundColor(Color.WHITE);
|
||||
} else {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.full_white));
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
|
||||
}
|
||||
|
||||
holder.mBinding.deactivatedOverBg.setVisibility(!pickingResiListModel.isActive() ? View.VISIBLE : View.GONE);
|
||||
holder.mBinding.getRoot().setAlpha(!pickingResiListModel.isActive() ? 0.8f : 1);
|
||||
holder.mBinding.badge1.setBackground(mContext.getResources().getDrawable(!pickingResiListModel.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner));
|
||||
holder.mBinding.qtaEvasa.setTextColor(mContext.getResources().getColor(!pickingResiListModel.isActive() ? R.color.gray_600 : R.color.green_700));
|
||||
|
||||
holder.mBinding.descrizione.setText(pickingResiListModel.getDescrizione());
|
||||
holder.mBinding.descrizione.setTextColor(pickingResiListModel.isDescrizionePresente() ? Color.BLACK : Color.GRAY);
|
||||
|
||||
|
||||
holder.mBinding.badge1.setText(pickingResiListModel.getBadge1());
|
||||
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingResiListModel.getQtaEvasa()));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingResiListModel.getQtaTot()));
|
||||
|
||||
holder.mBinding.untMis.setText(pickingResiListModel.getUntMis());
|
||||
holder.mBinding.untMis.setVisibility(UtilityString.isNullOrEmpty(pickingResiListModel.getUntMis()) ? View.GONE : View.VISIBLE);
|
||||
|
||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||
if(this.mOnItemClicked != null) this.mOnItemClicked.run(dtbDocr);
|
||||
if (this.mOnItemClicked != null)
|
||||
this.mOnItemClicked.run(pickingResiListModel.getOriginalModel());
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||
DtbDocr nextDtbDocr = this.mDataset.get(nextItemPosition);
|
||||
subheaderHolder.mBinding.descrizione.setText(nextDtbDocr.getCodDtip() + " - N° " + nextDtbDocr.getNumDoc() + " del " + UtilityDate.formatDate(nextDtbDocr.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
||||
if (getItemSize() == 1) return true;
|
||||
else if (getItemSize() > 1) {
|
||||
PickingResiListModel compare1 = this.mDataset.get(position);
|
||||
PickingResiListModel compare2 = this.mDataset.get(position + 1);
|
||||
|
||||
DtbDocr compare1 = this.mDataset.get(position);
|
||||
DtbDocr compare2 = this.mDataset.get(position + 1);
|
||||
if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if( !compare1.getDataDocS().equalsIgnoreCase(compare2.getDataDocS()) ||
|
||||
!compare1.getSerDoc().equalsIgnoreCase(compare2.getSerDoc()) ||
|
||||
!compare1.getNumDoc().equals(compare2.getNumDoc()) ||
|
||||
!compare1.getCodAnag().equalsIgnoreCase(compare2.getCodAnag()) ||
|
||||
!compare1.getCodDtip().equalsIgnoreCase(compare2.getCodDtip())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return this.mDataset.size();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,103 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.core;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
|
||||
public class PickingResiListModel {
|
||||
|
||||
private String groupTitle;
|
||||
|
||||
private String badge1;
|
||||
|
||||
private String descrizione;
|
||||
private boolean descrizionePresente;
|
||||
private BigDecimal qtaEvasa;
|
||||
private BigDecimal qtaTot;
|
||||
private String untMis;
|
||||
|
||||
private boolean active;
|
||||
|
||||
private WithdrawableDtbDocr mOriginalModel;
|
||||
|
||||
public String getGroupTitle() {
|
||||
return groupTitle;
|
||||
}
|
||||
|
||||
public PickingResiListModel setGroupTitle(String groupTitle) {
|
||||
this.groupTitle = groupTitle;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getBadge1() {
|
||||
return badge1;
|
||||
}
|
||||
|
||||
public PickingResiListModel setBadge1(String badge1) {
|
||||
this.badge1 = badge1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public PickingResiListModel setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isDescrizionePresente() {
|
||||
return descrizionePresente;
|
||||
}
|
||||
|
||||
public PickingResiListModel setDescrizionePresente(boolean descrizionePresente) {
|
||||
this.descrizionePresente = descrizionePresente;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaEvasa() {
|
||||
return qtaEvasa;
|
||||
}
|
||||
|
||||
public PickingResiListModel setQtaEvasa(BigDecimal qtaEvasa) {
|
||||
this.qtaEvasa = qtaEvasa;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaTot() {
|
||||
return qtaTot;
|
||||
}
|
||||
|
||||
public PickingResiListModel setQtaTot(BigDecimal qtaTot) {
|
||||
this.qtaTot = qtaTot;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getUntMis() {
|
||||
return untMis;
|
||||
}
|
||||
|
||||
public PickingResiListModel setUntMis(String untMis) {
|
||||
this.untMis = untMis;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return active;
|
||||
}
|
||||
|
||||
public PickingResiListModel setActive(boolean active) {
|
||||
this.active = active;
|
||||
return this;
|
||||
}
|
||||
|
||||
public WithdrawableDtbDocr getOriginalModel() {
|
||||
return mOriginalModel;
|
||||
}
|
||||
|
||||
public PickingResiListModel setOriginalModel(WithdrawableDtbDocr originalModel) {
|
||||
this.mOriginalModel = originalModel;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.exceptions;
|
||||
|
||||
public class DocumentsLoadException extends Exception {
|
||||
|
||||
public DocumentsLoadException(Throwable cause) {
|
||||
super("Errore durante il caricamento dei documenti");
|
||||
initCause(cause);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,183 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.rest;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||
|
||||
@Singleton
|
||||
public class PickingResiRESTConsumer {
|
||||
|
||||
|
||||
private final SystemRESTConsumer mSystemRestConsumer;
|
||||
|
||||
@Inject
|
||||
public PickingResiRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||
this.mSystemRestConsumer = systemRESTConsumer;
|
||||
}
|
||||
|
||||
public void loadDocRows(List<DocumentoResoDTO> documents, RunnableArgs<ArrayList<WithdrawableDtbDocr>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
List<HashMap<String, Object>> filterCond = new ArrayList<>();
|
||||
|
||||
for(int i = 0; i < documents.size(); i++) {
|
||||
HashMap<String, Object> filter = new HashMap<>();
|
||||
|
||||
filter.put("dtb_docr.data_doc", documents.get(i).getDataDocD());
|
||||
filter.put("dtb_docr.num_doc", documents.get(i).getNumDoc());
|
||||
filter.put("dtb_docr.ser_doc", documents.get(i).getSerDoc());
|
||||
filter.put("dtb_docr.cod_anag", documents.get(i).getCodAnag());
|
||||
filter.put("dtb_docr.cod_dtip", documents.get(i).getCodDtip());
|
||||
|
||||
filterCond.add(filter);
|
||||
}
|
||||
|
||||
String sql = "SELECT dtb_docr.[cod_anag]" +
|
||||
" ,dtb_docr.[cod_dtip]" +
|
||||
" ,dtb_docr.[data_doc]" +
|
||||
" ,dtb_docr.[ser_doc]" +
|
||||
" ,dtb_docr.[num_doc]" +
|
||||
" ,dtb_docr.[id_riga]" +
|
||||
" ,dtb_docr.[cod_mart]" +
|
||||
" ,dtb_docr.[descrizione]" +
|
||||
" ,dtb_docr.[unt_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]" +
|
||||
" ,dtb_docr.[sconto7]" +
|
||||
" ,dtb_docr.[sconto8]" +
|
||||
" ,dtb_docr.[cod_aliq]" +
|
||||
" ,dtb_docr.[perc_prov]" +
|
||||
" ,dtb_docr.[val_prov]" +
|
||||
" ,dtb_docr.[data_ord]" +
|
||||
" ,dtb_docr.[num_ord]" +
|
||||
" ,dtb_docr.[riga_ord]" +
|
||||
" ,dtb_docr.[importo_riga]" +
|
||||
" ,dtb_docr.[cod_col]" +
|
||||
" ,dtb_docr.[cod_tagl]" +
|
||||
" ,dtb_docr.[cod_jcom]" +
|
||||
" ,dtb_docr.[cod_mdep]" +
|
||||
" ,dtb_docr.[perc_gest]" +
|
||||
" ,dtb_docr.[val_gest]" +
|
||||
" ,dtb_docr.[partita_mag]" +
|
||||
" ,dtb_docr.[val_unt_iva]" +
|
||||
" ,dtb_docr.[qta_cnf]" +
|
||||
" ,dtb_docr.[descrizione_estesa]" +
|
||||
" ,dtb_docr.[costo_unt]" +
|
||||
" ,dtb_docr.[perc_ispe]" +
|
||||
" ,dtb_docr.[val_ispe]" +
|
||||
" ,dtb_docr.[perc_promo]" +
|
||||
" ,dtb_docr.[val_promo]" +
|
||||
" ,dtb_docr.[perc_oneri]" +
|
||||
" ,dtb_docr.[val_oneri]" +
|
||||
" ,dtb_docr.[flag_evaso_forzato]" +
|
||||
" ,dtb_docr.[cod_dtip_comp]" +
|
||||
" ,dtb_docr.[data_doc_comp]" +
|
||||
" ,dtb_docr.[ser_doc_comp]" +
|
||||
" ,dtb_docr.[num_doc_comp]" +
|
||||
" ,dtb_docr.[cod_promo]" +
|
||||
" ,dtb_docr.[perc_prov2]" +
|
||||
" ,dtb_docr.[val_prov2]" +
|
||||
" ,dtb_docr.[cod_art_for]" +
|
||||
" ,dtb_docr.[unt_doc2]" +
|
||||
" ,dtb_docr.[qta_doc2]" +
|
||||
" ,dtb_docr.[unt_doc3]" +
|
||||
" ,dtb_docr.[qta_doc3]" +
|
||||
" ,dtb_docr.[num_cnf]" +
|
||||
" ,dtb_docr.[peso_lordo]" +
|
||||
" ,dtb_docr.[posizione]" +
|
||||
" ,dtb_docr.[cod_anag_comp]" +
|
||||
" ,dtb_docr.[cod_mtip]" +
|
||||
" ,dtb_docr.[matricola]" +
|
||||
" ,dtb_docr.[data_iniz_comp]" +
|
||||
" ,dtb_docr.[data_fine_comp]" +
|
||||
" ,dtb_docr.[cod_kit]" +
|
||||
" ,dtb_docr.[cod_alis]" +
|
||||
" ,dtb_docr.[data_ins_row]" +
|
||||
" ,dtb_docr.[note] " +
|
||||
" ,dtb_doct.[gestione] " +
|
||||
"FROM dtb_docr " +
|
||||
"INNER JOIN dtb_doct ON dtb_docr.num_doc = dtb_doct.num_doc AND dtb_docr.data_doc = dtb_doct.data_doc AND dtb_docr.cod_anag = dtb_doct.cod_anag AND dtb_docr.cod_dtip = dtb_doct.cod_dtip AND dtb_docr.ser_doc = dtb_doct.ser_doc " +
|
||||
"INNER JOIN mtb_aart ON dtb_docr.cod_mart = mtb_aart.cod_mart " +
|
||||
"LEFT OUTER JOIN ctb_cont ON mtb_aart.cod_ccon_ricavi = ctb_cont.cod_ccon " +
|
||||
"LEFT OUTER JOIN ctb_grup ON ctb_cont.cod_cgrp = ctb_grup.cod_cgrp " +
|
||||
"LEFT OUTER JOIN mtb_colr ON " +
|
||||
" dtb_docr.cod_anag = mtb_colr.cod_anag_doc AND " +
|
||||
" dtb_docr.cod_dtip = mtb_colr.cod_dtip_doc AND " +
|
||||
" dtb_docr.ser_doc = mtb_colr.ser_doc AND " +
|
||||
" dtb_docr.data_doc = mtb_colr.data_doc AND " +
|
||||
" dtb_docr.num_doc = mtb_colr.num_doc AND " +
|
||||
" dtb_docr.id_riga = mtb_colr.id_riga_doc " +
|
||||
"WHERE " +
|
||||
" (ctb_grup.sezione <> 1 OR ctb_grup.sezione IS NULL) AND " +
|
||||
" dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) > 0 AND" +
|
||||
" ( " +
|
||||
UtilityQuery.concatFieldListInWhereCond(filterCond) +
|
||||
" ) " +
|
||||
"ORDER BY cod_mart";
|
||||
|
||||
|
||||
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType();
|
||||
this.mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() {
|
||||
@Override
|
||||
public void onSuccess(ArrayList<WithdrawableDtbDocr> values) {
|
||||
|
||||
if(values != null && values.size() > 0){
|
||||
List<String> codMarts = Stream.of(values)
|
||||
.map(DtbDocr::getCodMart)
|
||||
.withoutNulls()
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
|
||||
|
||||
if(arts != null && arts.size() > 0) {
|
||||
for (DtbDocr value : values) {
|
||||
|
||||
MtbAart foundMtbAart = null;
|
||||
|
||||
List<MtbAart> mtbAartStream = Stream.of(arts)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList();
|
||||
|
||||
if(mtbAartStream != null && mtbAartStream.size() > 0){
|
||||
foundMtbAart = mtbAartStream.get(0);
|
||||
}
|
||||
|
||||
value.setMtbAart(foundMtbAart);
|
||||
}
|
||||
|
||||
|
||||
if(onComplete != null) onComplete.run(values);
|
||||
}
|
||||
|
||||
}, onFailed);
|
||||
|
||||
} else {
|
||||
if(onComplete != null) onComplete.run(values);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi.dto;
|
||||
package it.integry.integrywmsnative.gest.picking_resi.rest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -0,0 +1,548 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi_OLD;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableArrayList;
|
||||
import androidx.databinding.ObservableField;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.tfb.fbtoast.FBToast;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.CommonModelConsts;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.report.ReportManager;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi_OLD.core.PickingResiListAdapter;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
|
||||
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
|
||||
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
|
||||
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.DialogInputQuantity;
|
||||
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
|
||||
import it.integry.integrywmsnative.view.dialogs.note_aggiuntive_lu.NoteAggiuntiveLUDialog;
|
||||
|
||||
public class PickingResiActivity extends BaseActivity implements IOnColloClosedCallback {
|
||||
|
||||
private List<DocumentoResoDTO> mDocumentiResiList;
|
||||
public ObservableList<WithdrawableDtbDocr> mDtbDocrList;
|
||||
private final List<MtbColt> mColliRegistrati = new ArrayList<>();
|
||||
|
||||
private ActivityPickingResiBinding mBinding;
|
||||
private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
|
||||
|
||||
public ObservableField<MtbColt> currentMtbColt = new ObservableField<>();
|
||||
|
||||
private PickingResiListAdapter mAdapter;
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
private String mActivityTitle;
|
||||
private String mDefaultGestioneOfUL;
|
||||
private String mDefaultCodAnagOfUL;
|
||||
private Integer mDefaultSegnoOfUL;
|
||||
|
||||
|
||||
public static void startActivity(Context context, String activityTitle, List<DocumentoResoDTO> documentoResoDTOList, Integer segno) {
|
||||
String consegneCacheKey = DataCache.addItem(documentoResoDTOList);
|
||||
|
||||
Intent intent = new Intent(context, PickingResiActivity.class);
|
||||
intent.putExtra("activity_title", activityTitle);
|
||||
intent.putExtra("key", consegneCacheKey);
|
||||
intent.putExtra("segno", segno);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
|
||||
// mBinding.setViewmodel(this);
|
||||
|
||||
this.mDtbDocrList = new ObservableArrayList<>();
|
||||
|
||||
// mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, this.mBinding.bottomSheetInclude);
|
||||
// mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
|
||||
// mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onItemEdited);
|
||||
// mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onItemDeleted);
|
||||
|
||||
|
||||
mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key"));
|
||||
mDefaultSegnoOfUL = getIntent().getIntExtra("segno", +1);
|
||||
|
||||
mActivityTitle = getIntent().getStringExtra("activity_title");
|
||||
|
||||
this.initView();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
onBackPressed();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if(mArticoliInColloBottomSheetViewModel.isExpanded()){
|
||||
mArticoliInColloBottomSheetViewModel.collapse();
|
||||
}
|
||||
else if(thereIsAnOpenedUL()) {
|
||||
mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
super.onBackPressed();
|
||||
});
|
||||
|
||||
}
|
||||
else {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
private void initView() {
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(this::onScanSuccessful)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||
|
||||
|
||||
setSupportActionBar(this.mBinding.toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
getSupportActionBar().setTitle(mActivityTitle);
|
||||
|
||||
this.mBinding.elevatedToolbar.setRecyclerView(this.mBinding.mainList);
|
||||
|
||||
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(this);
|
||||
UltimeConsegneClienteRESTConsumer.loadDocRowFromConsegna(mDocumentiResiList, dtbDocrToPick -> {
|
||||
progressDialog.dismiss();
|
||||
this.mDtbDocrList.addAll(dtbDocrToPick);
|
||||
|
||||
try {
|
||||
this.initDatiPicking();
|
||||
} catch (Exception ex) {
|
||||
DialogSimpleMessageHelper.showSimpleErrorDialog(this, ex.getMessage());
|
||||
}
|
||||
|
||||
this.initList();
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progressDialog);
|
||||
});
|
||||
}
|
||||
|
||||
private void initList() {
|
||||
|
||||
mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList);
|
||||
mAdapter.setOnItemClicked(this::onOrdineRowDispatch);
|
||||
|
||||
this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this));
|
||||
this.mBinding.mainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private void initDatiPicking() throws Exception {
|
||||
List<String> foundGestioni = Stream.of(this.mDocumentiResiList)
|
||||
.map(DocumentoResoDTO::getGestione)
|
||||
.distinct()
|
||||
.withoutNulls()
|
||||
.toList();
|
||||
|
||||
if(foundGestioni.size() > 1) {
|
||||
throw new Exception("Sono stati caricati documenti con diverse gestioni");
|
||||
} else mDefaultGestioneOfUL = foundGestioni.get(0);
|
||||
|
||||
|
||||
List<String> foundCodAnags = Stream.of(this.mDocumentiResiList)
|
||||
.map(DocumentoResoDTO::getCodAnag)
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
if(foundCodAnags.size() > 1) {
|
||||
throw new Exception("Sono stati caricati documenti con diversi codici anagrafici");
|
||||
} else mDefaultCodAnagOfUL = foundCodAnags.get(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void onScanSuccessful(BarcodeScanDTO data) {
|
||||
|
||||
}
|
||||
|
||||
public void createNewUL() {
|
||||
this.createNewUL(null, null, null, false, true, null);
|
||||
}
|
||||
|
||||
public void createNewUL(Integer customNumCollo, String customSerCollo, Dialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) {
|
||||
this.mBinding.mainFab.close(true);
|
||||
|
||||
if (progress == null){
|
||||
progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
}
|
||||
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
mtbColt.initDefaultFields();
|
||||
mtbColt .setGestione(mDefaultGestioneOfUL)
|
||||
.setSegno(mDefaultSegnoOfUL)
|
||||
.setCodAnag(mDefaultCodAnagOfUL)
|
||||
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
|
||||
if(customNumCollo != null) {
|
||||
mtbColt.setNumCollo(customNumCollo);
|
||||
}
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(customSerCollo)) {
|
||||
mtbColt.setSerCollo(customSerCollo);
|
||||
}
|
||||
|
||||
|
||||
Dialog finalProgress = progress;
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, value -> {
|
||||
|
||||
value.setDisablePrint(disablePrint);
|
||||
|
||||
setULToCurrentContext(value);
|
||||
|
||||
if(closeProgress) finalProgress.dismiss();
|
||||
|
||||
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, finalProgress);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void setULToCurrentContext(MtbColt mtbColt){
|
||||
if(mtbColt != null && mtbColt.getMtbColr() == null) {
|
||||
mtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
}
|
||||
|
||||
this.currentMtbColt.set(mtbColt);
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void onOrdineRowDispatch(final WithdrawableDtbDocr item) {
|
||||
if(currentMtbColt.get() != null){
|
||||
|
||||
List<MtbColr> currentMtbColrs = item.getWithdrawRows();
|
||||
|
||||
BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO;
|
||||
for (MtbColr mtbColr : currentMtbColrs) {
|
||||
qtaEvasaTotaleInMtbColr.add(mtbColr.getQtaCol());
|
||||
}
|
||||
|
||||
BigDecimal qtaDaEvadere = item.getQtaDoc().subtract(qtaEvasaTotaleInMtbColr);
|
||||
if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO;
|
||||
|
||||
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
|
||||
.setBatchLot(item.getPartitaMag())
|
||||
.setCodArtFor(item.getCodArtFor())
|
||||
.setMtbAart(item.getMtbAart())
|
||||
.setQtaDisponibile(qtaDaEvadere)
|
||||
.setQtaTot(qtaDaEvadere)
|
||||
.setQtaEvasa(qtaEvasaTotaleInMtbColr)
|
||||
.setCanPartitaMagBeChanged(false)
|
||||
.setMaxQta(qtaDaEvadere);
|
||||
|
||||
|
||||
DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
|
||||
onOrdineRowDispatched(item, quantityDTO, closeUL);
|
||||
|
||||
}, null).show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void onOrdineRowDispatched(WithdrawableDtbDocr item, QuantityDTO quantityDTO, boolean closeUL){
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
|
||||
final MtbColr mtbColr = new MtbColr()
|
||||
.setCodMart(item.getCodMart())
|
||||
.setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get()))
|
||||
.setQtaCol(quantityDTO.qtaTot.getBigDecimal())
|
||||
.setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
|
||||
.setNumCnf(quantityDTO.numCnf.getBigDecimal())
|
||||
.setDescrizione(item.getDescrizioneEstesa())
|
||||
.setDatetimeRow(UtilityDate.getDateInstance())
|
||||
|
||||
.setCodAnagDoc(item.getCodAnag())
|
||||
.setCodDtipDoc(item.getCodDtip())
|
||||
.setSerDoc(item.getSerDoc())
|
||||
.setNumDoc(item.getNumDoc())
|
||||
.setDataDoc(item.getDataDocS())
|
||||
.setIdRigaDoc(item.getIdRiga());
|
||||
// .setCodJcom(item.getCodJcom());
|
||||
|
||||
|
||||
|
||||
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone();
|
||||
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
|
||||
|
||||
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
|
||||
cloneMtbColt.getMtbColr().add(mtbColr);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> {
|
||||
|
||||
mtbColr
|
||||
.setDataCollo(value.getDataColloS())
|
||||
.setNumCollo(value.getNumCollo())
|
||||
.setGestione(value.getGestione())
|
||||
.setSerCollo(value.getSerCollo())
|
||||
.setRiga(value.getMtbColr().get(0).getRiga())
|
||||
.setUntMis(item.getMtbAart().getUntMis())
|
||||
.setMtbAart(item.getMtbAart());
|
||||
|
||||
item.getWithdrawRows().add(mtbColr);
|
||||
|
||||
this.refreshDtbDocrItem(item);
|
||||
|
||||
currentMtbColt.get().getMtbColr().add(mtbColr);
|
||||
|
||||
//Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei
|
||||
removeListFilter();
|
||||
|
||||
FBToast.successToast(this, this.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
|
||||
|
||||
progress.dismiss();
|
||||
|
||||
// if(closeUL) onColloClosed(null);
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onColloClosed(Runnable onComplete, boolean shouldPrint) {
|
||||
if(thereIsAnOpenedUL()) {
|
||||
|
||||
final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
|
||||
progress.show();
|
||||
|
||||
if(thereIsAnyRowInUL()) {
|
||||
NoteAggiuntiveLUDialog.make(this, noteString -> {
|
||||
|
||||
MtbColt currentLU = currentMtbColt.get();
|
||||
|
||||
Runnable postNoteSave = () -> {
|
||||
ColliMagazzinoRESTConsumer.updateDataFineStatic(
|
||||
currentLU,
|
||||
() -> printCollo(progress, currentMtbColt.get(), onComplete),
|
||||
ex -> UtilityExceptions.defaultException(this, ex, progress));
|
||||
};
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(noteString)) {
|
||||
currentLU.setAnnotazioni(noteString);
|
||||
|
||||
ColliMagazzinoRESTConsumer.saveColloStatic(currentLU, mtbColt -> {
|
||||
postNoteSave.run();
|
||||
}, ex -> UtilityExceptions.defaultException(this, ex, progress));
|
||||
} else postNoteSave.run();
|
||||
|
||||
|
||||
}, () -> {
|
||||
|
||||
}).show();
|
||||
} else {
|
||||
deleteCollo(progress, onComplete);
|
||||
}
|
||||
|
||||
} else {
|
||||
if(onComplete != null) onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
private void onItemEdited(MtbColr mtbColrOriginal, MtbColr mtbColrEdited) {
|
||||
for(int i = 0; i < mDtbDocrList.size(); i++) {
|
||||
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrOriginal);
|
||||
|
||||
if(foundIndex >= 0){
|
||||
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
|
||||
mDtbDocrList.get(i).getWithdrawRows().add(foundIndex, mtbColrEdited);
|
||||
|
||||
refreshDtbDocrItem(this.mDtbDocrList.get(i));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void onItemDeleted(MtbColr mtbColrDeleted) {
|
||||
for(int i = 0; i < mDtbDocrList.size(); i++) {
|
||||
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrDeleted);
|
||||
|
||||
if(foundIndex >= 0){
|
||||
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
|
||||
|
||||
refreshDtbDocrItem(this.mDtbDocrList.get(i));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void printCollo(Dialog progress, MtbColt mtbColtToPrint, Runnable onComplete) {
|
||||
DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> {
|
||||
|
||||
if(shouldPrint) {
|
||||
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().getUserSession().getDepo().getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
|
||||
|
||||
if (printerList.size() > 0) {
|
||||
try {
|
||||
singlePrint(mtbColtToPrint, printerList.get(0), () -> {
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
progress.dismiss();
|
||||
}, ex -> {
|
||||
progress.dismiss();
|
||||
String errorMessage = ex.getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(
|
||||
this,
|
||||
new SpannableString(errorMessage),
|
||||
null,
|
||||
null,
|
||||
R.string.button_ignore_print,
|
||||
() -> postCloseOperations(mtbColtToPrint, onComplete)).show();
|
||||
});
|
||||
|
||||
} catch (Exception ex) {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
}
|
||||
} else {
|
||||
progress.dismiss();
|
||||
String errorMessage = "Nessuna stampante configurata";
|
||||
DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
|
||||
}
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(this, ex, progress);
|
||||
});
|
||||
} else {
|
||||
postCloseOperations(mtbColtToPrint, onComplete);
|
||||
progress.dismiss();
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||
ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
|
||||
|
||||
PrinterRESTConsumer.printColloStatic(
|
||||
printerName,
|
||||
mtbColtToPrint,
|
||||
1,
|
||||
reportName, onComplete, onAbort);
|
||||
|
||||
}, onAbort);
|
||||
}
|
||||
|
||||
private void postCloseOperations(MtbColt generatedMtbColt, Runnable onComplete) {
|
||||
this.mColliRegistrati.add(generatedMtbColt);
|
||||
|
||||
setULToCurrentContext(null);
|
||||
|
||||
for(int i = 0; i < this.mDtbDocrList.size(); i++) {
|
||||
WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i);
|
||||
|
||||
List<MtbColr> withdraws = dtbDocr.getWithdrawRows();
|
||||
|
||||
for(int k = 0; k < withdraws.size(); k++) {
|
||||
MtbColr withdrawRow = withdraws.get(k);
|
||||
|
||||
dtbDocr.setQtaDoc(dtbDocr.getQtaDoc().subtract(withdrawRow.getQtaCol()));
|
||||
}
|
||||
|
||||
dtbDocr.getWithdrawRows().clear();
|
||||
|
||||
if(UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc()) <= 0) {
|
||||
this.mDtbDocrList.remove(dtbDocr);
|
||||
i--;
|
||||
} else this.refreshDtbDocrItem(dtbDocr);
|
||||
}
|
||||
|
||||
removeListFilter();
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}
|
||||
|
||||
|
||||
private void deleteCollo(Dialog progress, Runnable onComplete) {
|
||||
|
||||
ColliMagazzinoRESTConsumer.deleteColloStatic(currentMtbColt.get(), () -> {
|
||||
setULToCurrentContext(null);
|
||||
|
||||
progress.dismiss();
|
||||
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, ex -> UtilityExceptions.defaultException(this, ex, progress)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public boolean thereIsAnOpenedUL() {
|
||||
return currentMtbColt.get() != null;
|
||||
}
|
||||
|
||||
public boolean thereIsAnyRowInUL() {
|
||||
return currentMtbColt.get() != null &&
|
||||
currentMtbColt.get().getMtbColr() != null &&
|
||||
currentMtbColt.get().getMtbColr().size() > 0;
|
||||
}
|
||||
|
||||
|
||||
private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) {
|
||||
int index = this.mDtbDocrList.indexOf(dtbDocr);
|
||||
this.mDtbDocrList.remove(dtbDocr);
|
||||
this.mDtbDocrList.add(index, dtbDocr);
|
||||
}
|
||||
|
||||
|
||||
public void removeListFilter() {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,197 @@
|
||||
package it.integry.integrywmsnative.gest.picking_resi_OLD.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ObservableList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.databinding.PickingResiMainListItemBinding;
|
||||
import it.integry.integrywmsnative.databinding.PickingResiMainListItemHeaderBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
|
||||
public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<PickingResiListAdapter.SubheaderHolder, PickingResiListAdapter.SingleItemViewHolder> {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private List<WithdrawableDtbDocr> mDataset;
|
||||
|
||||
private RunnableArgs<WithdrawableDtbDocr> mOnItemClicked;
|
||||
|
||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
PickingResiMainListItemHeaderBinding mBinding;
|
||||
|
||||
SubheaderHolder(PickingResiMainListItemHeaderBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.mBinding = binding;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
PickingResiMainListItemBinding mBinding;
|
||||
|
||||
SingleItemViewHolder(PickingResiMainListItemBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.mBinding = binding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public PickingResiListAdapter(Context context, ObservableList<WithdrawableDtbDocr> data) {
|
||||
this.mContext = context;
|
||||
this.mDataset = new ArrayList<>();
|
||||
|
||||
refreshData(data);
|
||||
|
||||
data.addOnListChangedCallback(new ObservableList.OnListChangedCallback<ObservableList<WithdrawableDtbDocr>>() {
|
||||
@Override
|
||||
public void onChanged(ObservableList<WithdrawableDtbDocr> sender) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeChanged(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeInserted(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeMoved(ObservableList<WithdrawableDtbDocr> sender, int fromPosition, int toPosition, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRangeRemoved(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
|
||||
refreshData(sender);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void refreshData(List<WithdrawableDtbDocr> data) {
|
||||
this.mDataset.clear();
|
||||
this.mDataset.addAll(Stream.of(data)
|
||||
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
|
||||
.toList());
|
||||
|
||||
this.notifyDataChanged();
|
||||
}
|
||||
|
||||
public void setOnItemClicked(RunnableArgs<WithdrawableDtbDocr> onItemClicked) {
|
||||
this.mOnItemClicked = onItemClicked;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
||||
PickingResiMainListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item, parent, false);
|
||||
return new SingleItemViewHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
||||
PickingResiMainListItemHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.picking_resi_main_list__item_header, parent, false);
|
||||
return new SubheaderHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindItemViewHolder(final SingleItemViewHolder holder, final int position) {
|
||||
final WithdrawableDtbDocr dtbDocr = this.mDataset.get(position);
|
||||
|
||||
BigDecimal qtaColEvasa = BigDecimal.ZERO;
|
||||
BigDecimal numCnfColEvasa = BigDecimal.ZERO;
|
||||
|
||||
for(MtbColr mtbColr : dtbDocr.getWithdrawRows()) {
|
||||
qtaColEvasa = qtaColEvasa.add(mtbColr.getQtaCol());
|
||||
numCnfColEvasa = numCnfColEvasa.add(mtbColr.getNumCnf());
|
||||
}
|
||||
|
||||
Float qtaDaEvadere = UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc().subtract(qtaColEvasa));
|
||||
|
||||
holder.mBinding.badge1.setText(dtbDocr.getCodMart());
|
||||
holder.mBinding.descrizione.setText(UtilityString.isNullOrEmpty(dtbDocr.getDescrizioneEstesa()) ? dtbDocr.getDescrizioneEstesa() : dtbDocr.getDescrizione());
|
||||
|
||||
|
||||
|
||||
//Setting qty with unt_mis
|
||||
if(!SettingsManager.iDB().isFlagForceAllToColli() && (dtbDocr.getMtbAart() == null || dtbDocr.getMtbAart().isFlagQtaCnfFissaBoolean())){
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(qtaColEvasa));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getQtaDoc()));
|
||||
holder.mBinding.untMis.setText(dtbDocr.getUntDoc());
|
||||
} else {
|
||||
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(numCnfColEvasa));
|
||||
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getNumCnf()));
|
||||
holder.mBinding.untMis.setText(UtilityResources.getString(R.string.unt_mis_col));
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (qtaDaEvadere <= 0 ) {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
|
||||
} else if (qtaDaEvadere > 0 && qtaColEvasa.floatValue() > 0) {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
|
||||
} else {
|
||||
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.full_white));
|
||||
}
|
||||
|
||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
||||
if(this.mOnItemClicked != null) this.mOnItemClicked.run(dtbDocr);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
|
||||
DtbDocr nextDtbDocr = this.mDataset.get(nextItemPosition);
|
||||
subheaderHolder.mBinding.groupTitle.setText(nextDtbDocr.getCodDtip() + " - N° " + nextDtbDocr.getNumDoc() + " del " + UtilityDate.formatDate(nextDtbDocr.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
||||
|
||||
DtbDocr compare1 = this.mDataset.get(position);
|
||||
DtbDocr compare2 = this.mDataset.get(position + 1);
|
||||
|
||||
if( !compare1.getDataDocS().equalsIgnoreCase(compare2.getDataDocS()) ||
|
||||
!compare1.getSerDoc().equalsIgnoreCase(compare2.getSerDoc()) ||
|
||||
!compare1.getNumDoc().equals(compare2.getNumDoc()) ||
|
||||
!compare1.getCodAnag().equalsIgnoreCase(compare2.getCodAnag()) ||
|
||||
!compare1.getCodDtip().equalsIgnoreCase(compare2.getCodDtip())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return this.mDataset.size();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.gest.spedizione;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
@ -44,6 +45,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||
import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding;
|
||||
@ -96,6 +98,21 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
|
||||
private final int PICK_UL_REQUEST = 1;
|
||||
|
||||
public static void startActivity(Context context, List<SitArtOrdDTO> ordini, List<OrdineVenditaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList) {
|
||||
Intent myIntent = new Intent(context, SpedizioneActivity.class);
|
||||
|
||||
String keyPickingList = DataCache.addItem(ordini);
|
||||
myIntent.putExtra("keyPickingList", keyPickingList);
|
||||
|
||||
String keyTestateOrdini = DataCache.addItem(selectedOrders);
|
||||
myIntent.putExtra("keyTestateOrdini", keyTestateOrdini);
|
||||
|
||||
String keyColliRegistrati = DataCache.addItem(mtbColtList);
|
||||
myIntent.putExtra("keyColliRegistrati", keyColliRegistrati);
|
||||
|
||||
context.startActivity(myIntent);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -249,7 +266,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
spedizioneListModel.setUntMis("col");
|
||||
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
|
||||
} else {
|
||||
@ -287,7 +304,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
cloneModel.setUntMis("col");
|
||||
cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
|
||||
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||
|
||||
@ -412,7 +429,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
spedizioneListModel.setUntMis("col");
|
||||
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
|
||||
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
|
||||
} else {
|
||||
@ -450,7 +467,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
|
||||
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
||||
|
||||
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
|
||||
cloneModel.setUntMis("col");
|
||||
cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
|
||||
|
||||
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
|
||||
|
||||
|
||||
@ -29,9 +29,8 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
|
||||
|
||||
public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter<SpedizioneListAdapter.SubheaderHolder, SpedizioneListAdapter.SingleItemViewHolder> {
|
||||
|
||||
|
||||
private Context mContext;
|
||||
private List<SpedizioneListModel> mDataset = new ArrayList<>();
|
||||
private final List<SpedizioneListModel> mDataset = new ArrayList<>();
|
||||
|
||||
private RunnableArgs<PickingObjectDTO> mOnItemClicked;
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ import it.integry.integrywmsnative.core.model.DtbDocr;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
|
||||
public class UltimeConsegneClienteRESTConsumer {
|
||||
|
||||
@ -1,40 +1,23 @@
|
||||
package it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore;
|
||||
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.annimon.stream.Optional;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreListAdapter;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.core.UltimiArriviFornitoreViewModel;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
|
||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||
|
||||
/**
|
||||
|
||||
@ -19,7 +19,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityProgress;
|
||||
import it.integry.integrywmsnative.databinding.FragmentUltimiArriviFornitoreBinding;
|
||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
||||
import it.integry.integrywmsnative.gest.picking_resi_OLD.PickingResiActivity;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.rest.UltimiArriviFornitoreRESTConsumer;
|
||||
|
||||
|
||||
@ -2,7 +2,6 @@ package it.integry.integrywmsnative.gest.vendita;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.text.SpannableString;
|
||||
@ -25,13 +24,11 @@ import java.util.List;
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
import it.integry.integrywmsnative.core.rest.CommonRESTException;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
|
||||
@ -234,7 +231,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
|
||||
+ "<br />" +
|
||||
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
|
||||
null,
|
||||
() -> startVenditaActivity(sitArtsDTO, selectedOrders, mtbColtList)
|
||||
() -> SpedizioneActivity.startActivity(getActivity(), sitArtsDTO, selectedOrders, mtbColtList)
|
||||
).show();
|
||||
|
||||
}, ex -> UtilityExceptions.defaultException(getActivity(), ex, progress));
|
||||
@ -350,19 +347,4 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
|
||||
onComplete.run();
|
||||
}
|
||||
}
|
||||
|
||||
private void startVenditaActivity(List<SitArtOrdDTO> ordini, List<OrdineVenditaInevasoDTO> selectedOrders, List<MtbColt> mtbColtList) {
|
||||
Intent myIntent = new Intent(getActivity(), SpedizioneActivity.class);
|
||||
|
||||
String keyPickingList = DataCache.addItem(ordini);
|
||||
myIntent.putExtra("keyPickingList", keyPickingList);
|
||||
|
||||
String keyTestateOrdini = DataCache.addItem(selectedOrders);
|
||||
myIntent.putExtra("keyTestateOrdini", keyTestateOrdini);
|
||||
|
||||
String keyColliRegistrati = DataCache.addItem(mtbColtList);
|
||||
myIntent.putExtra("keyColliRegistrati", keyColliRegistrati);
|
||||
|
||||
getActivity().startActivity(myIntent);
|
||||
}
|
||||
}
|
||||
|
||||
@ -93,6 +93,7 @@ public class SimpleAutoCompleteDropdownAdapter extends ArrayAdapter {
|
||||
protected void publishResults(CharSequence constraint,
|
||||
FilterResults results) {
|
||||
// NOTE: this function is *always* called from the UI thread.
|
||||
if(constraint != null && constraint.length() > 2) {
|
||||
ArrayList<T> filtered = (ArrayList<T>) results.values;
|
||||
notifyDataSetChanged();
|
||||
clear();
|
||||
@ -101,6 +102,7 @@ public class SimpleAutoCompleteDropdownAdapter extends ArrayAdapter {
|
||||
notifyDataSetInvalidated();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -4,9 +4,11 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<data>
|
||||
|
||||
<import type="android.view.View" />
|
||||
|
||||
<variable
|
||||
name="viewmodel"
|
||||
name="pickingResiView"
|
||||
type="it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity" />
|
||||
</data>
|
||||
|
||||
@ -24,8 +26,7 @@
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/empty_space_padding">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
@ -62,65 +63,6 @@
|
||||
android:orientation="vertical"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<net.cachapa.expandablelayout.ExpandableLayout
|
||||
android:id="@+id/filtered_arts_in_list_expandable_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:el_duration="400"
|
||||
app:el_expanded="false">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_toStartOf="@+id/remove_art_filter_list"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/filtered_arts_in_list" />
|
||||
<TextView
|
||||
android:id="@+id/description_filter_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
tools:text="COD_ART_HERE"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/remove_art_filter_list"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Button.DangerOutline"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:text="@string/remove_filter_button"
|
||||
android:onClick="@{() -> viewmodel.removeListFilter()}"
|
||||
app:strokeColor="@color/red_600"/>
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</net.cachapa.expandablelayout.ExpandableLayout>
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/main_list"
|
||||
@ -137,7 +79,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:alpha="0.3"
|
||||
android:visibility="@{viewmodel.mDtbDocrList.size() > 0 ? View.GONE : View.VISIBLE}"
|
||||
app:visibility="@{pickingResiView.noItemsToPick}"
|
||||
tools:context=".gest.lista_bancali.ListaBancaliActivity">
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
@ -192,7 +134,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="@{viewmodel.currentMtbColt == null ? View.VISIBLE : View.GONE}"
|
||||
app:visibility="@{pickingResiView.noLUPresent}"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
||||
@ -233,36 +175,33 @@
|
||||
app:fab_colorNormal="@color/white"
|
||||
app:fab_colorPressed="@color/white_pressed"
|
||||
app:fab_colorRipple="#66FFFFFF"
|
||||
app:onClick="@{() -> viewmodel.createNewUL()}"
|
||||
app:onClick="@{() -> pickingResiView.createNewLU()}"
|
||||
fab:fab_label="@string/action_create_ul" />
|
||||
|
||||
</com.github.clans.fab.FloatingActionMenu>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/empty_space_padding"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}"
|
||||
android:layout_alignParentBottom="true">
|
||||
<!-- <RelativeLayout-->
|
||||
<!-- android:id="@+id/empty_space_padding"-->
|
||||
<!-- android:layout_width="match_parent"-->
|
||||
<!-- android:layout_height="?attr/actionBarSize"-->
|
||||
<!-- android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}"-->
|
||||
<!-- android:layout_alignParentBottom="true">-->
|
||||
|
||||
</RelativeLayout>
|
||||
<!-- </RelativeLayout>-->
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<View
|
||||
android:id="@+id/shadow"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="16dp"
|
||||
android:background="@drawable/shape_gradient_top_shadow"
|
||||
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}"
|
||||
app:layout_anchor="@id/bottom_sheet_include" />
|
||||
|
||||
<include
|
||||
android:id="@+id/bottom_sheet_include"
|
||||
layout="@layout/fragment_articoli_in_collo_bottom_sheet"
|
||||
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}" />
|
||||
<it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView
|
||||
android:id="@+id/bottom_sheet_lu_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:visibility="@{pickingResiView.bottomSheetEnabled}"
|
||||
app:behavior_hideable="false"
|
||||
app:behavior_peekHeight="66dp"
|
||||
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
android:focusable="true">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/content_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
@ -37,7 +38,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="right">
|
||||
android:gravity="end">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/qta_evasa"
|
||||
@ -96,5 +97,14 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/deactivated_over_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignTop="@id/content_view"
|
||||
android:layout_alignBottom="@id/content_view"
|
||||
android:background="@android:color/black"
|
||||
android:alpha="0.15" />
|
||||
|
||||
</RelativeLayout>
|
||||
</layout>
|
||||
@ -10,7 +10,7 @@
|
||||
android:background="@color/mainGreen">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/descrizione"
|
||||
android:id="@+id/group_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="DESCRIZIONE"
|
||||
@ -13,7 +13,7 @@ buildscript {
|
||||
classpath 'com.android.tools.build:gradle:4.1.0'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath 'com.google.gms:google-services:4.3.4'
|
||||
classpath 'com.google.firebase:perf-plugin:1.3.2'
|
||||
classpath 'com.google.firebase:perf-plugin:1.3.3'
|
||||
|
||||
// Add the Firebase Crashlytics Gradle plugin.
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user