diff --git a/.idea/misc.xml b/.idea/misc.xml
index 8978d23db569daa721cb26dde7923f4c673d1fc9..f1044879e31aa73a3e757a2f81a68e7c26bd222a 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ExternalStorageConfigurationManager" enabled="true" />
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index c10d88c9eea0c196636a610e5db54b854efdd1ee..7e447f7285ac75ffb47735eb62bed5feb7f63d8d 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -3,7 +3,6 @@ plugins {
     id("org.jetbrains.kotlin.android")
     id("kotlin-android")
     id("kotlin-kapt")
-    id("kotlin-parcelize")
 }
 
 android {
@@ -44,12 +43,11 @@ android {
 
 dependencies {
     val navVersion = "2.7.7"
-    implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0")
     implementation("androidx.core:core-ktx:1.12.0")
     implementation("androidx.appcompat:appcompat:1.6.1")
     implementation("androidx.navigation:navigation-fragment-ktx:$navVersion")
     implementation("androidx.navigation:navigation-ui-ktx:$navVersion")
-    implementation("com.google.android.material:material:1.11.0")
+    implementation("com.google.android.material:material:1.9.0")
     implementation("com.squareup.retrofit2:retrofit:2.9.0")
     implementation("com.squareup.retrofit2:converter-gson:2.9.0")
     testImplementation("junit:junit:4.13.2")
@@ -57,13 +55,29 @@ dependencies {
     androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
 
     implementation("androidx.room:room-runtime:2.6.1")
-    kapt("androidx.room:room-compiler:2.6.1")
+    annotationProcessor("androidx.room:room-compiler:2.6.1")
 
     kapt("androidx.room:room-compiler:2.6.1")
 
     implementation("org.apache.poi:poi:5.2.2")
     implementation("org.apache.poi:poi-ooxml:5.2.2")
 
-    // Graph
-    implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")
+    //QR COde
+    implementation ("com.github.yuriy-budiyev:code-scanner:2.3.0")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 }
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 41dd1419ca90126d6785ab09ea5927afe8b7fa40..c26a7a5bd9cf623643f135c7910e14511b0cf123 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,7 +7,18 @@
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
         android:maxSdkVersion="32" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
+        android:maxSdkVersion="32" />
+    <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
+    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
+    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
+
+    <uses-permission android:name="android.permission.CAMERA"/>
+
+    <uses-feature
+        android:name="android.hardware.camera"
+        android:required="false"/>
+
 
     <application
         android:name=".BondowowoApp"
diff --git a/app/src/main/java/com/atm/bondowowo/ui/scan/ScanFragment.kt b/app/src/main/java/com/atm/bondowowo/ui/scan/ScanFragment.kt
index 6dab1a1b91d5d7d714d164a033826cdff2b3a136..13d2dbb861c9d51b5a496376f8c0f56cb6277be3 100644
--- a/app/src/main/java/com/atm/bondowowo/ui/scan/ScanFragment.kt
+++ b/app/src/main/java/com/atm/bondowowo/ui/scan/ScanFragment.kt
@@ -1,6 +1,61 @@
 package com.atm.bondowowo.ui.scan
 
+import android.Manifest
+import android.content.pm.PackageManager
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Toast
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
+import com.atm.bondowowo.R
+import com.budiyev.android.codescanner.CodeScanner
+import com.budiyev.android.codescanner.CodeScannerView
+import com.budiyev.android.codescanner.DecodeCallback
 
+class ScanFragment : Fragment() {
+    private val CAMERA_PERMISSION_REQUEST_CODE = 100
+    private lateinit var codeScanner: CodeScanner
 
-class ScanFragment : Fragment()
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+        return inflater.inflate(R.layout.fragment_scan, container, false)
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        val scannerView = view.findViewById<CodeScannerView>(R.id.scanner)
+
+        // Check camera permission
+        if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
+            ActivityCompat.requestPermissions(requireActivity(), arrayOf(Manifest.permission.CAMERA), CAMERA_PERMISSION_REQUEST_CODE)
+        } else {
+            initializeCodeScanner(scannerView)
+        }
+    }
+
+    private fun initializeCodeScanner(scannerView: CodeScannerView) {
+        codeScanner = CodeScanner(requireActivity(), scannerView)
+        codeScanner.decodeCallback = DecodeCallback {
+            requireActivity().runOnUiThread {
+                Toast.makeText(requireContext(), "Scanned: ${it.text}", Toast.LENGTH_LONG).show()
+            }
+        }
+        scannerView.setOnClickListener {
+            codeScanner.startPreview()
+        }
+    }
+
+    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+        if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) {
+            if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+                val scannerView = requireView().findViewById<CodeScannerView>(R.id.scanner)
+                initializeCodeScanner(scannerView)
+            } else {
+                Toast.makeText(requireContext(), "Camera permission denied", Toast.LENGTH_SHORT).show()
+            }
+        }
+    }
+}
diff --git a/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt b/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt
index 913bb23b4bddcfaa1a579c4c325b7012b4b14e66..7ef6c707decbb56ad0661c490cd639a98a4be4c8 100644
--- a/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt
+++ b/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt
@@ -1,14 +1,16 @@
 package com.atm.bondowowo.ui.settings
 
-import android.content.Context
 import android.content.Intent
-import android.net.Uri
 import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
 import android.widget.Toast
 import androidx.core.content.FileProvider
 import com.atm.bondowowo.R
 import java.io.File
+import android.content.pm.PackageManager
+
+
+
 
 
 class SendEmailActivity : AppCompatActivity() {
@@ -25,23 +27,24 @@ class SendEmailActivity : AppCompatActivity() {
 
         if (file != null && file.exists()) {
             val uri = FileProvider.getUriForFile(this, "${packageName}.fileprovider", file)
-//            val uri = FileProvider.getUriForFile(this, "${packageName}.fileprovider", File("/storage/emulated/0/Android/data/com.atm.bondowowo/files/transaction_data.xlsx"))
-//            val uri = Uri.fromFile(file)
+
+            val resInfoList = packageManager.queryIntentActivities(Intent(Intent.ACTION_SEND).apply {
+                type = "application/vnd.ms-excel"
+                putExtra(Intent.EXTRA_STREAM, uri)
+            }, PackageManager.MATCH_DEFAULT_ONLY)
+
+            for (resolveInfo in resInfoList) {
+                val packageName = resolveInfo.activityInfo.packageName
+                grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION)
+            }
 
             val emailIntent = Intent(Intent.ACTION_SEND)
             emailIntent.type = "application/vnd.ms-excel"
-//            emailIntent.type = "message/rfc822"
-            emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf("shidqizh@gmail.com"))
-//            emailIntent.putExtra(Intent.EXTRA_SUBJECT, file.toString())
+            emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf("shidqizh@gmail.com")) // tar benerin ini kirim ke user yang lagi login
             emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Export File")
-
             emailIntent.putExtra(Intent.EXTRA_TEXT, "Berikut terlampir file transaksi dalam format spreadsheet.")
-//            emailIntent.putExtra(Intent.EXTRA_TEXT, uri.toString())
-
             emailIntent.putExtra(Intent.EXTRA_STREAM, uri)
 
-            emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
-
             try {
                 startActivity(Intent.createChooser(emailIntent, "Send mail..."))
             } catch (ex: android.content.ActivityNotFoundException) {
@@ -52,7 +55,6 @@ class SendEmailActivity : AppCompatActivity() {
         }
     }
 
-
     private fun getLatestFileFromStorage(): File? {
         val directoryPath = "/storage/emulated/0/Android/data/com.atm.bondowowo/files"
         val directory = File(directoryPath)
diff --git a/app/src/main/res/layout/fragment_scan.xml b/app/src/main/res/layout/fragment_scan.xml
index 94e66ceffcca01ce964fcb6cbee53c0819c792cc..36b25531628c364f13e92516cd573573bdeaba13 100644
--- a/app/src/main/res/layout/fragment_scan.xml
+++ b/app/src/main/res/layout/fragment_scan.xml
@@ -24,28 +24,34 @@
             android:textStyle="bold" />
     </com.google.android.material.appbar.AppBarLayout>
 
-    <TextureView
-        android:id="@+id/camera_preview"
-        android:layout_width="300dp"
-        android:layout_height="400dp"
-        android:background="@color/black"
-        app:layout_constraintBottom_toTopOf="@id/capture_button"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.495"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/header"
-        app:layout_constraintVertical_bias="0.508" />
-
-    <Button
-        android:id="@+id/capture_button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginBottom="124dp"
-        android:text="@string/capture"
-        app:cornerRadius="999dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.498"
-        app:layout_constraintStart_toStartOf="parent" />
+    <LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_marginTop="40dp"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        tools:contex="com.atm.bondowowo.ui.scan.ScanFragment">
+
+        <com.budiyev.android.codescanner.CodeScannerView
+            android:id="@+id/scanner"
+            android:layout_width="match_parent"
+            android:layout_height="600dp"
+            app:autoFocusButtonVisible="true"/>
+
+        <TextView
+            android:id="@+id/tv_output"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:text="The result is here"
+            android:textAlignment="center"
+            android:textSize="20sp"
+            android:textColor="#A92B"/>
+
+    </LinearLayout>
+
+
 
 </androidx.constraintlayout.widget.ConstraintLayout>