Files
BE_CPONE/application/controllers/fix/Perubahan_sample.php
2026-04-27 10:26:26 +07:00

181 lines
6.3 KiB
PHP

<?php
class Perubahan_sample extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
function get_rows($sql, $prm = false)
{
}
function index()
{
}
public function cek($day = 7)
{
$sql = "select
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
T_OrderSampleT_SampleTypeID,
T_OrderSampleSamplingDate,
T_OrderSampleSamplingTime,
T_OrderSampleReceiveDate,
T_OrderSampleReceiveTime,
T_SampleTypeName,
T_OrderSampleID,
T_SampleTypeName,
T_OrderSampleIsActive
from
t_orderheader
join t_ordersample on T_OrderHeaderID = T_OrderSampleT_OrderHeaderID
and T_OrderSampleT_SampleTypeID in ( 122, 259 )
and T_OrderHeaderID in
(
select
distinct T_OrderSampleT_OrderHeaderID
from
t_ordersample
join t_orderheader on T_OrderSampleT_OrderHeaderID = T_OrderHeaderID
and T_OrderHeaderDate + interval $day day > now()
and T_OrderHeaderIsActive = 'Y'
and T_OrderSampleT_SampleTypeID = 259
)
join t_sampletype on T_OrderSampleT_SampleTypeID = T_SampleTypeID
order by T_OrderHeaderID,T_OrderSampleT_SampleTypeID";
$qry = $this->db->query($sql);
if (!$qry) {
echo "ERR : " . $this->db->error()["message"] . "|" . $this->db->last_query();
exit;
}
$rows = $qry->result_array();
$order_122 = array_filter(
$rows,
function ($r) {
return $r["T_OrderSampleT_SampleTypeID"] == 122;
}
);
$dup_order = [];
foreach ($order_122 as $r) {
$dup_order[] = $r["T_OrderHeaderID"];
}
$dup_rows = array_filter($rows, function ($r) use ($dup_order, $order_122) {
if ($r["T_OrderSampleT_SampleTypeID"] != 259) return false;
if (in_array($r["T_OrderHeaderID"], $dup_order)) {
return true;
}
return false;
});
$dup_rows = array_map(function ($r) use ($order_122) {
$result = $r;
foreach ($order_122 as $r2) {
if ($r["T_OrderHeaderID"] == $r2["T_OrderHeaderID"]) {
$result["OrgT_OrderSampleID"] = $r2["T_OrderSampleID"];
$result["OrgT_OrderSampleReceiveDate"] = $r2["T_OrderSampleReceiveDate"];
$result["OrgT_OrderSampleReceiveTime"] = $r2["T_OrderSampleReceiveTime"];
}
}
return $result;
}, $dup_rows);
$this->header();
usort($dup_rows, function ($a, $b) {
return $a["T_OrderHeaderID"] - $b["T_OrderHeaderID"];
});
$total_diff = 0;
foreach ($dup_rows as $r) {
$sampling_date = $r["T_OrderSampleReceiveDate"] . " " . $r["T_OrderSampleReceiveTime"];
$org_sampling_date = $r["OrgT_OrderSampleReceiveDate"] . " " . $r["OrgT_OrderSampleReceiveTime"];
if ($sampling_date != "" && $sampling_date > $org_sampling_date) {
$total_diff++;
}
}
echo "<tr><td colspan=4> Total : <b>$total_diff</b> dari " . count($dup_rows)
. " &nbsp;($day hari terakhir) </td>\n";
foreach ($dup_rows as $r) {
$this->detail($r);
}
echo "</table>";
}
function do_ubah($targetID, $sourceID)
{
//harus di null kan dulu
$sql = "update t_ordersample
set
T_OrderSampleReceiveDate = NULL,
T_OrderSampleReceiveTime = NULL,
T_OrderSampleReceive = 'N'
where T_OrderSampleID = $targetID
";
$qry = $this->db->query($sql);
if (!$qry) {
echo "ERR : " . $this->db->error()["message"] . "|" . $this->db->last_query();
exit;
}
$sql = "update t_ordersample target, t_ordersample source
set
target.T_OrderSampleSampling = source.T_OrderSampleSampling,
target.T_OrderSampleSamplingDate = source.T_OrderSampleSamplingDate,
target.T_OrderSampleSamplingTime = source.T_OrderSampleSamplingTime,
target.T_OrderSampleSamplingUserID = source.T_OrderSampleSamplingUserID,
target.T_OrderSampleReceive = source.T_OrderSampleReceive,
target.T_OrderSampleReceiveDate = source.T_OrderSampleReceiveDate,
target.T_OrderSampleReceiveTime = source.T_OrderSampleReceiveTime,
target.T_OrderSampleReceiveUserID = source.T_OrderSampleReceiveUserID
where target.T_OrderSampleID = $targetID and source.T_OrderSampleID = $sourceID
and $targetID > $sourceID
and source.T_OrderSampleSampling = 'Y'
and source.T_OrderSampleReceive = 'Y' ";
$qry = $this->db->query($sql);
if (!$qry) {
echo "ERR : " . $this->db->error()["message"] . "|" . $this->db->last_query();
exit;
}
echo "Sampling Time Updated.";
echo "<script>document.location.href='/one-api/fix/perubahan_sample/cek'</script>";
}
function detail($r)
{
$sampling_date = $r["T_OrderSampleReceiveDate"] . " " . $r["T_OrderSampleReceiveTime"];
$org_sampling_date = $r["OrgT_OrderSampleReceiveDate"] . " " . $r["OrgT_OrderSampleReceiveTime"];
echo "<tr>";
echo "<td>" . $r["T_OrderHeaderLabNumber"] . "</td>";
echo "<td> $sampling_date </td>";
if ($sampling_date > $org_sampling_date) {
$url_ubah = "window.location.href='./do_ubah/" . $r["T_OrderSampleID"] . "/" . $r["OrgT_OrderSampleID"] . "'";
echo "<td> <button onClick=\"$url_ubah\">Ubah sesuai origin => </td> </td>";
} else {
echo "<td> &nbsp; </td>";
}
echo "<td> $org_sampling_date </td>";
echo "</tr>";
}
function header()
{
echo '<style>
th, td {
padding: 15px;
text-align: left;
}
tr:nth-child(even) {background-color: #f2f2f2;}
table {
border: solid 1px ;
min-width:600px;
}
</style>
';
echo '<table>';
echo '<tr>';
echo "<td>Lab No.</td>
<td>Sampling Rcv Date</td>
<td> === </td>
<td>Sampling Rcv Date Origin</td>
</tr>\n";
}
}