Lewati ke konten utama
  1. Artikel-artikel/
  2. Framework Php/

Sistem Approval Data Multiple Modals

·1025 kata·5 menit· loading · loading · ·
Humaedi
Penulis
Humaedi
Halo, nama saya Humaedi 👋. Saya seorang Pengajar/Mentor & { Full-Stack Developer } Bekerjalah seakan hidup abadi, beribadah seakan mau mati, jangan lupa ☕️ untuk mendapat inspirasi.

Mengenal Sistem Approval: Solusi Mengelola Proses Persetujuan Data di Aplikasi Laravel
#

Pendahuluan
#

Di dunia bisnis, proses persetujuan (approval process) merupakan bagian integral dalam banyak alur kerja. Baik itu untuk pengajuan pengeluaran, persetujuan gaji, atau bahkan permintaan cuti, setiap proses persetujuan memerlukan kontrol yang ketat dan pengelolaan yang efisien. Inilah alasan mengapa sistem approval yang terstruktur dengan baik sangat diperlukan.

Bagi pengembang aplikasi web, khususnya yang menggunakan Laravel, sistem approval yang fleksibel dan mudah diimplementasikan bisa meningkatkan produktivitas dan efisiensi dalam tim. Artikel ini akan memperkenalkan solusi sistem approval yang dibangun dengan Laravel, dengan memanfaatkan fitur-fitur modern seperti morphing relationships, role-based access control, dan automated approval steps.

Apa Itu Sistem Approval?
#

Sistem approval adalah serangkaian langkah yang diperlukan untuk memvalidasi dan menyetujui atau menolak suatu proses atau permintaan. Biasanya, sistem ini melibatkan beberapa pihak dengan peran berbeda (seperti HR, Finance, dan Manajer) yang harus menyetujui atau menolak permintaan berdasarkan kebijakan tertentu.

Di Laravel, sistem approval dapat diintegrasikan ke dalam berbagai model, seperti pengajuan payroll, pengeluaran, atau permintaan izin. Sistem ini memastikan bahwa setiap langkah persetujuan dilakukan sesuai dengan aturan yang telah ditentukan sebelumnya dan memberikan transparansi mengenai status permintaan.

Mengapa Sistem Approval Penting?
#

  1. Efisiensi Operasional: Proses persetujuan yang terstruktur mengurangi kemungkinan kesalahan manusia dan meningkatkan kecepatan pengambilan keputusan.
  2. Kontrol yang Lebih Baik: Dengan memiliki beberapa tingkat persetujuan, perusahaan dapat memastikan bahwa setiap keputusan sesuai dengan kebijakan yang berlaku.
  3. Audit Trail: Setiap langkah dalam proses persetujuan tercatat dengan jelas, yang berguna untuk keperluan audit atau laporan.

Fitur Utama dalam Sistem Approval Laravel
#

1. Struktur Database yang Efisien
#

Dalam sistem approval ini, terdapat dua tabel utama:

  • approvals: Menyimpan informasi mengenai permintaan approval, siapa yang mengajukan, dan status approval (apakah sedang diproses, disetujui, atau ditolak).
  • approval_steps: Menyimpan langkah-langkah yang harus dilalui oleh proses approval, termasuk siapa yang bertanggung jawab untuk menyetujui langkah tersebut dan status langkah tersebut.

Dengan menggunakan morphs pada relasi, model approval dapat dengan mudah dikaitkan dengan model lain (misalnya Payroll, Pengeluaran, dll.), membuat sistem ini sangat fleksibel dan dapat digunakan di berbagai jenis alur kerja persetujuan.

2. Role-based Approval
#

| *required spatie/laravel-permission Setiap langkah dalam proses persetujuan dapat memiliki role yang berbeda untuk tiap approver. Misalnya:

  • HRD dapat menyetujui pengajuan gaji.
  • Finance dapat menyetujui pengeluaran.
  • Super Admin memberikan persetujuan final.

Hal ini memungkinkan sistem untuk menangani berbagai jenis persetujuan dalam satu alur kerja yang sama, memberikan kontrol lebih pada siapa yang berhak menyetujui apa dan kapan.

3. Status Dinamis dan Monitoring
#

Setiap langkah dalam proses approval memiliki status yang dinamis. Langkah bisa berada dalam status pending, active, approved, rejected, atau skipped. Sistem ini secara otomatis memperbarui status langkah sesuai dengan keputusan yang diambil oleh approver.

Dengan sistem ini, pengguna dapat dengan mudah memonitor status permintaan dan langkah-langkah yang sudah selesai atau yang masih pending.

4. Otomatisasi Proses Persetujuan
#

Dengan menggunakan ApprovalService yang sudah dibangun, proses persetujuan menjadi sangat otomatis. Begitu satu langkah disetujui, sistem ini secara otomatis akan menandai langkah berikutnya sebagai “active”, dan begitu semua langkah disetujui, status approval akan diperbarui menjadi “approved”. Jika ada langkah yang ditolak, status approval akan langsung diperbarui menjadi “rejected”, dan langkah-langkah berikutnya akan dilewati (statusnya diset ke skipped).

5. Flexibilitas dalam Konfigurasi
#

Pengaturan langkah-langkah persetujuan dapat dengan mudah dikonfigurasi di file config/approvals.php. Sebagai contoh, jika Anda ingin menambahkan langkah persetujuan baru atau mengubah role yang diperlukan di tiap langkah, Anda cukup mengubah konfigurasi di sini tanpa harus mengubah kode aplikasi.

Contoh Konfigurasi:

return [
    'rules' => [
        /**
         * Nama model yang di gunakan disini misalnya Payroll
         * didalam nya ada pembacaan role, dan ini required harus menggunakan spatie/laravel-permission
         */
        'Payroll' => [
            ['role' => 'hrd'],
            ['role' => 'finance'],
            ['role' => 'super-admin'],
        ],
    ],
];

Dengan konfigurasi ini, Anda bisa menyesuaikan alur persetujuan sesuai dengan kebutuhan bisnis Anda.


Bagaimana Cara Menggunakannya?
#

Sistem approval ini dapat digunakan di berbagai model yang memerlukan proses persetujuan, seperti Payroll, Pengeluaran, dan sebagainya. Berikut adalah langkah-langkah untuk menggunakan sistem approval ini di Laravel:

1. Menambahkan Trait HasApproval pada Model
#

Model yang ingin di-approve harus menggunakan trait HasApproval. Trait ini menyediakan method untuk memulai proses approval dan mengelola langkah-langkah approval.

Contoh Penggunaan di Model Payroll:

namespace App\Models;

use App\Traits\HasApproval;
use Illuminate\Database\Eloquent\Model;

class Payroll extends Model
{
    use HasApproval;

    protected string $statusColumn = 'status';
    // Atribut dan relasi lainnya
}

2. Menginisiasi Proses Approval
#

Untuk memulai proses approval, cukup panggil method initiateApproval() pada model yang ingin di-approve.

Contoh di Controller:

public function store(Request $request)
{
    ...
    
    $payroll = Payroll::create($request->all());
    $payroll->initiateApproval(Auth::user());
    
    ...
}

3. Menangani Persetujuan dan Penolakan
#

Di controller, Anda bisa membuat aksi untuk menyetujui atau menolak langkah-langkah dalam proses approval menggunakan ApprovalService.

Contoh Controller untuk Approve atau Reject:

public function approve(string $id)
{
    $payroll = Payroll::findOrFail($id);
    $approval = $payroll->approval;
    $step = $approval->steps()->active()->first();

    $service = new ApprovalService();
    $service->approveStep($step);

    return redirect()->route('payroll.index')->with('success', "Payroll #$payroll->code approved.");
}

public function reject(string $id)
{
    $payroll = Payroll::findOrFail($id);
    $approval = $payroll->approval;
    $step = $approval->steps()->active()->first();

    $service = new ApprovalService();
    $service->rejectStep($step, 'Rejected due to insufficient data');

    return redirect()->route('payroll.index')->with('error', "Payroll #$payroll->code rejected.");
}

Keuntungan Menggunakan Sistem Approval ini
#

1. Efisiensi dalam Pengelolaan Persetujuan
#

Proses persetujuan yang otomatis membuat workflow lebih efisien, mengurangi kemungkinan kesalahan manual, dan memastikan bahwa setiap langkah diselesaikan dengan urutan yang benar.

2. Kontrol yang Lebih Baik
#

Dengan role yang jelas pada setiap langkah, Anda dapat memastikan bahwa hanya pihak yang berwenang yang dapat menyetujui atau menolak permintaan. Ini memberikan kontrol yang lebih baik atas keputusan yang diambil.

3. Audit Trail yang Jelas
#

Sistem ini juga menyimpan catatan lengkap tentang siapa yang telah menyetujui atau menolak setiap langkah persetujuan, lengkap dengan waktu dan catatan. Ini sangat membantu untuk kebutuhan audit atau untuk mengevaluasi performa tim.


Kesimpulan
#

Sistem approval ini adalah solusi cerdas dan fleksibel untuk mengelola proses persetujuan di aplikasi Laravel. Dengan fitur-fitur seperti konfigurasi dinamis, pengelolaan role-based access, dan otomatisasi proses persetujuan, sistem ini dapat mengoptimalkan alur kerja Anda, meningkatkan efisiensi, dan memberikan kontrol yang lebih baik atas setiap langkah dalam proses persetujuan.

Dengan mengintegrasikan sistem approval ini dalam aplikasi Laravel Anda, Anda akan dapat meningkatkan produktivitas tim, memastikan transparansi dalam setiap keputusan, dan mengurangi kemungkinan terjadinya kesalahan dalam proses persetujuan.

Ayo coba sistem approval ini dan rasakan manfaatnya di aplikasi Anda!

Terkait

Panduan Lengkap: Mendeteksi dan Mengatasi N+1 Query
·728 kata·4 menit· loading · loading
📌 Apa Itu N+1 Query?
HTML, CSS dan Javascript Dasar: Cara Membuat Website Pertamamu
·454 kata·3 menit· loading · loading
HTML Js CSS
Bangun website pertamamu dengan mudah!
Fontawesome Pro V6.7.0
·513 kata·3 menit· loading · loading
Fontawesome-Pro CSS Js Fontawesome-Pro-V6.7.0
Halo para seniman yang budiman!