Skip to main content

Persetujuan Pimpinan

  1. Ada beberapa probis yang butuh persetujuan pimpinan.

  2. Variabel pimpinan perlu ditambahkan ke processVariables di model.

     protected array $processVariables = [
    'pimpinan',
    ];
  3. Setelah variabel yang pimpinan didaftarkan maka perlu mengirim nilai dari pimpinan itu sendiri.

  4. Untuk mengirim pimpinan perlu meng-override beforeSubmitHook. Fungsi beforeSubmitHook tereksekusi ketika sebuah data sebelum hendak disubmit.

     public function beforeSubmitHook(string $taskId, Request $request, string $businessKey)
    {
    // get last task
    $task = $this->getLastTask($businessKey);

    if (in_array($task->taskDefinitionKey, ['kpm443_persetujuan_deputi', 'kpm443_perpanjangan_persetujuan_deputi', 'kpm443_demarking_persetujuan_deputi'])) {
    $service = (new Kpt100Service(new Kpt100()));
    $pimpinan = $service->getPimpinan();

    $request->merge(['pimpinan' => $pimpinan]);
    }

    return $request;
    }
  5. Pada baris kode ini, adalah pengecekan bahwa posisi task tersebut tepat berada sebelum task yang akan maju ke persetujuan pimpinan.

    if (in_array($task->taskDefinitionKey, ['kpm443_persetujuan_deputi', 'kpm443_perpanjangan_persetujuan_deputi', 'kpm443_demarking_persetujuan_deputi']))
  6. Karena data persetujuan pimpinan bersifat Multi-Instance, yang artinya jumlah data akan sama dengan jumlah pimpinan yang ada.

  7. Data yang telah dibuat akan secara otomatis ter-assign ke pimpinan jika id usertask sebelum persetujuan pimpinan didaftarkan pada needApprovalPimpinanTasks di ApprovalDetail pada Frontend.

    const needApprovalPimpinanTasks = [
    // kpm201
    "kpm201_persetujuan_deputi",
    // kpm21b
    "kpm21b_persetujuan_deputi",
    // kpm21k
    "kpm21k_persetujuan_deputi",
    // kpm21l
    "kpm21l_persetujuan_deputi",
    // kpm219
    "kpm219_persetujuan_deputi",
    // kpm443
    "kpm443_persetujuan_deputi",
    "kpm443_perpanjangan_persetujuan_deputi",
    "kpm443_demarking_persetujuan_deputi",
    // kpm18a
    "kpm18a_persetujuan_deputi",
    "kpm18a_perpanjangan_persetujuan_deputi",
    // kpm18b
    "kpm18b_persetujuan_deputi",
    // kpm21d
    "kpm21d_persetujuan_deputi",
    "kpm244_persetujuan_deputi",
    "kpm245_persetujuan_deputi",
    "kpm274_persetujuan_deputi",
    "kpm27a_persetujuan_deputi",
    "kpm274_persetujuan_deputi",
    ];