Прирост стоимости от Firestore - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть записи, которые выглядят так:

1

Перед вводом данных штрих-код должен быть заполнен с помощью сканера штрих-кода. Когда в Firestore существует штрих-код, я хочу, чтобы количество товара увеличивалось. И когда штрих-код недоступен в Firestore, Намерение другого класса.

Код:

@Override
public void handleResult(Result result) {
    final String scanResult = result.getText();

    ToneGenerator toneNotification = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
    toneNotification.startTone(ToneGenerator.TONE_PROP_BEEP, 150);

    collectionReference.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot queryDocumentSnapshot : task.getResult()) {
                    // if barcode is existing, then product quantity to increment
                    if (queryDocumentSnapshot.getString("barCode") != null) {
                        collectionReference.document(queryDocumentSnapshot.getId()).update("productQuantity", FieldValue.increment(1));
                        Intent moveView = new Intent(ScannersActivity.this, ViewData.class);
                        moveView.putExtra("documentID", documentID);
                        startActivity(moveView);
                        finish();
                    } else { // If barcode is not available in firestore, then intent to another class
                        Intent moveCode = new Intent(ScannersActivity.this, AddItems.class);
                        moveCode.putExtra("sendDocumentID", documentID);
                        moveCode.putExtra("ScanResult", scanResult);
                        startActivity(moveCode);
                        finish();
                    }
                }
            }
        }
    });
}

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Чтобы увеличить значение вашего свойства productQuantity на основе существования свойства barCode, попробуйте следующие строки кода:

collectionReference.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                if (document.getString("barCode") != null) {
                    collectionReference.document(document.getId()).update(
                        "productQuantity", FieldValue.increment(1)
                    );
                }
            }
        }
    }
});
0 голосов
/ 04 ноября 2019

Это выяснит, если штрих-код существует. Вы можете заполнить прокомментированную TODO транзакцией , чтобы обновить значение количества.

public void handleResult(Result result) {
  String scanResult = result.getText();
  // ...

  collectionReference
    .whereEqualTo("barCode", scanResult)
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
      @Override
      public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful() && task.getResult().size() > 0) {
          // TODO barcode exists; increase qty
        }
        else {
          // barcode not found, new Intent
        }
      }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...