Files
BE_IBL/application/controllers/keu/Auto_on_hold.php
2026-04-15 15:23:57 +07:00

168 lines
6.2 KiB
PHP

<?php
class Auto_on_hold extends MY_Controller
{
function __construct()
{
parent::__construct();
}
function log($msg)
{
$sdate = date("Y-m-d H:i:s");
echo "$sdate $msg\n";
}
function check_table()
{
$sql = "select count(*) from mou_hold_status_lokal";
$qry = $this->db->query($sql);
if (!$qry) {
$sql = "
CREATE TABLE `mou_hold_status_lokal` (
`MouHoldStatusLokalID` int(11) NOT NULL AUTO_INCREMENT,
`MouHoldStatusLokalIsExtend` varchar(1) DEFAULT 'N',
`MouHoldStatusLokalM_MouID` int(11) DEFAULT NULL,
`MouHoldStatusLokalHoldDate` datetime DEFAULT NULL,
`MouHoldStatusLokalF_BillID` int(11) DEFAULT NULL,
`MouHoldStatusLokalDueDate` date DEFAULT NULL,
PRIMARY KEY (`MouHoldStatusLokalID`),
KEY `MouHoldStatusLokalM_MouID` (`MouHoldStatusLokalM_MouID`),
KEY `MouHoldStatusLokalF_BillID` (`MouHoldStatusLokalF_BillID`)
)";
$qry = $this->db->query($sql);
if (!$qry) {
$this->Log("Error Creating Table mou_hold_status_lokal");
$this->db->trans_begin();
exit();
}
}
}
function index()
{
$this->check_table();
$this->log("Starting Auto On Hold Agreement. [without extend]");
$cur_date = date("Y-m-d");
$this->db->trans_begin();
$sql = "
select
distinct
M_MouID, M_MouName , M_CompanyName, M_MouNumber,
date_format(M_MouEndDate,'%d-%m-%Y') M_MouEndDate,
F_BillID,F_BillDueDate
from f_bill_issue
join f_bill on F_BillIssueF_BillID = F_BillID
and F_BillIsActive = 'Y'
join m_mou on M_MouID = F_BillIssueM_MouID
and F_BillIssueIsAllMou = 'N'
and M_MouIsActive = 'Y'
and F_BillIssueIsActive = 'Y'
and F_BillIssueIsLunas = 'N'
and F_BillIssueIsReceive = 'Y'
and (F_BillDueDate + interval 7 day ) < ?
and F_BillIssueExtendDueDate is null
join m_company on M_MouM_CompanyID = M_CompanyID";
$qry = $this->db->query($sql, [$cur_date]);
if (!$qry) {
$message =
$this->db->error()["message"] . "|" . $this->db->last_query();
$this->log($message);
$this->db->trans_rollback();
exit();
}
$rows = $qry->result_array();
$sql = "update m_mou set M_MouIsActive = 'H' where M_MouID = ?";
$sql_log = "insert into mou_hold_status_lokal(MouHoldStatusLokalM_MouID,MouHoldStatusLokalF_BillID,MouHoldStatusLokalDueDate,
MouHoldStatusLokalHoldDate, MouHoldStatusLokalIsExtend) value(?,?,?,now(),?)";
foreach ($rows as $r) {
$qry = $this->db->query($sql, [$r["M_MouID"]]);
$message = "Hold Mou [{$r["M_MouID"]}] {$r["M_MouNumber"]} | {$r["M_MouName"]} from {$r["M_CompanyName"]} yg berlaku s/d {$r["M_MouEndDate"]}";
if (!$qry) {
$message .=
"\n" .
str_repeat(" ", 20) .
" => Err : " .
$this->db->error()["message"];
} else {
$message .= "\n" . str_repeat(" ", 20) . " => OK";
}
$this->log($message);
$qry = $this->db->query($sql_log, [
$r["M_MouID"],
$r["F_BillID"],
$r["F_BillDueDate"],
"N",
]);
if (!$qry) {
$this->log("Error " . $this->db->error()["message"]);
$this->db->trans_rollback();
exit();
}
}
$this->log("Starting Auto On Hold Agreement. [with extend]");
$cur_date = date("Y-m-d");
$sql = "
select
distinct
M_MouID, M_MouName , M_CompanyName, M_MouNumber,
date_format(M_MouEndDate,'%d-%m-%Y') M_MouEndDate,
F_BillID, F_BillIssueExtendDueDate
from f_bill_issue
join f_bill on F_BillIssueF_BillID = F_BillID
and F_BillIsActive = 'Y'
join m_mou on M_MouID = F_BillIssueM_MouID
and M_MouIsActive = 'Y'
and F_BillIssueIsActive = 'Y'
and F_BillIssueIsReceive = 'Y'
and F_BillIssueIsLunas = 'N'
and F_BillIssueIsAllMou = 'N'
and F_BillIssueExtendDueDate is not null
and F_BillIssueExtendDueDate < ?
join m_company on M_MouM_CompanyID = M_CompanyID
";
$qry = $this->db->query($sql, [$cur_date]);
if (!$qry) {
$message =
$this->db->error()["message"] . "|" . $this->db->last_query();
$this->log($message);
$this->db->trans_rollback();
exit();
}
$rows = $qry->result_array();
$sql = "update m_mou set M_MouIsActive = 'H' where M_MouID = ?";
foreach ($rows as $r) {
$qry = $this->db->query($sql, [$r["M_MouID"]]);
$message = "Hold Mou [{$r["M_MouID"]}] {$r["M_MouNumber"]} | {$r["M_MouName"]} from {$r["M_CompanyName"]} yg berlaku s/d {$r["M_MouEndDate"]}";
if (!$qry) {
$message .=
"\n" .
str_repeat(" ", 20) .
" => Err : " .
$this->db->error()["message"];
} else {
$message .= "\n" . str_repeat(" ", 20) . " => OK";
}
$this->log($message);
$qry = $this->db->query($sql_log, [
$r["M_MouID"],
$r["F_BillID"],
$r["F_BillIssueExtendDueDate"],
"Y",
]);
if (!$qry) {
$this->log("Error " . $this->db->error()["message"]);
$this->db->trans_rollback();
exit();
}
}
if ($this->db->trans_status === false) {
$this->db->trans_rollback();
$this->log(
"End Auto On Hold Agreement : Error DB transaction." .
$this->db->error()["message"]
);
} else {
$this->db->trans_commit();
$this->log("End Auto On Hold Agreement : OK");
}
}
}