Membangun ERP (Intro)

Membangun ERP (Intro)

Dalam mengawali membangun ERP. Kita harus memulai dari banyak baca. Dalam banyak baca, kita akan mengetahui bahwa ERP adalah sistem yang bersifat “PALUGADA”. Apa yang kamu butuhkan, GW ada!! Apakah itu salah? Well tidak selalu. Makin lama kita membaca tentang ERP, makin kita tersadar bahwa ERP adalah SIA atau Sistem Informasi Akuntansi. Yang mana banyak rule Akuntansi berlaku di dalamnya.

Merujuk pada buku SIA. Kita akan belajar bagaimana proses traksaksi terjadi, didalamnya akan ada proses pengendalian internal. Mungkin kita bisa familiar dengan nama verifikasi input? Atau verifikasi alur transaksi! Misal dalam proses masuknya sebuah barang jualan (botol Aqua) dari kapan kita pesan, kapan datang, kapan masuk gudang dan terakhir terjual. Proses inilah gambaran besarnya.

Proses pengendalian ini tidak melibatkan 1 orang saja, tetapi banyak orang, banyak bagian dan yang terpenting!! Banyak aplikasi yang berjalan! ERP kedepannya tidak akan berjalan ‘sendiri’ , kemampuan bekerja dengan sistem diluar juga sangat dibutuhkan! Terutama aplikasi gateway pembayaran. Kedepannya akan tidak mengherankan apabila sistem ini membutuhkan pengembangan yang terus-menerus! Seperti seorang bayi yang beranjak menjadi dewasa

Dokumentasi

Adalah salah satu alasan kenapa sistem ERP tidak boleh berjalan begitu saja. Dokumentasi harus tersedia! Dokumentasi yang baik harusnya tertulis! Bukan tersirat atau di ingat dari yang memakainya. Akan sangat berbahaya apabila dokumen ini tidak tercatat atau tersimpan yang baik. Memakai media seperti media online buat menyimpan adalah teknik terbaik. Hal ini didasari dari kegagalan yang dialami oleh saya.

Tetapi kita harus mengawali dari membuat dokumen di ERP ini sendiri. Disarankan tidak mengetik di ERP tetapi upload dokumen dan melabelnya seperti dokumen pada umumnya! Dan hal ini didasari dari kemudahan user jaman sekarang memakai aplikasi office seperti Word dan Excel. Juga waktu yang sulit apabila membangun sistemnya dibawah Web atau aplikasi baru.

Pada dasarnya tehnik naratif pemakaian sistem sangat dibutuhkan. Tetapi tidak mudah membuat penulisan naratif karena kesulitan kita menjabarkannya. Itu sebabnya ada video yang dapat membantu mengerjakannya. Kenapa tidak? Video lebih informatif.. bila ada yang terlewat bisa dimundurin.. atau di percepat sesuai kebutuhan.

Dokumentasi tidak selalu membahas tentang cara kerja, tapi apa yang sudah dikerjakan oleh user juga harus tercatat. Hal ini bermanfaat untuk bidang/departemen lain yang kita kenal sebagai HRD

Teknologi

ERP harus mampu memanfaatkan teknologi baru. Kata lainnya yang tepat adalah, mampu memanfaatkan teknologi yang membantu dibandingkan yang baru. Dalam perjalanan saya memakai program, teknologi baru terlihat bagus. Tetapi menyulitkan buat programer dan juga pemakai. Menjelaskan cara memakai sistem baru tidak sama seperti menjelaskan bahwa program yang kita buat sudah seperti manual yang sering mereka kerjakan.

Misal metode arsip nomor. Dalam sistem komputerisasi, kita bisa melakukan automatis! Tetapi dalam praktek tidak! Sehingga kita harus mengalah kepada pembuatan no yang manual. Belum lagi masalah lain yang diwajibkan tetapi tidak dikerjakan! Misal memasang no KTP di detail pasien.

HRD

Hampir semua ERP yang saya lihat (open source). Lebih condong ke HRD. Tetapi hal ini tidak dipungkiri, karena inti dari ERP adalah manusia yang memakai sistem baik yang mengolah hingga yang menerima tampilan. Juga pencatatan buat mereka untuk melakukan proses  seperti

  • Permintaan cuti
  • Proses cuti
  • Laporan pelanggaran
  • Dan lain-lain

HRD sendiri adalah bagian dari ERP secara ngak langsung. Walau proses kerjanya kita harus lihat bagaimana akuntan bekerja!! Karena nantinya untuk memperbaiki kita butuh segala daya dan kemampuan dari ERP kita untuk menjadi bahan analisa!

Multi-program

Seperti penjelasan di atas, kita harus berfikir bahwa ERP tidak bisa kerja sendiri. Sudah ada aplikasi yang berjalan, sudah ada SOP yang telah dibuat! Kita tak bisa meletakkan ERP lalu berharap ERP menjadi solusi untuksemua dalam waktu singkat! Kesulitan yang harus dihadapi dalam multi-program adalah transfer dan baca data. Bisa saja aplikasi lain memakai database berbeda, rule berbeda! Dan yang terpenting!! Alur bisnis yang berbeda!

Dalam pengerjaan ERP, saya memanfaatkan API untuk datanya. Jadi aplikasi saya tidak membaca database langsung.. tetapi saya minta API melakukannya. Konsekuensinya, kita malah harus meminta 3rd party melakukan .. sementara kita kebingungan karena kembaliannya jadi ada perbedaan dengan harapan kita sebagai pengguna ERP

Flow Kerja

Untuk flow kerja ERP, saya membuat rancangan 4 hal dan akan bertambah sejalan tutorial berjalan

  1. Membangun table yang mendukung seperti
    1. Departemen yang berfungsi sebagai kategori
    2. Menu yang akan membuka akse menu apa saja yang dibuka/baca
    3. User
    4. Relasi user dan departemen
    5. Relasi user dan menu
    6. Akses atau role
    7. Akses apa saja yang dapat dilakukan
  2. Membangun ERP yang melakukan log aktivitas. Dari sisi FW biasa sudah menyediakan
  3. Membuat konsep pengkodean yang baik. Disini kita harus memahami kode yang baik adalah kode yang bisa enak terbaca
  4. Membuat input data dummy
  5. Melakukan relasi antar table no 1. Bisa dilewati karena tidak mudah
  6. Melakukan proses list table dengan memanfaatkan datatable
  7. Membuat proses penambahan data.
  8. Membuat proses penambahan data baru akan langsung memiliki sub
  9. Editing data
  10. Hapus data

Table

Untuk struktur table, saya mengharuskan memberikan hal berikut

  • Id walau sebagai counter saja, pastikan ada
  • Created atau tanggal dibuat
  • Modified atau tanggal berubah
  • Deleted berupa date time bukan status. Ini merujuk pada permintaan teman di Laravel
  • Index key pada field yang memiliki relasi!
  • Unik kode bila dibutuhkan. Atau bisa disesuaikan

Dalam proses pengejaan, kita pasti akan menghadapi pencarian.Tips penting seputar database nantinya

  • Pencarian text memakai like
  • Date time ditanggap sama seperti text jadi harus memakai like
  • Agar valid,pencarian memakai kata kapital semua jangan kecil semua
  • Penamaan yang mudah terbaca oleh anda dan juga orang lain yang akan membantu
  • Bila deleted tidak null berarti dia telah terhapus

Sekian.Mari lanjut bikin table-table di atas.

 

Advertisements
Mempelajari DBMS (Dasar)

Tidak bisa di pungkiri, database adalah bagian dari kehidupan. Dari kita bangun sampai tidur, kita hidup dalam database . pertanyaannya adalah dimana kita menyimpan. Juga bagaimana memanajemennya.

Secara singkat, saya hanya menunjuk pada kebutuhan kita sebagai programer akan adanya database, walaupun itu terlihat tidak perlu bila codingnya sederhana. Tetapi akhirnya kedepannya juga perlu.

Tulisan ini untuk para programer pemula dan menengah. Agar dapat menjadi acuan dalam membuat database

 

MEMPELAJARI DATABASE

Dalam mempelajari Database, kita harus mengenal DBMSnya dalam hal ini nama muncul seperti

  • Mysql
  • Postgree
  • Oracle
  • Excel dan lain-lain

Masing-masing memiliki kemudahan dan kekurangan. Kemudahan, kekurangan, tantangan dan hambatan inilah yang harus dipelajari untuk memahami Database. Setelah memahami, kita dapat menentukan bagaimana pola belajar database tersebut.

 

Dalam tulisan ini, saya lebih menyorot ke MYSQL. Ada sedikit bahas postgree tetapi tidak banyak.

Continue reading “Mempelajari DBMS (Dasar)”

CodeIgniter: Penulisan Multi Koneksi

Multi koneksi adalah koneksi lebih dari satu yang dapat berjalan di Framework CodeIgniter. Penulisannya sama seperti penulisan ‘default’ namun memakai nama berbeda

$db['test'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'compress' => FALSE,
        'encrypt' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);

atau

$db['test'] = $db['test'];
$db['test']['hostname'] = 'localhost';
$db['test']['username'] = 'username';
$db['test']['database'] = 'db name';
$db['test']['password'] = 'password';

Penggunaan Multi Koneksi ini dapat dimanfaatkan apabila CI memiliki lebih dari 1 database yang akan digunakan. Atau memiliki 2 logika koneksi yang berbeda-beda. Dimana logika pertama memiliki prefix dan lainnya tidak memakai prefix

Koneksi Utama

koneksi utama yang digunakan adalah default. Apabila ingin menggantikan dengan lain seperti “test” dapat menggunakan
$active_group = 'test';

Dalam program yang baik, disarankan memakai prefix dalam configurasinya. Tetapi sejalan dengan proses yang sering terjadi bentrok penamaan table. Disarankan memiliki 2 tipe koneksi database yaitu tanpa prefix dan dengan prefix. Hal ini dikarenakan adanya problem dalam penulisan nama saat menjalankan join.

CodeIgniter: Penulisan Koneksi Gagal

Apabila terjadi masalah koneksi pada koneksi utama (default). Parameter Failover dapat digunakan . Setting untuk menjalankan seperti penulisan berikut

$db['default']['failover'] = array(
                array(
                        'hostname' => 'localhost1',
                        'username' => '',
                        'password' => '',
                        'database' => '',
                        'dbdriver' => 'mysqli',
                        'dbprefix' => '',
                        'pconnect' => TRUE,
                        'db_debug' => TRUE,
                        'cache_on' => FALSE,
                        'cachedir' => '',
                        'char_set' => 'utf8',
                        'dbcollat' => 'utf8_general_ci',
                        'swap_pre' => '',
                        'encrypt' => FALSE,
                        'compress' => FALSE,
                        'stricton' => FALSE
                ),
                array(
                        'hostname' => 'localhost2',
                        'username' => '',
                        'password' => '',
                        'database' => '',
                        'dbdriver' => 'mysqli',
                        'dbprefix' => '',
                        'pconnect' => TRUE,
                        'db_debug' => TRUE,
                        'cache_on' => FALSE,
                        'cachedir' => '',
                        'char_set' => 'utf8',
                        'dbcollat' => 'utf8_general_ci',
                        'swap_pre' => '',
                        'encrypt' => FALSE,
                        'compress' => FALSE,
                        'stricton' => FALSE
                )
        );
penulisan koneksi dapat digunakan untuk konfigurasi lainnya.

CodeIgniter: Penulisan Dsn

Untuk Beberapa penulisan koneksi tertentu ( PDO, PostgreSQL, Oracle, ODBC), dimana diperlukan DSN. Maka penulisan DSN adalah sebagai berikut

  1. ODBC
    odbc:testdb
    odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=localhost;PORT=50000;DATABASE=SAMPLE;PROTOCOL=TCPIP;UID=db2inst1;PWD=ibmdb2;
    odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\db.mdb;Uid=Admin
  2. PostgreSQL
    pgsql:host=localhost;port=5432;dbname=database_name
  3. Mysqli
    mysql:dbname=testdb;host=127.0.0.1

    mysql:host=localhost;dbname=testdb


    mysql:host=localhost;port=3307;dbname=testdb


    mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

    Pada PHP 5.3.6, charset tidak akan digunakan
  4. CUBRID
    cubrid:dbname=demodb;host=localhost;port=33000
  5. FIREBIRD
    firebird:dbname=/path/to/DATABASE.FDB

    firebird:dbname=hostname/port:/path/to/DATABASE.FDB
    firebird:dbname=localhost:/var/lib/firebird/2.5/data/employee.fdb
  6. MSSQL.
    mssql:host=localhost;dbname=testdb
    sybase:host=localhost;dbname=testdb
    dblib:host=localhost;dbname=testdb

    memanfaatkan ODBC sangat disarankan
  7. IBM DB2

    ibm:DSN=DB2_9


    DRIVER={IBM DB2 ODBC DRIVER};DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;


    ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb; HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;
  8. Informix

    informix:DSN=Infdrv33


    informix:host=host.domain.com; service=9800;
    database=common_db; server=ids_server; protocol=onsoctcp;
    EnableScrollableCursors=1
  9. Oracle
    oci:dbname=mydb
    oci:dbname=//localhost:1521/mydb
  10. SQLite

    sqlite:/opt/databases/mydb.sq3

    sqlite::memory:

    sqlite2:/opt/databases/mydb.sq2

    sqlite2::memory:

Apabila parameter yang digunakan kurang, CodeIgniter akan melengkapi dalam menjalankan perintah PDO.

Silakan memeriksa pada dokumentasi PHP untuk memastikan formatnya

Sumber: Dokumentasi PHP

CodeIgniter: penulisan config database

Konfigurasi database yang dapat digunakan untuk Codeigniter. Semua konfigurasi ini dapat ditulis di config/database.php

Konfigurasi ditulis dalam bentuk array

$db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'database_name',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);

Untuk Beberapa penulisan koneksi tertentu ( PDO, PostgreSQL, Oracle, ODBC), dimana diperlukan DSN. Maka penulisan DSNnya dapat dimasukkan kedalam parameter DSN seperti contoh berikut

// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';

// Oracle
$db['default']['dsn'] = '//localhost/XE';

sehingga konfigurasinya

$db['default'] = array(
        'dsn'   => = 'pgsql:host=localhost;port=5432;dbname=database_name',
        'hostname' => '',
        'username' => '',
        'password' => '',
        'database' => '',
        'dbdriver' => '',
        'dbprefix' => '',
        'pconnect' => TRUE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array()
);
mengisi kemungkinan akan membuat parameter lainnya tidak dibaca

Query Builder

Secara default, Query builder dalam keadaan TRUE. Namun apabila tidak menginginkan penggunaan Query Builder dalam projek, dapat dimatikan dengan memasukkan parameter FALSE

$query_builder = TRUE;

CodeIgniter: Penamaan Field dan Table

Tidak ada Penulisan baku untuk penamaan table maupun field. Terutama untuk menentukan tipe field dari field. Dalam memberikan nama table atau field, disarankan

  • Jelas
  • memakai Format yang sama. contoh: penulisan field pertama nama_lengkap. penulisan field kedua malah tanggallahir
  • memakai bahas yang sama. Apabila kesulitan, memadukan disarankan
  • pendek atau disingkat
  • memakai prefix. bersifat Optional

Prefix

Tujuan memakai Prefix adalah untuk membedakan table-table bernama sama. Apabila dalam 1 database terdapat 2-lebih projek. Biasanya ini berkaitan dengan projek ERP yang meletakkan database pada tempat yang sama (DBMS dan tidak pada database berbeda).

Dengan memakai prefix, dapat diketahui sumber aplikasi/projek yang menggunakan. Ada banyak alasan yang lain, tetapi utamakan pada penggunaan yang dapat mudah terbaca para programer yang menggunakan.