diff --git a/app/src/main/java/com/example/bondoyap/ui/scanner/ScanResultFragment.kt b/app/src/main/java/com/example/bondoyap/ui/scanner/ScanResultFragment.kt
index 96f2ba070db2124c6497759326fab0e7b1419f4d..1f72aec1b5beac20955e231811770fb1b4be3302 100644
--- a/app/src/main/java/com/example/bondoyap/ui/scanner/ScanResultFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/scanner/ScanResultFragment.kt
@@ -5,11 +5,24 @@ import android.util.Log
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.widget.Toast
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
+import androidx.fragment.app.viewModels
+import androidx.navigation.NavController
+import androidx.navigation.fragment.findNavController
 import androidx.recyclerview.widget.LinearLayoutManager
 import com.example.bondoyap.databinding.FragmentScanResultBinding
+import com.example.bondoyap.service.LocationManager
+import com.example.bondoyap.service.api.data.Item
 import com.example.bondoyap.ui.scanner.listAdapter.ScanResultListAdapter
+import com.example.bondoyap.ui.transactions.TransactionsApplication
+import com.example.bondoyap.ui.transactions.TransactionsViewModel
+import com.example.bondoyap.ui.transactions.TransactionsViewModelFactory
+import com.example.bondoyap.ui.transactions.data.Transactions
+import java.text.SimpleDateFormat
+import java.util.Date
+import java.util.Locale
 
 
 class ScanResultFragment : Fragment() {
@@ -17,6 +30,7 @@ class ScanResultFragment : Fragment() {
     // onDestroyView.
     private var _binding: FragmentScanResultBinding? = null
     private val binding get() = _binding!!
+    private lateinit var navController: NavController
 
 
     override fun onCreateView(
@@ -27,15 +41,23 @@ class ScanResultFragment : Fragment() {
         _binding = FragmentScanResultBinding.inflate(inflater, container, false)
         val root: View = binding.root
 
+        navController = findNavController()
         val scannerViewModel: ScannerViewModel by activityViewModels()
+        val items = scannerViewModel.items ?: throw Exception("Scan Result is null")
+        Log.d("Scan Result", "Result Received: $items")
 
         val recyclerView = binding.recyclerView
         val adapter = ScanResultListAdapter()
         recyclerView.adapter = adapter
         recyclerView.layoutManager = LinearLayoutManager(requireContext())
-        scannerViewModel.items?.let { items ->
-            adapter.submitList(items)
-            Log.d("Scan Result", "Result Received: $items")
+        adapter.submitList(items)
+
+        binding.cancelButton.setOnClickListener {
+            navController.popBackStack()
+        }
+
+        binding.saveButton.setOnClickListener {
+            saveNota(items)
         }
 
         return root
@@ -45,4 +67,39 @@ class ScanResultFragment : Fragment() {
         super.onDestroyView()
         _binding = null
     }
+
+    private fun saveNota(items: List<Item>) {
+        val dateDateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
+        val titleDateFormat = SimpleDateFormat("dd_MM_yyyy_HH_mm_ss", Locale.getDefault())
+        val currentTime = Date()
+        val currentDate = dateDateFormat.format(currentTime)
+        val title = titleDateFormat.format(currentTime)
+
+        val value = items.sumOf { it.quantity * it.price }
+
+        val transactionsViewModel: TransactionsViewModel by viewModels {
+            TransactionsViewModelFactory((requireContext().applicationContext as TransactionsApplication).repository)
+        }
+
+        LocationManager.askLocationPermission(requireContext(), requireActivity())
+        val location = LocationManager.getLocation(requireContext())
+        var longitude = ""
+        var latitude = ""
+        location?.let { it1 ->
+            longitude = it1.longitude.toString()
+            latitude = it1.latitude.toString()
+        }
+
+        val transaction: Transactions = Transactions(
+            judul = "Scanner_${title}",
+            nominal = value,
+            isPemasukan = false,
+            tanggal = currentDate,
+            longitude = longitude,
+            latitude = latitude
+        )
+        transactionsViewModel.upsert(transaction)
+
+        Toast.makeText(requireContext(), "Nota berhasil disimpan", Toast.LENGTH_SHORT).show()
+    }
 }
\ No newline at end of file