TUTORIAL

PHP

Tutorial Membuat Web Services Pada Aplikasi Sistem Informasi Pengelolaan Keungan Daerah (SIPKD) Menggunakan PHP Native

10-08-2020 12:49:33 BY Alfikri Read 618x 32 min read

Halo Klinik Coders...

Ditutorial ini kita akan mempelajari bagaimana cara membuat Web Services  pada Aplikasi Sistem Informasi Pengelolaan Keungan Daerah (SIPKD) Menggunakan PHP Native.

Tahap#1 - Pendahuluan

Sistem Informasi Pengelolaan Keuangan Daerah (SIPKD) adalah aplikasi terpadu yang dipergunakan sebagai alat bantu pemerintah daerah yang digunakan meningkatkan efektifitas implementasi dari berbagai regulasi bidang pengelolaan keungan daerah yang berdasarkan pada asas efisiensi, ekonomis, efektif, transparan, akuntabel dan auditabel (Sumber : Wikipedia).

Teknologi yang digunakan SIPKD adalah :

  1. Aplikasi berbasis web
  2. Windows Server 2008 atau lebih baru
  3. Database Microsoft SQL Server 2008
  4. Internet Explorer 7 atau lebih baru

Web services adalah mekanisme komunikasi dua aplikasi/mesin terlepas dari arsitektur dan teknologi yang digaribawahi. Layanan web memiliki antarmuka, yang menyembunyikan detail implementasi sehingga dapat digunakan secara terpisah dari platform perangkat keras atau perangkat lunak yang digunakannya, dan secara terpisah dari bahasa pemrograman yang digunakan (Sumber : Binus).

Tahap#2 - Struktur File

Ditahap ini kita akan membuat 9 buah file yang terdiri dari :

  1. db.php
    Berfungsi untuk menghubungkan kedatabase yang ada pada server SIPKD
  2. index.php
    Berfungsi untuk navigasi menu
  3. urusan.php
    Berfungsi untuk mengambil data urusan
  4. opd.php
    Berfungsi untuk mengambil data OPD
  5. program.php
    Berfungsi untuk mengambil data program APBD
  6. kegiatan.php
    Berfungsi untuk mengambil data kegiatan APBD
  7. apbd.php
    Berfungsi untuk mengambil data seluruh program kegiatan OPD (Belanja Langsung)
  8. angkas.php
    Berfungsi untuk mengambil data aliran kas masing-masing kegiatan
  9. spj.php
    Berfungsi untuk mengambil data realisasi keuangan masing-masing kegiatan

Tahap#3 - Membuat file db.php

Ditahap ini kita akan membuat file "db.php" yang berfungsi untuk menghubungkan ke database SIPKD

<?php

class db
{
    private $conn;
    private $user = "usadi"; // User default
    private $pwd = "valid49"; // Password Default

    public function __construct($database)
    {
        // Sesuaikan IP teman-teman
        try {
            $this->conn = new PDO("sqlsrv:server=192.168.0.86 ; Database=$database"$this->user$this->pwd);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (Exception $e) {
            die(print_r($e->getMessage()));
        }
    }

    // Fungsi untuk eksekusi Query SQL
    public function get($sql, $param)
    {
        try {
            $qr = $this->conn->prepare($sql);
            if ($qr->execute($param)) {
                $result = $qr->fetchAll(PDO::FETCH_ASSOC);
                return $result;
            } else {
                return null;
            }
        } catch (Exception $e) {
            echo $e->getMessage();
            return null;
        }
    }
}


Tahap#4 - Membuat file index.php

Ditahap ini kita akan membuat file "index.php" yang berfungsi untuk navigasi menu.

<?php
require('db.php'); // Memanggil database
$dbname = "";  // Nama database per tahun
$request = ""// Pemilihan penarikan data
$key = "CKFUP-DXRY-FKMH";

if (isset($_GET['key']) && !empty($_GET['key'])) {
    if ($key != $_GET['key']) {
        die('[]');
    }
else {
    die('[]');
}

if (isset($_GET['tahun']) && !empty($_GET['tahun'])) {
    if ((int)$_GET['tahun'] < 2015)
        $dbname = "V@LID49V4_" . $_GET['tahun'];
    else
        $dbname = 'V@LID49V6_' . $_GET['tahun'];
else {
    die("[]");
}

$db = new db($dbname);

if (isset($_GET['req']) && !empty($_GET['req'])) {
    $request = $_GET['req'];
else {
    die("[]");
}

switch ($request) {
    case 'urusan':
        include('urusan.php');
        break;
    case 'program':
        include('program.php');
        break;
    case 'kegiatan':
        include('kegiatan.php');
        break;
    case 'apbd':
        include('apbd.php');
        break;
    case 'angkas':
        include('angkas.php');
        break;
    case 'spj':
        include('spj.php');
        break;
    case 'opd':
        include('opd.php');
        break;
}


Tahap#5 - Membuat file urusan.php

Ditahap ini kita akan membuat file "urusan.php" yang berfungsi untuk mengambil data urusan.

<?php
$sql = "SELECT 
          UNITKEY,
          KDUNIT KODE,
          NMUNIT URAIAN 
        FROM 
          DAFTUNIT 
        WHERE 
          TYPE='H' and KDLEVEL = ?";

$result = $db->get($sql, ['2']);

echo json_encode($result);


Tahap#6 - Membuat file opd.php

Ditahap ini kita akan membuat file "opd.php" yang berfungsi untuk mengambil data OPD.

<?php
$sql  = "SELECT 
            KDUNIT KODE,
            NMUNIT OPD 
         FROM 
            DAFTUNIT 
         WHERE 
            TYPE = ?
         ORDER BY KDUNIT";

$result = $db->get($sql, ['D']);

echo json_encode($result);


Tahap#7 - Membuat file program.php

Ditahap ini kita akan membuat file "program.php" yang berfungsi untuk mengambil data program APBD

<?php
$sql = "SELECT 
          idprgrm,
          ISNULL(b.kdunit,'0.00.00.') KODEURUS,
          a.NUPRGRM KODEPROGRAM,
          a.NMPRGRM NAMAPROGRAM 
        FROM 
          MPGRM a 
          LEFT JOIN DAFTUNIT b ON a.UNITKEY = b.UNITKEY 
        WHERE 
          1 = ?";

$result = $db->get($sql, [1]);

echo json_encode($result);


Tahap#8 - Membuat file kegiatan.php

Ditahap ini kita akan membuat file "kegiatan.php" yang berfungsi untuk mengambil data kegiatan APBD

<?php
$sql =  "SELECT
            b.idprgrm,
            a.kdkegunit,
            ISNULL( d.kdunit, '0.00.00.' ) KODEURUS,
            b.NUPRGRM KODEPROGRAM,
            a.NUKEG KODEKEGIATAN,
            a.NMKEGUNIT URAIAN 
         FROM
            MKEGIATAN a
            INNER JOIN MPGRM b ON a.IDPRGRM = b.IDPRGRM
            LEFT JOIN DAFTUNIT d ON b.UNITKEY = d.UNITKEY 
         WHERE
            1 =?";

$result = $db->get($sql, [1]);

echo json_encode($result);


Tahap#9 - Membuat file apbd.php

Ditahap ini kita akan membuat file "apbd.php" yang berfungsi untuk mengambil data seluruh program kegiatan OPD (Belanja Langsung)

<?php

$sql = "SELECT
            e.KDUNIT KODEOPD,
            ISNULL( d.kdunit, '0.00.00.' ) KODEURUS,
            c.IDPRGRM,
            b.KDKEGUNIT,
            c.NUPRGRM KODEPROGRAM,
            b.NUKEG KODEKEGIATAN,
            b.NMKEGUNIT URAIKEG,
            a.BP,
            a.BJ,
            a.BM,
            f.TOLOKUR Ouput,
            f.TARGET TargetKegiatan,
            g.PAGU 
            FROM
            (
            SELECT
                UNITKEY,
                KDKEGUNIT,
                SUM( BP ) BP,
                SUM( BJ ) BJ,
                SUM( BM ) BM,
                TGLVALID TGLDPA 
            FROM
                (
                SELECT
                    a.UNITKEY,
                    KDKEGUNIT,
                    SUM( SUBTOTAL ) BP,
                    0 BJ,
                    0 BM,
                    a.TGLVALID 
                FROM
                    SKDASK a
                    INNER JOIN DASKDETR b ON a.UNITKEY = b.UNITKEY 
                    AND a.IDXDASK = b.IDXDASK
                    INNER JOIN MATANGR c ON b.MTGKEY = c.MTGKEY 
                WHERE
                    b.TYPE = 'D' 
                    AND a.KDTAHAP = ? 
                    AND a.TGLVALID IS NOT NULL 
                    AND LEFT ( kdper, 6 )= '5.2.1.' 
                GROUP BY
                    a.UNITKEY,
                    KDKEGUNIT,
                    TGLVALID UNION ALL
                SELECT
                    a.UNITKEY,
                    KDKEGUNIT,
                    0,
                    SUM( subtotal ),
                    0,
                    TGLVALID 
                FROM
                    SKDASK a
                    INNER JOIN DASKDETR b ON a.UNITKEY = b.UNITKEY 
                    AND a.IDXDASK = b.IDXDASK
                    INNER JOIN MATANGR c ON b.MTGKEY = c.MTGKEY 
                WHERE
                    b.TYPE = 'D' 
                    AND a.KDTAHAP = ? 
                    AND a.TGLVALID IS NOT NULL 
                    AND LEFT ( kdper, 6 )= '5.2.2.' 
                GROUP BY
                    a.UNITKEY,
                    KDKEGUNIT,
                    TGLVALID UNION ALL
                SELECT
                    a.UNITKEY,
                    KDKEGUNIT,
                    0,
                    0,
                    SUM( subtotal ),
                    TGLVALID 
                FROM
                    SKDASK a
                    INNER JOIN DASKDETR b ON a.UNITKEY = b.UNITKEY 
                    AND a.IDXDASK = b.IDXDASK
                    INNER JOIN MATANGR c ON b.MTGKEY = c.MTGKEY 
                WHERE
                    b.TYPE = 'D' 
                    AND a.KDTAHAP = ? 
                    AND a.TGLVALID IS NOT NULL 
                    AND LEFT ( kdper, 6 )= '5.2.3.' 
                GROUP BY
                    a.UNITKEY,
                    KDKEGUNIT,
                    TGLVALID 
                ) c 
            GROUP BY
                UNITKEY,
                KDKEGUNIT,
                TGLVALID 
            ) a
            INNER JOIN MKEGIATAN b ON a.KDKEGUNIT = b.KDKEGUNIT
            INNER JOIN MPGRM c ON b.IDPRGRM = c.IDPRGRM
            LEFT JOIN DAFTUNIT d ON c.UNITKEY = d.UNITKEY
            INNER JOIN DAFTUNIT e ON a.UNITKEY = e.UNITKEY
            LEFT JOIN KINKEG f ON a.UNITKEY = f.UNITKEY 
            AND a.KDKEGUNIT = f.KDKEGUNIT 
            AND f.KDTAHAP = ? 
            AND f.KDJKK = '00'
            LEFT JOIN KEGUNIT g ON a.UNITKEY = g.UNITKEY 
            AND a.KDKEGUNIT = g.KDKEGUNIT 
            AND g.KDTAHAP = ? 
            ORDER BY
            e.KDUNIT,
            d.KDUNIT,
            c.NUPRGRM,
            b.NUKEG";

if (isset($_GET['tahap']) && !empty($_GET['tahap'])) {
    $result = $db->get($sql, [$_GET['tahap'], $_GET['tahap'], $_GET['tahap'], $_GET['tahap'], $_GET['tahap']]);
    echo json_encode($result);
else {
    echo "[]";
}


Tahap#10 - Membuat file angkas.php

Ditahap ini kita akan membuat file "angkas.php" yang berfungsi untuk mengambil data aliran kas masing-masing kegiatan

<?php
$sql  = "SELECT
            b.KDUNIT KODEOPD,
            ISNULL( e.kdunit, '0.00.00.' ) KODEURUS,
            d.NUPRGRM KODEPROGRAM,
            c.NUKEG KODEKEGIATAN,
            a.BULAN,
            a.NILAI 
         FROM
            (
            SELECT
               a.UNITKEY,
               KDKEGUNIT,
               KD_BULAN BULAN,
               SUM( NILAI ) NILAI 
            FROM
               DASKBLNR a
               INNER JOIN SKDASK b ON a.UNITKEY = b.UNITKEY 
               AND a.IDXDASK = b.IDXDASK 
            WHERE
               b.KDTAHAP =
            GROUP BY
               a.UNITKEY,
               a.KDKEGUNIT,
               a.KD_BULAN 
            ) a
            INNER JOIN DAFTUNIT b ON a.UNITKEY = b.UNITKEY
            INNER JOIN MKEGIATAN c ON a.KDKEGUNIT = c.KDKEGUNIT
            INNER JOIN MPGRM d ON c.IDPRGRM = d.IDPRGRM
            LEFT JOIN DAFTUNIT e ON d.UNITKEY = e.UNITKEY 
         WHERE
            b.kdunit = ?";

$result = $db->get($sql, [$_GET['tahap'], $_GET['opd']]);
echo json_encode($result);


Tahap#11 - Membuat file spj.php

Ditahap ini kita akan membuat file "spj.php" yang berfungsi untuk mengambil data realisasi keuangan masing-masing kegiatan

<?php
$sql = "SELECT
          l.KDUNIT KODEOPD,
          ISNULL( o.kdunit, '0.00.00.' ) KODEURUS,
          n.NUPRGRM KODEPROGRAM,
          m.NUKEG KODEKEGIATAN,
          m.NMKEGUNIT URAIAN,
          k.BP,
          k.BJ,
          k.BM 
          FROM
          (
          SELECT
            UNITKEY,
            KDKEGUNIT,
            SUM( BP ) BP,
            SUM( BJ ) BJ,
            SUM( BM ) BM 
          FROM
            (
            SELECT
              UNITKEY,
              KDKEGUNIT,
              SUM( nilai ) BP,
              0 BJ,
              0 BM 
            FROM
              (
              SELECT
                a.UNITKEY,
                b.KDKEGUNIT,
                LEFT ( d.kdper, 6 ) KB,
                b.NILAI,
                MONTH ( c.tglkas ) Bulan 
              FROM
                sp2d a
                INNER JOIN SP2DDETR b ON a.UNITKEY = b.UNITKEY 
                AND a.NOSP2D = b.NOSP2D
                INNER JOIN BKUK c ON a.UNITKEY = b.UNITKEY 
                AND a.NOSP2D = c.NOSP2D 
                AND a.KDSTATUS = '24'
                INNER JOIN MATANGR d ON b.MTGKEY = d.MTGKEY 
              WHERE
                c.TGLVALID IS NOT NULL UNION ALL
              SELECT
                a.UNITKEY,
                b.KDKEGUNIT,
                LEFT ( c.kdper, 6 ),
                b.NILAI,
                MONTH ( a.TGLSAH ) bulan 
              FROM
                PSPJ a
                INNER JOIN SPJDETR b ON a.UNITKEY = b.UNITKEY 
                AND a.NOSPJ = b.NOSPJ
                INNER JOIN MATANGR c ON b.MTGKEY = c.MTGKEY 
              WHERE
                a.TGLVALID IS NOT NULL 
              ) a 
            WHERE
              KB = '5.2.1.' 
              AND BULAN =
            GROUP BY
              UNITKEY,
              KDKEGUNIT UNION ALL
            SELECT
              UNITKEY,
              KDKEGUNIT,
              0,
              SUM( nilai ),
              0 
            FROM
              (
              SELECT
                a.UNITKEY,
                b.KDKEGUNIT,
                LEFT ( d.kdper, 6 ) KB,
                b.NILAI,
                MONTH ( c.tglkas ) Bulan 
              FROM
                sp2d a
                INNER JOIN SP2DDETR b ON a.UNITKEY = b.UNITKEY 
                AND a.NOSP2D = b.NOSP2D
                INNER JOIN BKUK c ON a.UNITKEY = b.UNITKEY 
                AND a.NOSP2D = c.NOSP2D 
                AND a.KDSTATUS = '24'
                INNER JOIN MATANGR d ON b.MTGKEY = d.MTGKEY 
              WHERE
                c.TGLVALID IS NOT NULL UNION ALL
              SELECT
                a.UNITKEY,
                b.KDKEGUNIT,
                LEFT ( c.kdper, 6 ),
                b.NILAI,
                MONTH ( a.TGLSAH ) bulan 
              FROM
                PSPJ a
                INNER JOIN SPJDETR b ON a.UNITKEY = b.UNITKEY 
                AND a.NOSPJ = b.NOSPJ
                INNER JOIN MATANGR c ON b.MTGKEY = c.MTGKEY 
              WHERE
                a.TGLVALID IS NOT NULL 
              ) a 
            WHERE
              KB = '5.2.2.' 
              AND BULAN =
            GROUP BY
              UNITKEY,
              KDKEGUNIT UNION ALL
            SELECT
              UNITKEY,
              KDKEGUNIT,
              0,
              0,
              SUM( nilai ) 
            FROM
              (
              SELECT
                a.UNITKEY,
                b.KDKEGUNIT,
                LEFT ( d.kdper, 6 ) KB,
                b.NILAI,
                MONTH ( c.tglkas ) Bulan 
              FROM
                sp2d a
                INNER JOIN SP2DDETR b ON a.UNITKEY = b.UNITKEY 
                AND a.NOSP2D = b.NOSP2D
                INNER JOIN BKUK c ON a.UNITKEY = b.UNITKEY 
                AND a.NOSP2D = c.NOSP2D 
                AND a.KDSTATUS = '24'
                INNER JOIN MATANGR d ON b.MTGKEY = d.MTGKEY 
              WHERE
                c.TGLVALID IS NOT NULL UNION ALL
              SELECT
                a.UNITKEY,
                b.KDKEGUNIT,
                LEFT ( c.kdper, 6 ),
                b.NILAI,
                MONTH ( a.TGLSAH ) bulan 
              FROM
                PSPJ a
                INNER JOIN SPJDETR b ON a.UNITKEY = b.UNITKEY 
                AND a.NOSPJ = b.NOSPJ
                INNER JOIN MATANGR c ON b.MTGKEY = c.MTGKEY 
              WHERE
                a.TGLVALID IS NOT NULL 
              ) a 
            WHERE
              KB = '5.2.3.' 
              AND BULAN =
            GROUP BY
              UNITKEY,
              KDKEGUNIT 
            ) s 
          GROUP BY
            UNITKEY,
            KDKEGUNIT 
          ) k
          INNER JOIN DAFTUNIT l ON k.UNITKEY = l.UNITKEY
          INNER JOIN MKEGIATAN m ON k.KDKEGUNIT = m.KDKEGUNIT
          INNER JOIN MPGRM n ON m.IDPRGRM = n.IDPRGRM
          LEFT JOIN DAFTUNIT o ON n.UNITKEY = o.UNITKEY 
          ORDER BY
          l.kdunit,
          o.kdunit,
          n.nuprgrm,
          m.nukeg";

$bulan = $_GET['bulan'];
$result = $db->get($sql, [$bulan$bulan$bulan]);
echo json_encode($result);


Tahap#12 - Eksekusi

Jika tahapan-tahapan diatas telah dilakukan dengan benar makan outputnya bisa kita lihat seperti gambar dibawah ini

  1. Urusan

  2. OPD

  3. Program

  4. Kegiatan

  5. APBD

  6. Aliran Kas

  7. Realisasi Keuangan


Sekian tutorial dari saya kali ini, mudah-mudahan bermanfaat dan jika ada kritik, saran dan pertanyaan silahkan berkomentar dibawah ini.

Let's Coding...


About author

Alfikri

Saya seorang web developer. Saya sangat suka tantangan untuk mempelejari hal-hal baru dalam dunia pemograman.




Leave a Reply

Scroll to Top