Android如何根据来自另一个子项的项目作为输入来调用更新子项

时间:2018-05-22 10:41:41

标签: android firebase firebase-realtime-database

我有简单的销售管理功能,我想在点击按钮时记录销售和更新库存,使其工作我有三种方法

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

0 个答案:

没有答案