diff --git a/app/build.gradle b/app/build.gradle
index 5810e457..c27b4447 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -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'
diff --git a/app/google-services.json b/app/google-services.json
index bab7083e..4b6560c5 100644
--- a/app/google-services.json
+++ b/app/google-services.json
@@ -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
}
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 62d398b2..2ebbabd5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,10 +25,14 @@
android:windowSoftInputMode="adjustNothing" />
+
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 mDocumentiResiList;
- public ObservableList mDtbDocrList;
- private final List mColliRegistrati = new ArrayList<>();
-
- private ActivityPickingResiBinding mBinding;
- private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
-
- public ObservableField currentMtbColt = new ObservableField<>();
-
- private PickingResiListAdapter mAdapter;
+ private int mDefaultSegnoLU;
private int barcodeScannerIstanceID = -1;
+ public ObservableList 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 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(() -> {
- BarcodeManager.removeCallback(barcodeScannerIstanceID);
- super.onBackPressed();
- });
- }
- else {
+ 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 initView() {
+
+ private void initVars() {
+ this.noLUPresent.addOnPropertyChangedCallback(() -> {
+ this.bottomSheetEnabled.set(!this.noLUPresent.get());
+ });
+ }
+
+ private void initBarcodeReader() {
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
- .setOnScanSuccessfull(this::onScanSuccessful)
+ .setOnScanSuccessfull(onScanSuccessful)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
+ }
+ private void initRecyclerView() {
+ this.mBindings.elevatedToolbar.setRecyclerView(this.mBindings.mainList);
- setSupportActionBar(this.mBinding.toolbar);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ this.mViewmodel.getPickingList().observe(this, updatedData -> {
+ this.mPickingResiMutableData.clear();
+ this.mPickingResiMutableData.addAll(convertDataModelToListModel(updatedData));
+ this.noItemsToPick.set(updatedData.isEmpty());
+ });
- getSupportActionBar().setTitle(mActivityTitle);
+ PickingResiListAdapter pickingResiListAdapter = new PickingResiListAdapter(this, mPickingResiMutableData);
+ this.mBindings.mainList.setAdapter(pickingResiListAdapter);
+ this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(this));
- 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());
+ pickingResiListAdapter.setOnItemClicked(clickedItem -> {
+ if (!noLUPresent.get()) {
+// this.mViewmodel.dispatchOrdineRow(clickedItem);
}
-
- this.initList();
- }, ex -> {
- UtilityExceptions.defaultException(this, ex, progressDialog);
});
}
- private void initList() {
- mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList);
- mAdapter.setOnItemClicked(this::onOrdineRowDispatch);
+ private List convertDataModelToListModel(List dataList) {
+ List pickingResiListModels = new ArrayList<>();
- this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this));
- this.mBinding.mainList.setAdapter(mAdapter);
+ Stream.of(dataList)
+ .sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
+ .forEach(x -> {
+
+ PickingResiListModel pickingResiListModel = new PickingResiListModel();
+
+ 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);
+
+ 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 void initDatiPicking() throws Exception {
- List foundGestioni = Stream.of(this.mDocumentiResiList)
- .map(DocumentoResoDTO::getGestione)
- .distinct()
- .withoutNulls()
- .toList();
+ private RunnableArgs onScanSuccessful = data -> {
+ BarcodeManager.disable();
- if(foundGestioni.size() > 1) {
- throw new Exception("Sono stati caricati documenti con diverse gestioni");
- } else mDefaultGestioneOfUL = foundGestioni.get(0);
+ this.openProgress();
+ this.mViewmodel.processBarcodeDTO(data, () -> {
+ BarcodeManager.enable();
+ this.closeProgress();
+ });
+ };
- List foundCodAnags = Stream.of(this.mDocumentiResiList)
- .map(DocumentoResoDTO::getCodAnag)
- .distinct()
- .toList();
+ public void createNewLU() {
+ this.mBindings.mainFab.close(true);
- if(foundCodAnags.size() > 1) {
- throw new Exception("Sono stati caricati documenti con diversi codici anagrafici");
- } else mDefaultCodAnagOfUL = foundCodAnags.get(0);
+ this.openProgress();
- }
-
-
-
-
- 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 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);
+ this.mViewmodel.createNewLU(null, null, () -> {
+ this.closeProgress();
});
}
-
@Override
- public void onColloClosed(Runnable onComplete, boolean shouldPrint) {
- if(thereIsAnOpenedUL()) {
+ public void onMtbColrEdit(MtbColr mtbColr) {
- 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);
+ @Override
+ public void onMtbColrDelete(MtbColr mtbColr) {
- 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);
+ @Override
+ public void onBottomSheetLUClose() {
- 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 -> {
+ @Override
+ public void onError(Exception ex) {
- 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();
}
+ @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 onComplete) {
-
- private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs 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 onRowSaved() {
- setULToCurrentContext(null);
-
- for(int i = 0; i < this.mDtbDocrList.size(); i++) {
- WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i);
-
- List 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();
}
+ @Override
+ public void onLUOpened(MtbColt mtbColt) {
- 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 onLUClosed() {
- 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 onLUSuccessullyPrinted() {
+
}
+ @Override
+ public void onLUPrintRequest(RunnableArgs onComplete) {
- private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) {
- int index = this.mDtbDocrList.indexOf(dtbDocr);
- this.mDtbDocrList.remove(dtbDocr);
- this.mDtbDocrList.add(index, dtbDocr);
}
+ @Override
+ public void onLUPrintError(Exception ex, Runnable onComplete) {
- public void removeListFilter() {
}
+ @Override
+ public void onLoadingStarted() {
+ }
+
+ @Override
+ public void onLoadingEnded() {
+
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiComponent.java
new file mode 100644
index 00000000..4567a6bd
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiComponent.java
@@ -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);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java
new file mode 100644
index 00000000..b0d8af52
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiModule.java
@@ -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);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java
new file mode 100644
index 00000000..c68550a9
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java
@@ -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> 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 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> 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 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 onComplete);
+
+ void onRowSaved();
+
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java
index 0da8eb22..13aef6b5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListAdapter.java
@@ -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 {
-
private Context mContext;
-
- private List mDataset;
-
+ private final List mDataset = new ArrayList<>();
private RunnableArgs 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 data) {
+ public PickingResiListAdapter(AppCompatActivity context, ObservableArrayList mutableDataSet) {
this.mContext = context;
- this.mDataset = new ArrayList<>();
- refreshData(data);
-
- data.addOnListChangedCallback(new ObservableList.OnListChangedCallback>() {
+ mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() {
@Override
- public void onChanged(ObservableList sender) {
- refreshData(sender);
- }
-
- @Override
- public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) {
- refreshData(sender);
- }
-
- @Override
- public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) {
- refreshData(sender);
- }
-
- @Override
- public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) {
- refreshData(sender);
- }
-
- @Override
- public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) {
- refreshData(sender);
+ public void onChanged(ObservableList sender) {
+ mDataset.clear();
+ mDataset.addAll(sender);
+ notifyDataSetChanged();
+ notifyDataChanged();
}
});
}
- private void refreshData(List 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 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( !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;
+ if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
+ return false;
+ }
}
- return false;
+ return true;
}
+
@Override
public int getItemSize() {
return this.mDataset.size();
}
-
-
-
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java
new file mode 100644
index 00000000..d5816c64
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/core/PickingResiListModel.java
@@ -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;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/exceptions/DocumentsLoadException.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/exceptions/DocumentsLoadException.java
new file mode 100644
index 00000000..be2b42f7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/exceptions/DocumentsLoadException.java
@@ -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);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java
new file mode 100644
index 00000000..e58b102f
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/PickingResiRESTConsumer.java
@@ -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 documents, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ List> filterCond = new ArrayList<>();
+
+ for(int i = 0; i < documents.size(); i++) {
+ HashMap 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>() {}.getType();
+ this.mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback>() {
+ @Override
+ public void onSuccess(ArrayList values) {
+
+ if(values != null && values.size() > 0){
+ List 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 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);
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java
similarity index 92%
rename from app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java
rename to app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java
index eb7d8110..08fabdd5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/dto/WithdrawableDtbDocr.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/rest/WithdrawableDtbDocr.java
@@ -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;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/PickingResiActivity.java
new file mode 100644
index 00000000..7aa43763
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/PickingResiActivity.java
@@ -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 mDocumentiResiList;
+ public ObservableList mDtbDocrList;
+ private final List mColliRegistrati = new ArrayList<>();
+
+ private ActivityPickingResiBinding mBinding;
+ private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
+
+ public ObservableField 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 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 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 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 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 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 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() {
+ }
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/core/PickingResiListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/core/PickingResiListAdapter.java
new file mode 100644
index 00000000..830943d7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi_OLD/core/PickingResiListAdapter.java
@@ -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 {
+
+
+ private Context mContext;
+
+ private List mDataset;
+
+ private RunnableArgs 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 data) {
+ this.mContext = context;
+ this.mDataset = new ArrayList<>();
+
+ refreshData(data);
+
+ data.addOnListChangedCallback(new ObservableList.OnListChangedCallback>() {
+ @Override
+ public void onChanged(ObservableList sender) {
+ refreshData(sender);
+ }
+
+ @Override
+ public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) {
+ refreshData(sender);
+ }
+
+ @Override
+ public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) {
+ refreshData(sender);
+ }
+
+ @Override
+ public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) {
+ refreshData(sender);
+ }
+
+ @Override
+ public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) {
+ refreshData(sender);
+ }
+ });
+ }
+
+ private void refreshData(List 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 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();
+ }
+
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
index 3d9f610e..58b72f48 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
@@ -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 ordini, List selectedOrders, List 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);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java
index e949cd0a..bf2cd22f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneListAdapter.java
@@ -29,9 +29,8 @@ import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter {
-
private Context mContext;
- private List mDataset = new ArrayList<>();
+ private final List mDataset = new ArrayList<>();
private RunnableArgs mOnItemClicked;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java
index 3d1fbf5d..53cc77a2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java
@@ -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 {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
index 7c608c24..c2bb867d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/UltimiArriviFornitoreFragment.java
@@ -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;
/**
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java
index ad4787de..7e60b3e9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultimi_arrivi_fornitore/core/UltimiArriviFornitoreViewModel.java
@@ -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;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
index 996b442d..91ffa13c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
@@ -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
+ "
" +
"" + alreadyRegisteredUL + " " + 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 ordini, List selectedOrders, List 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);
- }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java
index 14a5d571..f2e665d4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java
@@ -93,12 +93,14 @@ public class SimpleAutoCompleteDropdownAdapter extends ArrayAdapter {
protected void publishResults(CharSequence constraint,
FilterResults results) {
// NOTE: this function is *always* called from the UI thread.
- ArrayList filtered = (ArrayList) results.values;
- notifyDataSetChanged();
- clear();
- for (int i = 0, l = filtered.size(); i < l; i++)
- add(filtered.get(i));
- notifyDataSetInvalidated();
+ if(constraint != null && constraint.length() > 2) {
+ ArrayList filtered = (ArrayList) results.values;
+ notifyDataSetChanged();
+ clear();
+ for (int i = 0, l = filtered.size(); i < l; i++)
+ add(filtered.get(i));
+ notifyDataSetInvalidated();
+ }
}
}
diff --git a/app/src/main/res/layout/activity_picking_resi.xml b/app/src/main/res/layout/activity_picking_resi.xml
index 9e2c9783..a435c364 100644
--- a/app/src/main/res/layout/activity_picking_resi.xml
+++ b/app/src/main/res/layout/activity_picking_resi.xml
@@ -4,9 +4,11 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
+
+
@@ -24,8 +26,7 @@
+ android:layout_height="match_parent">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
+
diff --git a/app/src/main/res/layout/ultime_consegne_main_list__item.xml b/app/src/main/res/layout/picking_resi_main_list__item.xml
similarity index 90%
rename from app/src/main/res/layout/ultime_consegne_main_list__item.xml
rename to app/src/main/res/layout/picking_resi_main_list__item.xml
index 8cbc884b..b3bc48ef 100644
--- a/app/src/main/res/layout/ultime_consegne_main_list__item.xml
+++ b/app/src/main/res/layout/picking_resi_main_list__item.xml
@@ -9,6 +9,7 @@
android:focusable="true">
+ android:gravity="end">
+
+
diff --git a/app/src/main/res/layout/ultime_consegne_main_list__item_header.xml b/app/src/main/res/layout/picking_resi_main_list__item_header.xml
similarity index 93%
rename from app/src/main/res/layout/ultime_consegne_main_list__item_header.xml
rename to app/src/main/res/layout/picking_resi_main_list__item_header.xml
index efda0d5e..6eecd206 100644
--- a/app/src/main/res/layout/ultime_consegne_main_list__item_header.xml
+++ b/app/src/main/res/layout/picking_resi_main_list__item_header.xml
@@ -10,7 +10,7 @@
android:background="@color/mainGreen">