Przeglądaj źródła

fix: setting master

rodzic
commit
b80f91b232

+ 90
- 0
app/Http/Controllers/CompanyController.php Wyświetl plik

@@ -0,0 +1,90 @@
1
+<?php
2
+
3
+namespace App\Http\Controllers;
4
+
5
+use App\Http\Requests\Company\StoreCompanyRequest;
6
+use App\Models\Company;
7
+use Illuminate\Http\Request;
8
+
9
+class CompanyController extends Controller
10
+{
11
+    /**
12
+     * Display a listing of the resource.
13
+     *
14
+     * @return \Illuminate\Http\Response
15
+     */
16
+    public function index()
17
+    {
18
+        //
19
+    }
20
+
21
+    /**
22
+     * Show the form for creating a new resource.
23
+     *
24
+     * @return \Illuminate\Http\Response
25
+     */
26
+    public function create()
27
+    {
28
+        //
29
+    }
30
+
31
+    /**
32
+     * Store a newly created resource in storage.
33
+     *
34
+     * @param  \Illuminate\Http\Request  $request
35
+     * @return \Illuminate\Http\Response
36
+     */
37
+    public function store(StoreCompanyRequest $request)
38
+    {
39
+        Company::truncate();
40
+
41
+        Company::create($request->validated());
42
+
43
+        return back()->with("success", __("messages.success.store.company"));
44
+    }
45
+
46
+    /**
47
+     * Display the specified resource.
48
+     *
49
+     * @param  \App\Models\Company  $company
50
+     * @return \Illuminate\Http\Response
51
+     */
52
+    public function show(Company $company)
53
+    {
54
+        //
55
+    }
56
+
57
+    /**
58
+     * Show the form for editing the specified resource.
59
+     *
60
+     * @param  \App\Models\Company  $company
61
+     * @return \Illuminate\Http\Response
62
+     */
63
+    public function edit(Company $company)
64
+    {
65
+        //
66
+    }
67
+
68
+    /**
69
+     * Update the specified resource in storage.
70
+     *
71
+     * @param  \Illuminate\Http\Request  $request
72
+     * @param  \App\Models\Company  $company
73
+     * @return \Illuminate\Http\Response
74
+     */
75
+    public function update(Request $request, Company $company)
76
+    {
77
+        //
78
+    }
79
+
80
+    /**
81
+     * Remove the specified resource from storage.
82
+     *
83
+     * @param  \App\Models\Company  $company
84
+     * @return \Illuminate\Http\Response
85
+     */
86
+    public function destroy(Company $company)
87
+    {
88
+        //
89
+    }
90
+}

+ 1
- 1
app/Http/Controllers/PpnController.php Wyświetl plik

@@ -40,7 +40,7 @@ class PpnController extends Controller
40 40
 
41 41
         Ppn::create($request->validated());
42 42
 
43
-        return back()->with("success", __("messages.success.update.ppn"));
43
+        return back()->with("success", __("messages.success.store.ppn"));
44 44
     }
45 45
 
46 46
     /**

+ 3
- 1
app/Http/Controllers/SettingController.php Wyświetl plik

@@ -2,6 +2,7 @@
2 2
 
3 3
 namespace App\Http\Controllers;
4 4
 
5
+use App\Models\Company;
5 6
 use App\Models\Ppn;
6 7
 use Illuminate\Http\Request;
7 8
 
@@ -15,7 +16,8 @@ class SettingController extends Controller
15 16
     public function index()
16 17
     {
17 18
         return inertia("Settings/Index", [
18
-            "ppn" => Ppn::first()->ppn,
19
+            "ppn" => Ppn::first(),
20
+            "company" => Company::first(),
19 21
         ]);
20 22
     }
21 23
 

+ 39
- 0
app/Http/Requests/Company/StoreCompanyRequest.php Wyświetl plik

@@ -0,0 +1,39 @@
1
+<?php
2
+
3
+namespace App\Http\Requests\Company;
4
+
5
+use Illuminate\Foundation\Http\FormRequest;
6
+
7
+class StoreCompanyRequest extends FormRequest
8
+{
9
+    /**
10
+     * Determine if the user is authorized to make this request.
11
+     *
12
+     * @return bool
13
+     */
14
+    public function authorize()
15
+    {
16
+        return true;
17
+    }
18
+
19
+    /**
20
+     * Get the validation rules that apply to the request.
21
+     *
22
+     * @return array<string, mixed>
23
+     */
24
+    public function rules()
25
+    {
26
+        return [
27
+            "name" => "required|string|max:25",
28
+            "address" => "required|string",
29
+            "telephone" =>
30
+                "required|numeric|digits_between:10,15|unique:companies,telephone," .
31
+                $this->id,
32
+            "email" =>
33
+                "string|email|nullable|unique:companies,email," . $this->id,
34
+            "npwp" =>
35
+                "required|numeric|digits_between:15,20|unique:companies,npwp," .
36
+                $this->id,
37
+        ];
38
+    }
39
+}

+ 1
- 1
app/Http/Requests/Supplier/StoreSupplierRequest.php Wyświetl plik

@@ -26,7 +26,7 @@ class StoreSupplierRequest extends FormRequest
26 26
         return [
27 27
             "name" => "required|string|max:50",
28 28
             "address" => "required|string",
29
-            "email" => "required|string|email|unique:suppliers,email",
29
+            "email" => "string|email|nullable|unique:suppliers,email",
30 30
             "phone" =>
31 31
                 "required|numeric|digits_between:12,15|unique:suppliers,phone",
32 32
             "npwp" =>

+ 1
- 1
app/Http/Requests/Supplier/UpdateSupplierRequest.php Wyświetl plik

@@ -27,7 +27,7 @@ class UpdateSupplierRequest extends FormRequest
27 27
             "name" => "required|string|max:50",
28 28
             "address" => "required|string",
29 29
             "email" =>
30
-                "required|string|email|unique:suppliers,email," .
30
+                "string|email|nullable|unique:suppliers,email," .
31 31
                 $this->supplier->id,
32 32
             "phone" =>
33 33
                 "required|numeric|digits_between:12,15|unique:suppliers,phone," .

+ 15
- 0
app/Models/Company.php Wyświetl plik

@@ -0,0 +1,15 @@
1
+<?php
2
+
3
+namespace App\Models;
4
+
5
+use Illuminate\Database\Eloquent\Factories\HasFactory;
6
+use Illuminate\Database\Eloquent\Model;
7
+
8
+class Company extends Model
9
+{
10
+    use HasFactory;
11
+
12
+    protected $fillable = ["name", "address", "telephone", "email", "npwp"];
13
+
14
+    protected $hidden = ["created_at", "updated_at"];
15
+}

+ 11
- 9
database/migrations/2022_06_16_091344_create_suppliers_table.php Wyświetl plik

@@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration;
4 4
 use Illuminate\Database\Schema\Blueprint;
5 5
 use Illuminate\Support\Facades\Schema;
6 6
 
7
-return new class extends Migration
8
-{
7
+return new class extends Migration {
9 8
     /**
10 9
      * Run the migrations.
11 10
      *
@@ -13,13 +12,16 @@ return new class extends Migration
13 12
      */
14 13
     public function up()
15 14
     {
16
-        Schema::create('suppliers', function (Blueprint $table) {
15
+        Schema::create("suppliers", function (Blueprint $table) {
17 16
             $table->id();
18
-            $table->string('name');
19
-            $table->string('address');
20
-            $table->string('phone')->unique();
21
-            $table->string('email')->unique();
22
-            $table->string('npwp')->unique();
17
+            $table->string("name");
18
+            $table->string("address");
19
+            $table->string("phone")->unique();
20
+            $table
21
+                ->string("email")
22
+                ->unique()
23
+                ->nullable();
24
+            $table->string("npwp")->unique();
23 25
             $table->timestamps();
24 26
         });
25 27
     }
@@ -31,6 +33,6 @@ return new class extends Migration
31 33
      */
32 34
     public function down()
33 35
     {
34
-        Schema::dropIfExists('suppliers');
36
+        Schema::dropIfExists("suppliers");
35 37
     }
36 38
 };

+ 38
- 0
database/migrations/2022_07_20_094754_create_companies_table.php Wyświetl plik

@@ -0,0 +1,38 @@
1
+<?php
2
+
3
+use Illuminate\Database\Migrations\Migration;
4
+use Illuminate\Database\Schema\Blueprint;
5
+use Illuminate\Support\Facades\Schema;
6
+
7
+return new class extends Migration {
8
+    /**
9
+     * Run the migrations.
10
+     *
11
+     * @return void
12
+     */
13
+    public function up()
14
+    {
15
+        Schema::create("companies", function (Blueprint $table) {
16
+            $table->id();
17
+            $table->string("name");
18
+            $table->string("address");
19
+            $table->string("telephone");
20
+            $table
21
+                ->string("email")
22
+                ->unique()
23
+                ->nullable();
24
+            $table->string("npwp");
25
+            $table->timestamps();
26
+        });
27
+    }
28
+
29
+    /**
30
+     * Reverse the migrations.
31
+     *
32
+     * @return void
33
+     */
34
+    public function down()
35
+    {
36
+        Schema::dropIfExists("companies");
37
+    }
38
+};

+ 2
- 1
lang/en/messages.php Wyświetl plik

@@ -36,6 +36,8 @@ return [
36 36
             "product" => "Product successfully added",
37 37
             "sale" => "Sale successfully",
38 38
             "purchase" => "Purchase successfully added",
39
+            "company" => "Company Profile successfully changed",
40
+            "ppn" => "Tax successfully changed",
39 41
         ],
40 42
         "update" => [
41 43
             "type_vehicle" => "Type vehicle successfully changed",
@@ -49,7 +51,6 @@ return [
49 51
             "supplier" => "Supplier successfully changed",
50 52
             "product" => "Product successfully changed",
51 53
             "sale" => "Sale successfully changed",
52
-            "ppn" => "Tax successfully changed",
53 54
             "purchase" => "Purchase successfully added",
54 55
         ],
55 56
         "destroy" => [

+ 2
- 1
lang/id/messages.php Wyświetl plik

@@ -36,6 +36,8 @@ return [
36 36
             "product" => "Produk berhasil ditambahkan",
37 37
             "sale" => "Penjualan berhasil",
38 38
             "purchase" => "Pembelian berhasil ditambahkan",
39
+            "company" => "Profile Perusahaan berhasil diubah",
40
+            "ppn" => "Pajak pertambahan nilai berhasil diubah",
39 41
         ],
40 42
         "update" => [
41 43
             "type_vehicle" => "Jenis kendaraan berhasil diubah",
@@ -49,7 +51,6 @@ return [
49 51
             "supplier" => "Supplier berhasil diubah",
50 52
             "product" => "Produk berhasil diubah",
51 53
             "sale" => "Penjualan berhasil diubah",
52
-            "ppn" => "Pajak pertambahan nilai berhasil diubah",
53 54
             "purchase" => "Pembelian berhasil diubah",
54 55
         ],
55 56
         "destroy" => [

+ 1
- 1
resources/js/layouts/Dashboard/Components/TopBar.vue Wyświetl plik

@@ -6,7 +6,7 @@ import { Link } from '@inertiajs/inertia-vue3'
6 6
   <div class="layout-topbar">
7 7
     <Link href="/" class="layout-topbar-logo">
8 8
       <img alt="Brand Logo" src="/images/logo.svg" class="md:mr-3" />
9
-      <span>Cahaya Agung</span>
9
+      <span>{{ $page.props.company.name }}</span>
10 10
     </Link>
11 11
 
12 12
     <button

+ 1
- 1
resources/js/layouts/Dashboard/menu.js Wyświetl plik

@@ -31,7 +31,7 @@ export default {
31 31
       label: 'Pengaturan',
32 32
       items: [
33 33
         {
34
-          label: 'Profil Perusahaan',
34
+          label: 'Pengaturan',
35 35
           icon: 'pi pi-cog',
36 36
           to: '/settings',
37 37
           component: 'Settigs/Index',

+ 87
- 4
resources/js/pages/Settings/Components/CompanyProfile.vue Wyświetl plik

@@ -1,27 +1,110 @@
1 1
 <script setup>
2
+import { useForm } from '@/composables/useForm'
3
+import { useState } from '../Composables/useState'
4
+import Invoice from './Invoice.vue'
2 5
 import AppInputText from '@/components/AppInputText.vue'
6
+import { provide } from 'vue'
7
+
8
+const props = defineProps({
9
+  company: Object,
10
+})
11
+
12
+const form = useForm({
13
+  id: props.company?.id,
14
+  name: props.company?.name,
15
+  address: props.company?.address,
16
+  telephone: props.company?.telephone,
17
+  email: props.company?.email,
18
+  npwp: props.company?.npwp,
19
+})
20
+
21
+provide('form', form)
22
+
23
+const { state, setState } = useState()
24
+
25
+const onSubmit = () => {
26
+  setState()
27
+
28
+  if (state.disable) {
29
+    form.post(route('companies.store'))
30
+  }
31
+}
3 32
 </script>
4 33
 
5 34
 <template>
6 35
   <div class="grid">
36
+    <div class="col-12">
37
+      <h1 class="text-lg">Profil Perusahaan</h1>
38
+    </div>
39
+
7 40
     <div class="col-12 md:col-6">
8
-      <AppInputText label="Nama" placeholder="nama" />
41
+      <AppInputText
42
+        label="Nama"
43
+        placeholder="nama"
44
+        :disabled="state.disable"
45
+        :error="form.errors.name"
46
+        v-model="form.name"
47
+      />
9 48
     </div>
49
+
10 50
     <div class="col-12 md:col-6">
11
-      <AppInputText label="Alamat" placeholder="alamat" />
51
+      <AppInputText
52
+        label="Alamat"
53
+        placeholder="alamat"
54
+        :disabled="state.disable"
55
+        :error="form.errors.address"
56
+        v-model="form.address"
57
+      />
12 58
     </div>
59
+
13 60
     <div class="col-12 md:col-6">
14 61
       <AppInputText
15 62
         type="number"
16 63
         label="Nomor Telepon"
17 64
         placeholder="nomor telepon"
65
+        :disabled="state.disable"
66
+        :error="form.errors.telephone"
67
+        v-model="form.telephone"
18 68
       />
19 69
     </div>
70
+
20 71
     <div class="col-12 md:col-6">
21
-      <AppInputText label="Email" placeholder="email" />
72
+      <AppInputText
73
+        label="Email"
74
+        placeholder="email"
75
+        :error="form.errors.email"
76
+        :disabled="state.disable"
77
+        v-model="form.email"
78
+      />
22 79
     </div>
80
+
23 81
     <div class="col-12 md:col-6">
24
-      <AppInputText type="number" label="NPWP" placeholder="npwp" />
82
+      <AppInputText
83
+        type="number"
84
+        label="NPWP"
85
+        placeholder="npwp"
86
+        :error="form.errors.npwp"
87
+        :disabled="state.disable"
88
+        v-model="form.npwp"
89
+      />
90
+    </div>
91
+
92
+    <div class="col-12">
93
+      <div class="flex flex-column md:flex-row justify-content-end">
94
+        <Button
95
+          class="p-button-outlined"
96
+          :icon="state.icon"
97
+          :label="state.label"
98
+          :disabled="form.processing"
99
+          @click="onSubmit"
100
+        />
101
+      </div>
102
+    </div>
103
+
104
+    <Divider />
105
+
106
+    <div class="col-12 hidden sm:block">
107
+      <Invoice />
25 108
     </div>
26 109
   </div>
27 110
 </template>

+ 122
- 0
resources/js/pages/Settings/Components/Invoice.vue Wyświetl plik

@@ -0,0 +1,122 @@
1
+<script setup>
2
+import { inject } from 'vue'
3
+
4
+const form = inject('form')
5
+</script>
6
+
7
+<template>
8
+  <div class="grid">
9
+    <div class="col-12">
10
+      <h1 class="text-lg font-bold">Tampilan Invoice</h1>
11
+    </div>
12
+  </div>
13
+
14
+  <h1 style="text-align: right; margin: 0; margin-right: 15%">
15
+    <strong style="text-transform: uppercase; font-size: medium"
16
+      >INVOICE</strong
17
+    >
18
+  </h1>
19
+
20
+  <table>
21
+    <tr>
22
+      <td style="width: 65%">
23
+        <table>
24
+          <tr>
25
+            <td><strong>Kepada</strong></td>
26
+            <td>:</td>
27
+            <td style="padding: 0">
28
+              <table style="border-spacing: 0">
29
+                <tr>
30
+                  <td>Partner Company</td>
31
+                </tr>
32
+                <tr>
33
+                  <td>Anonym</td>
34
+                </tr>
35
+              </table>
36
+            </td>
37
+          </tr>
38
+          <tr>
39
+            <td><strong>NPWP</strong></td>
40
+            <td>:</td>
41
+            <td style="padding: 0">
42
+              <table style="border-spacing: 0">
43
+                <tr>
44
+                  <td>XXXXXXXXXXXXXXX</td>
45
+                </tr>
46
+              </table>
47
+            </td>
48
+          </tr>
49
+        </table>
50
+      </td>
51
+      <td style="width: 35%">
52
+        <table>
53
+          <tr>
54
+            <td>
55
+              <table>
56
+                <tr>
57
+                  <td>Nama</td>
58
+                  <td>:</td>
59
+                  <td>{{ form.name }}</td>
60
+                </tr>
61
+                <tr>
62
+                  <td>NPWP</td>
63
+                  <td>:</td>
64
+                  <td>{{ form.npwp }}</td>
65
+                </tr>
66
+                <tr>
67
+                  <td>Email</td>
68
+                  <td>:</td>
69
+                  <td>{{ form.email }}</td>
70
+                </tr>
71
+                <tr>
72
+                  <td>No Telepon</td>
73
+                  <td>:</td>
74
+                  <td>{{ form.telephone }}</td>
75
+                </tr>
76
+                <tr>
77
+                  <td>Alamat</td>
78
+                  <td>:</td>
79
+                  <td>{{ form.address }}</td>
80
+                </tr>
81
+                <tr>
82
+                  <td>Tanggal</td>
83
+                  <td>:</td>
84
+                  <td>Anonym</td>
85
+                </tr>
86
+                <tr>
87
+                  <td>Nomor Pembelian</td>
88
+                  <td>:</td>
89
+                  <td>PJN20220720115908</td>
90
+                </tr>
91
+                <tr>
92
+                  <td>Halaman</td>
93
+                  <td>:</td>
94
+                  <td>1</td>
95
+                </tr>
96
+              </table>
97
+            </td>
98
+          </tr>
99
+        </table>
100
+      </td>
101
+    </tr>
102
+  </table>
103
+</template>
104
+
105
+<style scoped>
106
+table {
107
+  font-family: Verdana, Arial, sans-serif;
108
+  font-size: x-small;
109
+  border-collapse: collapse;
110
+  border-spacing: 0;
111
+  width: 100%;
112
+}
113
+
114
+tr {
115
+  vertical-align: super;
116
+}
117
+
118
+tfoot tr td {
119
+  font-weight: bold;
120
+  font-size: x-small;
121
+}
122
+</style>

+ 15
- 18
resources/js/pages/Settings/Components/Ppn.vue Wyświetl plik

@@ -1,35 +1,26 @@
1 1
 <script setup>
2
-import { ref } from 'vue'
2
+import { useState } from '../Composables/useState'
3 3
 import { useForm } from '@/composables/useForm'
4 4
 import AppInputText from '@/components/AppInputText.vue'
5
-import DashboardLayout from '@/layouts/Dashboard/DashboardLayout.vue'
6 5
 
7 6
 const props = defineProps({
8
-  ppn: Number,
7
+  ppn: Object,
9 8
 })
10 9
 
11 10
 const form = useForm({
12
-  ppn: props.ppn,
11
+  ppn: props.ppn.ppn,
13 12
 })
14 13
 
15
-const inputDisable = ref(true)
16
-
17
-const buttonLabel = ref('Ubah')
14
+const { state, setState } = useState()
18 15
 
19 16
 const onSubmit = () => {
20
-  if (inputDisable.value) {
21
-    buttonLabel.value = 'Simpan'
17
+  setState()
22 18
 
23
-    inputDisable.value = false
24
-  } else {
19
+  if (state.disable) {
25 20
     if (!form.ppn) {
26 21
       form.ppn = 0
27 22
     }
28 23
 
29
-    buttonLabel.value = 'Ubah'
30
-
31
-    inputDisable.value = true
32
-
33 24
     form.post(route('ppn.store'))
34 25
   }
35 26
 }
@@ -37,21 +28,27 @@ const onSubmit = () => {
37 28
 
38 29
 <template>
39 30
   <div class="grid">
31
+    <div class="col-12">
32
+      <h1 class="text-lg">Pajak Pertambahan Nilai</h1>
33
+    </div>
34
+
40 35
     <div class="col-12">
41 36
       <AppInputText
42 37
         label="PPN"
43 38
         placeholder="ppn"
44 39
         type="number"
45
-        :disabled="inputDisable"
40
+        :disabled="state.disable"
46 41
         :error="form.errors.ppn"
47 42
         v-model="form.ppn"
48 43
       />
44
+    </div>
49 45
 
46
+    <div class="col-12">
50 47
       <div class="flex flex-column md:flex-row justify-content-end">
51 48
         <Button
52
-          icon="pi pi-check"
53 49
           class="p-button-outlined"
54
-          :label="buttonLabel"
50
+          :icon="state.icon"
51
+          :label="state.label"
55 52
           :disabled="form.processing"
56 53
           @click="onSubmit"
57 54
         />

+ 30
- 0
resources/js/pages/Settings/Composables/useState.js Wyświetl plik

@@ -0,0 +1,30 @@
1
+import { reactive } from 'vue'
2
+
3
+export function useState() {
4
+  const state = reactive({
5
+    disable: true,
6
+    label: 'Ubah',
7
+    icon: 'pi pi-pencil',
8
+  })
9
+
10
+  function setState() {
11
+    if (state.disable) {
12
+      state.label = 'Simpan'
13
+
14
+      state.icon = 'pi pi-check'
15
+
16
+      state.disable = false
17
+    } else {
18
+      state.label = 'Ubah'
19
+
20
+      state.icon = 'pi pi-pencil'
21
+
22
+      state.disable = true
23
+    }
24
+  }
25
+
26
+  return {
27
+    state,
28
+    setState,
29
+  }
30
+}

+ 6
- 5
resources/js/pages/Settings/Index.vue Wyświetl plik

@@ -1,10 +1,11 @@
1 1
 <script setup>
2
-import DashboardLayout from '@/layouts/Dashboard/DashboardLayout.vue'
3
-import Ppn from './Components/Ppn.vue'
4 2
 import CompanyProfile from './Components/CompanyProfile.vue'
3
+import Ppn from './Components/Ppn.vue'
4
+import DashboardLayout from '@/layouts/Dashboard/DashboardLayout.vue'
5 5
 
6 6
 defineProps({
7
-  ppn: Number,
7
+  ppn: Object,
8
+  company: Object,
8 9
 })
9 10
 </script>
10 11
 
@@ -15,9 +16,9 @@ defineProps({
15 16
         <Card>
16 17
           <template #title> Pengaturan </template>
17 18
           <template #content>
18
-            <CompanyProfile />
19
+            <CompanyProfile :company="company" />
19 20
 
20
-            <divider />
21
+            <Divider />
21 22
 
22 23
             <Ppn :ppn="ppn" />
23 24
           </template>

+ 5
- 0
resources/views/pdf/purchases.blade.php Wyświetl plik

@@ -107,6 +107,11 @@
107 107
                                         <td>:</td>
108 108
                                         <td>XXXXXXXXXXXXXXX</td>
109 109
                                     </tr>
110
+                                    <tr>
111
+                                        <td>Email</td>
112
+                                        <td>:</td>
113
+                                        <td>XXXXXXXXXXXX</td>
114
+                                    </tr>
110 115
                                     <tr>
111 116
                                         <td>No HP</td>
112 117
                                         <td>:</td>

+ 5
- 0
resources/views/pdf/sales.blade.php Wyświetl plik

@@ -108,6 +108,11 @@
108 108
                                         <td>:</td>
109 109
                                         <td>XXXXXXXXXXXXXXX</td>
110 110
                                     </tr>
111
+                                    <tr>
112
+                                        <td>Email</td>
113
+                                        <td>:</td>
114
+                                        <td>XXXXXXXXXXXX</td>
115
+                                    </tr>
111 116
                                     <tr>
112 117
                                         <td>No HP</td>
113 118
                                         <td>:</td>

+ 3
- 0
routes/web.php Wyświetl plik

@@ -1,5 +1,6 @@
1 1
 <?php
2 2
 
3
+use App\Http\Controllers\CompanyController;
3 4
 use App\Http\Controllers\CustomerController;
4 5
 use App\Http\Controllers\DashboardController;
5 6
 use App\Http\Controllers\PpnController;
@@ -47,6 +48,8 @@ Route::middleware(["auth", "verified"])->group(function () {
47 48
 
48 49
     Route::resource("/ppn", PpnController::class);
49 50
 
51
+    Route::resource("/companies", CompanyController::class);
52
+
50 53
     Route::resource("/settings", SettingController::class);
51 54
 
52 55
     Route::resource("/customers", CustomerController::class);