Wednesday, 10 December 2025

Sistem Produk Tambah Stok Tanpa Model di CodeIgniter 4 v4.6.3: Sederhana

Manajemen stok adalah salah satu fitur penting dalam aplikasi penjualan, inventori, atau gudang. Pada CodeIgniter 4, kita dapat membangun sistem produk dengan kemampuan untuk menambah stok secara fleksibel, baik melalui form input maupun melalui proses update otomatis. Artikel ini membahas langkah demi langkah membuat fitur tersebut: mulai dari struktur database, controller, hingga tampilan (view).

1. Struktur Database

Pertama, buat tabel products untuk menyimpan data produk dan stoknya.


CREATE TABLE products (
    id_product INT AUTO_INCREMENT PRIMARY KEY,
    kode_product VARCHAR(10)
    nama_product VARCHAR(50) NOT NULL,
    harga_ INT NOT NULL,
    stok INT NOT NULL DEFAULT 0
);


Kolom stok bertipe integer untuk menampung jumlah stok yang tersedia.

2. Membuat Controller Product

Controller akan menangani input pengguna, menampilkan halaman, serta melakukan proses tambah stok.

app/Controllers/Product.php



namespace App\Controllers;

class Product extends BaseController{

  protected $db;

  public function __construct(){
    $this->db = \Config\Database::connect();
  }

  public function index(): string{
    $product = $this->db->table('product')->get()->getResult();
    return view('product/index',['data'=>$product]);
  }

  public function simpan_product(){
    $kode = $this->request->getPost("kode_product");
    $nama = $this->request->getPost("nama_product");
    $harga = $this->request->getPost("harga");
    
    $cekKode = $this->db->table("product")
                        ->select("kode_product")
                        ->where("kode_product",$kode)
                        ->get()
                        ->getRow();
    
    if($cekKode !== null){
      $err = ['error'=>true, 'message'=>'kode product tidak valid !!'];
      return view("product/tambah",$err);
    }

    if($harga < 1 || $harga == ""){
      $err = ['error'=>true, 'message'=>'harga tidak boleh Nol "0" !!'];
      return view("product/tambah",$err);
    }

    //simpan
    $data = [
      "kode_product"=>$kode,
      "nama_product"=>$nama,
      "harga"=>$harga,
      "stok"=>0
    ];
    $this->db->table('product')->insert($data);

    return redirect()->to("product");
  }

  public function stok_tambah($err=null){
    $data['data'] = $this->db->table('product')->get()->getResult();
    if($err !== null){
      $data = array_merge($data,$err);
      return view('product/tambah-stok',$data);
    }
    return view('product/tambah-stok',$data);
  }

  public function stok_simpan(){
    $product = $this->request->getPost('id_product');
    $stok = $this->request->getPost('stok');

    //cek error
    if($product == 'n'){
      $err = ['error'=>true,'message'=>'Silahkan pilih kode product !!'];
      return $this->stok_tambah($err);
    }
    if($stok == '' || $stok < 1){
      $err = ['error'=>true,'message'=>'Inputkan Stok dengan benar !!'];
      return $this->stok_tambah($err);
    }
    
    //berhasil
    $data = [
      'stok'=>$stok
    ];
    $this->db->table('product')->set('stok','stok + '.$stok,false)
                              ->where('id_product',$product)
                              ->update();

    return redirect()->to('/product');
  }

}


Penjelasan:

  • index() : menampilkan data product
  • simpan_product() : menyimpan data product ke database
  • stok_tambah : menampilkan form tambah stok
  • stok_simpan() : mengupdate stok product berdasarkan kode product yang dipilih

3. Membuat View Daftar Produk 

app/Views/product/index.php 

4. Membuat View Form Tambah Stok

app/Views/product/add_stock.php 

Form ini hanya membutuhkan input angka untuk menambah stok produk.

5. Routing 

Tambahkan rute untuk controller product.

app/Config/Routes.php 


//products
$routes->get('/product', 'Product::index');
$routes->get('/product/tambah', function(){
  return view('product/tambah');
});
$routes->post('/product/simpan', 'Product::simpan_product');

//stok
$routes->get('/product/stok/tambah','Product::stok_tambah');
$routes->post('product/stok/simpan','Product::stok_simpan');

6. Membuat View Form tambah Product

app/Views/product/tambah.php 

7. Cara Kerja Sistem

Ketika admin ingin menambah stok:

  • Akses browser dengan endpoint `/product`
  • Klik tambah product, utuk menambahkan data product
  • Klik tambah stok, untuk mengubah stok product
  • Masukan jumlah stok sesuai kode product
  • sistem akan update stok product,stok lama akan ditambahkan dengan stok baru

Kesimpulan

Fitur ini dapat dikembangkan lebih lanjut, misalnya dengan catatan history stok, pengurangan stok otomatis saat transaksi, atau validasi lebih kompleks.

untuk melihat artikel lain, bisa klik Disini

  

No comments:

Post a Comment