SETTING SERVER
--------------
0. sangat penting untuk merubah sql_mode = '' di `/etc/mysql/mysql.conf.d/mysqld.cnf` agar group by bisa jalan dan tidak error masalah non Agregated
    - jangan lupa restart mysql jika sudah ganti `service mysql restart`
1. jika server menggunakan php7 maka tambahkan 'apt install php7.0-gmp' agar tidak bermasalah dg hashid
2. rubah params io di file config/params menjadi ip server, file tersebut ada di 3 file
    - config/params.php
    - api/web/v1/config/params.php
    - js/mainku.js
    + jangan lupa buka port 3000 menggunakan ufw allow 3000 diserver
4. install nodejs dan jalankan server.js di root
5. install aplikasi nodejs agar bisa jalan sebagai service https://hackernoon.com/making-node-js-service-always-alive-on-ubuntu-server-e20c9c0808e4
    5.a setelah ikuti tutorial copy file ini ke /etc/systemd/system/posvm.service
        ```
            [Unit]
            Description=Node.js untuk posvm

            [Service]
            PIDFile=/tmp/posvm_nodejs.pid
            User=root
            Group=root
            Restart=always
            KillSignal=SIGQUIT
            WorkingDirectory=/var/www/html/
            ExecStart=/usr/bin/node /var/www/html/server.js
            [Install]
            WantedBy=multi-user.target
        ```

        After all this setup kind of things now you got very easy way to manage your service

        sudo systemctl start posvm.service
        sudo systemctl stop posvm.service
        sudo systemctl restart posvm.service

SETTING URL
-----------
1. Ikuti setting domain di digitalocean
2. root folder var/www
3. api folder var/www/api/web


USER LEVEL
----------
user level di simpan di table user field jabatan
1. super admin => SUPER
2. client -> ADMIN
3. tenan parrent -> ADMIN (jika tenant tidak punya cabang langsung munculkan storenya)
    a. kasir -> KASIR (bisa tambah menu juga)
    b. dapur -> DAPUR

CRONTAB YG HARUS JALAN
----------
1. jalankan crontab untuk reset allowance setiap awal bulan
2. 

Setup DOCKER
----------
1. didalam docker-compose sudah ada config nya.. gak perlu diganti
2. pastikan di folder backend dan api ada dockerfile
3. jalankan docker dengan command docker compose up -d // utk membuat container baru dg nama backend dan api sesuai compose.yml
4. SELANJUTNYA KONEKSIKAN DB YG ADA DI CONTAINER LUAR
5. cari network mysql db di container dg cara 'docker network ls'
6. jika ingin melihat detailnya gunakan 'docker network inspect {nama_network}'
7. jika sudah di temukan nama network yg sesuai dg db mysql lalu sambungkan contain backend dan api dg cara 'docker network connect {nama-network} {nama-container-backend_atau_api}'
8. setelah berhasi coba gunakan inspect seperti no 6. pastikan container backend & api & mysql sudah jadi satu dalam satu network
9. tulis nama container mysql di host pada pengaturan koneksi db `common/config/main-local.php`
10. harusnya project sudah bisa berjalan di browser.
11. utk migration menggunakan console dilakukan di terminal docker. karna kalau diluar belum berhasil

CONFIG PARAMS
----------
1. buat variable dg nama `project` di common/config/param-local.php untuk membedakan aplikasi ini jalan buat project siapa
2. rename semua gambar dg format suffix sesuai nama project 
    misal: 
        project = dapurjum
        maka nama file yg terkati menjadi favicon-dapurjum.png dsb
3. semua file view mengaksess file yg sama kecuali yg ada suffix project nya.

AGAR TIDAK TERJADI ERROR
1. setiap server baru harus di set mysql nya untuk menghilangkan agregate, sperti error disamping `SELECT list is not in GROUP BY clause and contains nonaggregated column 'ikiwae.stok.used_at' which is not functionally dependent on columns in GROUP BY clause;`
    - cara settingnya biar gak error sperti diatas
        jalankan sql ini `SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))`

DETAIL WORKFLOW
1. type Barang ada 3 :
    a. Raw Material : bahan dasar
    b. WIP : olahan bahan dasar menjadi masakan setengah jadi. yg akan di gunakan finish good (contoh kuah, sambal)
    c. Finish Good : olahan siap jual. mempunyai stock dan di link/relasikan ke menu. contoh secara urutan
        - Menu Ayam Crispy Pop <- FG Ayam Crispy Pedas <- RM ayam potong, WIP Sambal (RM Tomat, Cabe, dll)
2. Semua barang 3 tipe diatas disimpan di table barang, yg membedakan adalah type nya
3. Semua barang 3 tipe diatas linknya di simpan kolom j_recipe. kalau MENU ke FG link nya selain di j_recipe juga disimpan di linked_fg
            