Android, как вызвать обновления дочернего элемента на основе элемента от другого дочернего элемента в качестве ввода - PullRequest
0 голосов
/ 22 мая 2018

У меня есть простая функция управления продажами, я хочу записывать продажи и обновлять запас в момент нажатия кнопки, чтобы заставить его работать, у меня есть три метода

1: записать продажи, из которых я вызываю два метода "UpdatadeStockAfterSells "и" SaveSalesData ", поскольку эти два метода зависят от выборки данных из базы данных.

2:" UpdatadeStockAfterSells ", который обновляет запас после продажи *

3:" SaveSalesData "предназначен для записи продаж.

"SaveSalesData" работает нормально, но когда я пытаюсь обновить приложение, которое продолжает работать, происходит сбой, я действительно не знаю, где я могу ошибиться.Идея такова: «Я вызываю два метода внутри другого метода, чтобы они могли использовать некоторые выборочные данные в качестве входных данных.

// for stock       
mDatabaseReference = FirebaseDatabase.getInstance().getReference("stocks");

//for sales record       
mDatabaseReference1 = FirebaseDatabase.getInstance().getReference("saleRecords");


 public class recordSalesModel {
     String productName;
     String Quantity;
     public recordSalesModel(){ }

     public recordSalesModel(String productName) {
         this.productName = productName;
     }

     public recordSalesModel(String productName, String quantity) {
         this.productName = productName;
         Quantity = quantity;
     }

     public String getProductName() {
         return productName;
     }

     public void setProductName(String productName) {
         this.productName = productName;
     }

     public String getQuantity() {
         return Quantity;
     }

     public void setQuantity(String quantity) {
         Quantity = quantity;
     }
}

// Сохранение продаж

  public void SaveSalesData(String name, String quantity) {
    recordSalesModel recordSalesModel = new recordSalesModel(name, quantity);
    String uploadId = mDatabaseReference1.push().getKey();
    mDatabaseReference1.child(uploadId).setValue(recordSalesModel, new DatabaseReference.CompletionListener() {
        @Override
        public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
            Toast.makeText(getContext(), "Error : "+ databaseError, Toast.LENGTH_LONG).show();
        }
    });
    Toast.makeText(getContext(), " successful Inserted", Toast.LENGTH_LONG).show();
}

// Обновление запаса

 public void UpdatadeStockAfterSells(String ChildKey, String quantity_sold, String stock_Remaining_Quantity, String Stock_Quantity) {
    double NewRemainingStock = Double.valueOf(stock_Remaining_Quantity) - Double.valueOf(quantity_sold);
    double NewRemainingStockPercentage = (Double.valueOf(NewRemainingStock) / Double.valueOf(Stock_Quantity)) * 100;

    mDatabaseReference.child(ChildKey).child("percentageRemain").setValue(String.valueOf(NewRemainingStockPercentage), new DatabaseReference.CompletionListener() {
        @Override
        public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
            Toast.makeText(getContext(), "Error : ==> "+databaseError, Toast.LENGTH_LONG).show();
        }
    });
        mDatabaseReference.child(ChildKey).child("remainingQuantity").setValue(String.valueOf(NewRemainingStock), new DatabaseReference.CompletionListener() {
            @Override
            public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                Toast.makeText(getContext(), "Error : ==> "+databaseError, Toast.LENGTH_LONG).show();
            }
        });
        Toast.makeText(getContext(), " UPDATED", Toast.LENGTH_LONG).show();
    }

// Метод записи продажи

public void RecoredSales() {
    final String spiner_seleceted_name = areaSpinner.getSelectedItem().toString();
    final String Selling_Quantity = quantity.getText().toString();

        mDatabaseReference.orderByChild("productName").equalTo(spiner_seleceted_name).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot areaSnapshot : dataSnapshot.getChildren()) {

                    String stockRemainingQuantity = areaSnapshot.getValue(UploadStockModel.class).getRemainingQuantity();
                    String stockQuantity = areaSnapshot.getValue(UploadStockModel.class).getQuantity();
                    String KeyDb = areaSnapshot.getKey();

                     SaveSalesData(spiner_seleceted_name, Selling_Quantity );


                      UpdatadeStockAfterSells(KeyDb, Selling_Quantity, stockRemainingQuantity, stockQuantity);
                    }}
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...