168 lines
6.2 KiB
PHP
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");
|
|
}
|
|
}
|
|
}
|