432 lines
15 KiB
PHP
432 lines
15 KiB
PHP
<?php
|
|
|
|
class JournalVerifEdit extends MY_Controller
|
|
{
|
|
var $db;
|
|
public function index() {
|
|
echo "Verifikasi Edit Journal";
|
|
}
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
# QUERY #
|
|
public function getListPeriode() {
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$sql = "SELECT
|
|
periodeID,
|
|
periodeName,
|
|
DATE_FORMAT(periodeStartDate, '%d %M %Y') AS periodeStartDate,
|
|
DATE_FORMAT(periodeEndDate, '%d %M %Y') AS periodeEndDate
|
|
FROM periode
|
|
WHERE periodeIsActive = 'Y'
|
|
AND periodeIsClosed = 'N'
|
|
ORDER BY periodeID DESC";
|
|
$que = $this->db->query($sql, []);
|
|
if (!$que) {
|
|
$this->sys_error_db("[Error] get daftar periode");
|
|
exit;
|
|
}
|
|
|
|
$data = $que->result_array();
|
|
$this->sys_ok($data);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function getListTypeJurnal() {
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$param = $this->sys_input;
|
|
$sql = "SELECT
|
|
JurnalTypeID,
|
|
JurnalTypeCode,
|
|
JurnalTypeName
|
|
FROM jurnal_type
|
|
WHERE JurnalTypeIsActive = 'Y'";
|
|
$que = $this->db->query($sql, []);
|
|
if (!$que) {
|
|
$this->sys_error_db("[Error] get daftar tipe jurnal");
|
|
exit;
|
|
}
|
|
|
|
$data = $que->result_array();
|
|
$all = [
|
|
'JurnalTypeID' => 0,
|
|
'JurnalTypeCode' => "X",
|
|
'JurnalTypeName' => "SEMUA"
|
|
];
|
|
array_unshift($data, $all);
|
|
|
|
$this->sys_ok($data);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function getListJournalEdit() {
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$param = $this->sys_input;
|
|
$user = $this->sys_user;
|
|
|
|
$isBranch = " ";
|
|
if ($user['M_BranchID'] != '0') {
|
|
$isBranch .= " AND jurnalM_BranchCode = '{$user['M_BranchCode']}'";
|
|
}
|
|
|
|
$keyword = "%";
|
|
if ($param['search'] != '') {
|
|
$keyword = $param['search'] . "%";
|
|
}
|
|
|
|
$row_limit = 10;
|
|
$curr_page = (int)($param['page'] ?? 1);
|
|
$row_ofset = max(0, ($curr_page - 1) * $row_limit);
|
|
|
|
$sql_base = "SELECT
|
|
jurnalID,
|
|
jurnalperiodeID,
|
|
jurnalNo,
|
|
jurnalTitle,
|
|
jurnalDescription,
|
|
jurnalEditStatus,
|
|
jurnalDate,
|
|
JurnalTypeID,
|
|
JurnalTypeCode,
|
|
JurnalTypeName,
|
|
JurnalRequestEditID,
|
|
JurnalRequestEditStaffID,
|
|
JurnalRequestEditStaffName,
|
|
JurnalRequestEditStatusRequest,
|
|
apr.M_UserUsername AS RequestApprovedBy,
|
|
JurnalRequestEditStatusEdit,
|
|
ape.M_UserUsername AS EditApprovedBy,
|
|
S_RegionalName,
|
|
M_BranchName,
|
|
M_BranchCompanyName
|
|
FROM jurnal
|
|
JOIN jurnal_request_edit ON JurnalRequestEditJurnalID = jurnalID
|
|
AND JurnalRequestEditIsActive = 'Y'
|
|
JOIN jurnal_type ON JurnalTypeID = jurnalJurnalTypeID
|
|
AND JurnalTypeIsActive = 'Y'
|
|
JOIN m_branch_company ON M_BranchCompanyID = jurnalM_BranchCompanyID
|
|
JOIN s_regional ON S_RegionalID = JurnalS_RegionalID
|
|
LEFT JOIN m_branch ON M_BranchCode = jurnalM_BranchCode
|
|
LEFT JOIN m_user apr ON apr.M_UserID = JurnalRequestEditApproveRequestBy
|
|
LEFT JOIN m_user ape ON ape.M_UserID = JurnalRequestEditApproveEditBy
|
|
WHERE jurnalperiodeID = ?
|
|
AND JurnalS_RegionalID = ?
|
|
AND (jurnalJurnalTypeID = ? OR 0 = ?)
|
|
AND jurnalDate BETWEEN DATE(?) AND DATE(?)
|
|
AND jurnalNo LIKE ?
|
|
AND jurnalIsActive = 'Y'
|
|
" . $isBranch;
|
|
|
|
$sql_data = $sql_base . " LIMIT ? OFFSET ?";
|
|
$que_data = $this->db->query($sql_data, [
|
|
$param['periodeID'], $user['S_RegionalID'],
|
|
$param['typeJournalID'], $param['typeJournalID'],
|
|
$param['startdate'], $param['enddate'],
|
|
$keyword, $row_limit, $row_ofset
|
|
]);
|
|
if (!$que_data) {
|
|
$this->sys_error_db("[Error] get daftar journal edit");
|
|
exit;
|
|
}
|
|
|
|
// get total all journal edit
|
|
$sql_total = "SELECT COUNT(*) AS total FROM ($sql_base) as x";
|
|
$que_total = $this->db->query($sql_total, [
|
|
$param['periodeID'], $user['S_RegionalID'],
|
|
$param['typeJournalID'], $param['typeJournalID'],
|
|
$param['startdate'], $param['enddate'], $keyword
|
|
]);
|
|
if (!$que_total) {
|
|
$this->sys_error_db("[Error] get total all journal edit");
|
|
exit;
|
|
}
|
|
|
|
$data = [
|
|
"records" => $que_data->result_array(),
|
|
"total" => $que_total->row_array()['total']
|
|
];
|
|
$this->sys_ok($data);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function getDetailJournalEdit() {
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$param = $this->sys_input;
|
|
|
|
## get latest edit change log data ##
|
|
$sql_data = "SELECT
|
|
JurnalEditLogID,
|
|
JurnalEditLogIDJurnalID,
|
|
JurnalEditLogIDJsonBefore,
|
|
JurnalEditLogIDJsonAfter,
|
|
JurnalEditLogUserID AS StaffUserID,
|
|
IFNULL(NULLIF(M_UserFullName, ''), M_UserUsername) AS StaffName
|
|
FROM acc_one_log.jurnal_edit_log
|
|
JOIN m_user ON M_UserID = JurnalEditLogUserID
|
|
WHERE JurnalEditLogIDJurnalID = ?
|
|
AND JurnalEditLogIsActive = 'Y'
|
|
ORDER BY JurnalEditLogID DESC
|
|
LIMIT 1";
|
|
$que_data = $this->db->query($sql_data, [$param['jurnalID']]);
|
|
if (!$que_data) {
|
|
$this->sys_error_db("[Error] get data change jurnal");
|
|
exit;
|
|
}
|
|
$data = $que_data->result_array()[0];
|
|
|
|
$before = json_decode($data['JurnalEditLogIDJsonBefore'], true);
|
|
$after = json_decode($data['JurnalEditLogIDJsonAfter'], true);
|
|
|
|
unset($data['JurnalEditLogIDJsonBefore']);
|
|
unset($data['JurnalEditLogIDJsonAfter']);
|
|
|
|
$data['changeBefore'] = $before;
|
|
$data['changeAfter'] = $after;
|
|
|
|
$this->sys_ok($data);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
# MUTATION #
|
|
public function requestEditJurnal() {
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_begin();
|
|
$param = $this->sys_input;
|
|
$user = $this->sys_user;
|
|
|
|
# insert into request jurnal edit #
|
|
$sqlreq = "INSERT INTO jurnal_request_edit (
|
|
JurnalRequestEditJurnalID,
|
|
JurnalRequestEditStaffID,
|
|
JurnalRequestEditStaffName,
|
|
JurnalRequestEditUserID,
|
|
JurnalRequestEditCreated
|
|
) VALUES (?,?,?,?,NOW())";
|
|
$quereq = $this->db->query($sqlreq, [
|
|
$param['jurnalID'], $param['staffID'],
|
|
$param['staffName'], $user['M_UserID']
|
|
]);
|
|
if (!$quereq) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("[Error] insert request edit into table jurnal request edit");
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_commit();
|
|
$this->sys_ok("Request edit jurnal berhasil dibuat");
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function updateRequestEditJurnal() {
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_begin();
|
|
$param = $this->sys_input;
|
|
$user = $this->sys_user;
|
|
|
|
# update request jurnal edit status #
|
|
$sqlreq = "UPDATE jurnal_request_edit SET
|
|
JurnalRequestEditStatusRequest = ?,
|
|
JurnalRequestEditApproveRequestBy = ?,
|
|
JurnalRequestEditUpdated = NOW()
|
|
WHERE JurnalRequestEditID = ?";
|
|
$quereq = $this->db->query($sqlreq, [
|
|
$param['status'], $user['M_UserID'],
|
|
$param['JurnalRequestEditID']
|
|
]);
|
|
if (!$quereq) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("[Error] update request edit status");
|
|
exit;
|
|
}
|
|
|
|
# update data header jurnal status edit #
|
|
$sqlheader = "UPDATE jurnal SET
|
|
jurnalEditStatus = 'Y',
|
|
jurnalLastUpdated = NOW()
|
|
WHERE jurnalID = ?";
|
|
$queheader = $this->db->query($sqlheader, [$param['jurnalID']]);
|
|
if (!$queheader) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("[Error] update header jurnal");
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_commit();
|
|
$this->sys_ok("[Success] update status request");
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function saveEditJurnal() {
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("invalid token");
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_begin();
|
|
|
|
$param = $this->sys_input;
|
|
$user = $this->sys_user;
|
|
|
|
$old_jurnaltx = $param['oldjurnaltx'];
|
|
$new_jurnaltx = $param['newjurnaltx'];
|
|
|
|
# log the data in accone log #
|
|
$sql_addlog = "INSERT INTO acc_one_log.jurnal_edit_log (
|
|
JurnalEditLogIDJurnalID,
|
|
JurnalEditLogIDJsonBefore,
|
|
JurnalEditLogIDJsonAfter,
|
|
JurnalEditLogUserID,
|
|
JurnalEditLogCreated
|
|
) VALUES (?,?,?,?,NOW())";
|
|
$que_addlog = $this->db->query($sql_addlog, [
|
|
$param['jurnalID'], json_encode($old_jurnaltx),
|
|
json_encode($new_jurnaltx), $user['M_UserID']
|
|
]);
|
|
if (!$que_addlog) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("[Error] insert into acc one jurnal log");
|
|
exit;
|
|
}
|
|
$jurnalEditLogID = $this->db->insert_id();
|
|
|
|
# UPDATE table jurnal request edit #
|
|
$sql_req = "UPDATE jurnal_request_edit SET
|
|
JurnalRequestEditJurnalEditLogID = ?
|
|
WHERE JurnalRequestEditID = ?";
|
|
$que_req = $this->db->query($sql_req, [
|
|
$jurnalEditLogID, $param['jurnalRequestEditID']
|
|
]);
|
|
if (!$que_req) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("[Error] update table jurnal request edit");
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_commit();
|
|
$this->sys_ok("[Success] save edit jurnal");
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
public function verifEditJurnal() {
|
|
try {
|
|
if (!$this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_begin();
|
|
$param = $this->sys_input;
|
|
$user = $this->sys_user;
|
|
|
|
# UPDATE jurnal tx #
|
|
$newtrx = $param['newtrx'];
|
|
$sqltrx = "UPDATE jurnal_tx SET
|
|
jurnalTxCoaID = ?,
|
|
jurnalTxDescription = ?,
|
|
jurnalTxLastUpdated = NOW(),
|
|
jurnalTxM_UserID = ?
|
|
WHERE jurnalTxID = ?
|
|
AND jurnalTxJurnalID = ?
|
|
AND jurnalTxIsActive = 'Y'";
|
|
foreach ($newtrx as $key => $obj) {
|
|
$quetrx = $this->db->query($sqltrx, [
|
|
$obj['coaID'], $obj['coaDescription'], $user['M_UserID'],
|
|
$obj['jurnalTxID'], $obj['jurnalTxJurnalID']
|
|
]);
|
|
if (!$quetrx) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("[Error] update new jurnal tx");
|
|
exit;
|
|
}
|
|
}
|
|
|
|
# UPDATE jurnal header edit status #
|
|
$sql = "UPDATE jurnal
|
|
SET jurnalEditStatus = 'N',
|
|
jurnalLastUpdated = NOW()
|
|
WHERE jurnalID = ?";
|
|
$que = $this->db->query($sql, [$param['jurnalID']]);
|
|
if (!$que) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("[Error] update status edit");
|
|
exit;
|
|
}
|
|
|
|
# UPDATE jurnal status edit jurnal #
|
|
$sqlreq = "UPDATE jurnal_request_edit SET
|
|
JurnalRequestEditStatusEdit = ?,
|
|
JurnalRequestEditApproveEditBy = ?,
|
|
JurnalRequestEditUpdated = NOW()
|
|
WHERE JurnalRequestEditID = ?";
|
|
$quereq = $this->db->query($sqlreq, [
|
|
$param['status'], $user['M_UserID'],
|
|
$param['JurnalRequestEditID']
|
|
]);
|
|
if (!$quereq) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("[Error] update status edit jurnal");
|
|
exit;
|
|
}
|
|
|
|
$this->db->trans_commit();
|
|
$this->sys_ok("[Success] approve edit jurnal");
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
} |