diff --git a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
index e49b61b1892a12f7b0a11a5ec1e4386ab37c519f..57d38616e76b0a2c50c1b89426eb4f106e285394 100644
--- a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt
@@ -1,6 +1,9 @@
 package com.onionsquad.bondoman
 
+import android.content.BroadcastReceiver
+import android.content.Context
 import android.content.Intent
+import android.content.IntentFilter
 import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
 import androidx.lifecycle.ViewModelProvider
@@ -18,6 +21,10 @@ class AddTransactionActivity : AppCompatActivity() {
     private val database by lazy { TransactionDatabase.getInstance(this) }
     private val repository by lazy { TransactionRepository(database.transactionDao()) }
 
+    private lateinit var randomizeTransactionReceiver: BroadcastReceiver
+    private val ACTION_RANDOMIZE_TRANSACTION = "com.onionsquad.bondoman.ACTION_RANDOMIZE_TRANSACTION"
+    private val EXTRA_RANDOMIZED_TRANSACTION = "extra_randomized_transaction"
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         binding = ActivityAddTransactionBinding.inflate(layoutInflater)
@@ -53,5 +60,34 @@ class AddTransactionActivity : AppCompatActivity() {
                 startActivity(it)
             }
         }
+        randomizeTransactionReceiver = object : BroadcastReceiver() {
+            override fun onReceive(context: Context, intent: Intent) {
+                if (intent.action == ACTION_RANDOMIZE_TRANSACTION) {
+                    val randomTransaction = intent.getSerializableExtra(EXTRA_RANDOMIZED_TRANSACTION) as? TransactionEntity
+                    if (randomTransaction != null) {
+                        populateTransactionFields(randomTransaction)
+                    }
+                }
+            }
+        }
+        registerReceiver(randomizeTransactionReceiver, IntentFilter(ACTION_RANDOMIZE_TRANSACTION), RECEIVER_NOT_EXPORTED)
+    }
+
+    private fun populateTransactionFields(transaction: TransactionEntity) {
+        binding.titleEditText.setText(transaction.title)
+        binding.amountEditText.setText(transaction.amount.toString())
+        when (transaction.category) {
+            TransactionCategory.INCOME -> binding.incomeRadioButton.isChecked = true
+            TransactionCategory.OUTCOME -> binding.outcomeRadioButton.isChecked = true
+            else -> {}
+        }
+        binding.locationEditText.setText(transaction.location)
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        unregisterReceiver(randomizeTransactionReceiver)
     }
+
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
index 64898cbf7c8ebf97163227d9ddd15a23450d0bc8..2151096418194bcb9679a5adb6e44f06b9cc32de 100644
--- a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt
@@ -5,6 +5,7 @@ import androidx.room.PrimaryKey
 import androidx.room.ColumnInfo
 import androidx.room.TypeConverters
 import com.onionsquad.bondoman.util.Converters
+import java.io.Serializable
 import java.util.Date
 
 @Entity(tableName = "transactions")
@@ -27,4 +28,4 @@ data class TransactionEntity(
 
     @ColumnInfo(name = "location")
     val location: String
-)
+) : Serializable
diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/settings/SettingsFragment.kt b/app/src/main/java/com/onionsquad/bondoman/ui/settings/SettingsFragment.kt
index 1219bbe14f7a5a8503001852174bbf81f0539ad8..d439d0d7760c23860a5ecef4a20badc29670447c 100644
--- a/app/src/main/java/com/onionsquad/bondoman/ui/settings/SettingsFragment.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/ui/settings/SettingsFragment.kt
@@ -30,6 +30,7 @@ import java.io.File
 import java.io.OutputStream
 import java.time.ZoneId
 import java.time.format.DateTimeFormatter
+import java.util.Date
 
 class SettingsFragment : Fragment() {
     private var _binding: FragmentSettingsBinding? = null
@@ -39,6 +40,9 @@ class SettingsFragment : Fragment() {
     private val database by lazy { TransactionDatabase.getInstance(requireContext()) }
     private val repository by lazy { TransactionRepository(database.transactionDao()) }
 
+    private val ACTION_RANDOMIZE_TRANSACTION = "com.onionsquad.bondoman.ACTION_RANDOMIZE_TRANSACTION"
+    private val EXTRA_RANDOMIZED_TRANSACTION = "extra_randomized_transaction"
+
 
     private val saveXls =
         registerForActivityResult(CreateDocument("application/vnd.ms-excel")) { uri ->
@@ -146,6 +150,16 @@ class SettingsFragment : Fragment() {
                 Toast.makeText(requireContext(), R.string.transactions_sent, Toast.LENGTH_SHORT)
                     .show()
             }
+
+            buttonRandomizeTransaction.setOnClickListener {
+                val randomTransaction = generateRandomTransaction()
+                val intent = Intent(ACTION_RANDOMIZE_TRANSACTION).apply {
+                    putExtra(EXTRA_RANDOMIZED_TRANSACTION, randomTransaction)
+                }
+                requireContext().sendBroadcast(intent)
+                Toast.makeText(requireContext(), "Transaksi acak dikirim", Toast.LENGTH_SHORT).show()
+            }
+
         }
 
         return binding.root
@@ -156,6 +170,20 @@ class SettingsFragment : Fragment() {
         startActivity(intent)
     }
 
+    private fun generateRandomTransaction(): TransactionEntity {
+        val titles = listOf("Belanja", "Makan", "Transportasi", "Hiburan")
+        val categories = listOf(TransactionCategory.INCOME, TransactionCategory.OUTCOME)
+        val locations = listOf("Jakarta", "Bandung", "Surabaya", "Yogyakarta")
+
+        return TransactionEntity(
+            title = titles.random(),
+            amount = (1000..100000).random().toDouble(),
+            category = categories.random(),
+            date = Date(),
+            location = locations.random()
+        )
+    }
+
     override fun onDestroyView() {
         super.onDestroyView()
         _binding = null
diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionAdapter.kt b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionAdapter.kt
index b39a926ac4c347ae5a3e08f8d1763d99622c9af9..68e8ae1ddf11a61f68045ed42330c86fb354d643 100644
--- a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionAdapter.kt
+++ b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionAdapter.kt
@@ -7,6 +7,8 @@ import androidx.recyclerview.widget.RecyclerView
 import com.onionsquad.bondoman.EditTransactionActivity
 import com.onionsquad.bondoman.databinding.TransactionCardBinding
 import com.onionsquad.bondoman.room.TransactionEntity
+import java.time.ZoneId
+import java.time.format.DateTimeFormatter
 
 class TransactionAdapter(
     private val viewModel: TransactionViewModel,
@@ -18,7 +20,11 @@ class TransactionAdapter(
             binding.titleTextView.text = transaction.title
             binding.amountTextView.text = "IDR ".plus(transaction.amount)
             binding.categoryTextView.text = transaction.category.toString()
-            binding.dateTextView.text = transaction.date.toString()
+            binding.dateTextView.text = transaction.date
+                .toInstant()
+                .atZone(ZoneId.systemDefault())
+                .toLocalDateTime()
+                .format(DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"))
             binding.locationTextView.text = transaction.location
 
             binding.deleteButton.setOnClickListener {