Pembuatan Total, Sisa, Jml.Byr, Jml.Trk pada aplikasi Catatan Kredit

Beberapa pengguna aplikasi melalui ulasan dan email meminta saya untuk membuatkan total yang tampil di layar. Waduh, saya langsung kepikiran kalau akan terjadi penjumlahan berulang kali dan akibatnya akan membaca Google Cloud berkali kali. Sedangkan yang saya gunakan adalah Paket Spark yaitu paket gratis dari Google Cloud untuk simpan Database, Dokumen dan Gambar/Photo.Paket Spark gratis dibatasi jumlah harian, selebihnya saya akan mendapatkan tagihan.

Setelah bersemedi beberapa hari, tiba tiba dapat ide. Kenapa tidak saya gunakan teknik yang sama seperti dengan sisa kredit pada transaksi. Bisa diterapkan tuk di layar utama juga. Maka mulailah saya membuat kolom Kredit dan Bayar. Setiap Kredit akan ditambahkan ke kolom Kredit dan setiap Bayar akan ditambahkan ke kolom Bayar dan yang sudah ada adalah kolom Sisa yang akan ditambahkan atau dikurangi oleh transaksi kredit dan bayar. Kemudian saya lakukan kontrol terhadap nilai total Kredit dan Bayar untuk dicocokkan dengan nilai total Sisa. Bila tidak cocok maka nilai tidak akan dimunculkan. Hal ini akibat adanya transaksi yang telah dibuat sebelum sistem baru ini dibuat. Dengan berjalannya waktu atau pemindahan transaksi lama ke transaksi baru dan dihapuskannya transaksi lama, maka Kredit, Bayar dan Sisa akan balance dan akan muncul di layar. Juga akan menunjukkan ketepatan aplikasi dengan server Google Cloud.

Ide bagus dan saya langsung mulai terapkan, dan 2 kolom baru dibaca berbarengan dengan data lainnya sekaligus, sehingga tidak menambah beban baca Google Cloud harian. Dan tentu saja tidak ada tagihan ke saya. Hehehe, senangnya.

Ini saya tunjukkan dibawah ini:

public void addNewContact() {
String mName = mmBinding.nameKu.getText().toString();
String mEmail = mmBinding.keteranganKu.getText().toString();
String mPhone = mmBinding.phoneKu.getText().toString();
final String mPhoto = "android.resource://com.blogspot.budilaks.catatankredit/drawable/photo";
Integer mavgRating= 0;
Integer mNumRating = 0;
Integer namaBayar= 0;
Integer namaKredit= 0;
Map<String, Object> newContact = new HashMap<>();
newContact.put(NAME_KEY, mName);
newContact.put(EMAIL_KEY, mEmail);
newContact.put(PHONE_KEY, mPhone);
newContact.put(PHOTO_KEY, mPhoto);
newContact.put(RATING_KEY, mavgRating);
newContact.put(BAYAR_KEY, namaBayar);
newContact.put(KREDIT_KEY, namaKredit);
newContact.put(NUMRATING_KEY, mNumRating);
newContact.put("price", FieldValue.serverTimestamp());
newContact.put("jtpTanggal", FieldValue.serverTimestamp());

db.collection(sUserFb).document().set(newContact)
.addOnSuccessListener(aVoid -> Toast.makeText(getApplicationContext(), "Data tersimpan......",
Toast.LENGTH_LONG).show());
}

 Saat pembuatan nama baru, akan dibuatkan koleksi Bayar dan Kredit. Sedangkan Sisa sudah ada sejak awal aplikasi ini dibuat yaitu pada kolom avgRating. 

Pada saat transaksi, terjadi penambahan nilai Bayar dan Kredit serta penjumlahan tuk nilai Sisa. Kemudian ditampilkan di layar dengan melakukan pembacaan sekaligus.

int newNumRatings = restaurant.getNumRatings() + 1;
// Compute new average rating
double oldRatingTotal = restaurant.getAvgRating();
double newAvgRating = (oldRatingTotal + rating.getRating());
Date newPrice = rating.getTimestamp();
Date newJtpRating = rating.getJtpRating();
double oldNamaBayar;
double oldNamaKredit;
double newNamaBayar;
double newNamaKredit;
int newNumBayars;
// compute new namaBayar dan namaKredit
if (rating.getRating() < 0.0) {
oldNamaBayar = restaurant.getNamaBayar();
newNamaBayar = oldNamaBayar + (Math.abs(rating.getRating()));
newNamaKredit = restaurant.getNamaKredit();
newNumBayars = restaurant.getNumBayars() + 1;
} else {
oldNamaKredit = restaurant.getNamaKredit();
newNamaKredit = oldNamaKredit + rating.getRating();
newNamaBayar = restaurant.getNamaBayar();
newNumBayars = restaurant.getNumBayars();
Log.d(TAG, "hasil.. " + newNamaBayar + " -- " + newNamaKredit, task.getException());
}

Demikian pula untuk Jml.Byr.(numBayars) dan Jml.Trk.(numRatings) mendapatkan perlakuan yang sama. Karena ada pengguna yang mengatakan senang melihat Jml.Trk. untuk melihat berapa kali cicilan telah dilunasi. Dan ini mengganggu saya untuk membuatkan Jml.Byr. agar pengguna ini tidak perlu mengurangi Jml.Trk. dengan nilai 1, cukup langsung lihat Jml.Byr. yaitu jumlah cicilan yang telah dilunasi.

Duh senangnya bisa membantu pengguna tanpa membebani munculnya tagihan dari Google Cloud.

catatan: Setelah baca baca tulisan ini,  loh kok numBayars enggak ada di class aplikasi ini. Untung tidak crash karena sistem yang digunakan adalah update. Akan aku update nanti ke v50.0 tuk update update kecil spt ini.

Terimakasih sudah membaca curhat saya.

Kupas tuntas aplikasi Catatan  Kredit

Lanjutan kupas tuntas aplikasi Catatan Kredit

Komentar