У меня есть простая функция управления продажами, я хочу записывать продажи и обновлять запас в момент нажатия кнопки, чтобы заставить его работать, у меня есть три метода
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) {
}
});
}