db = $this->load->database("onedev", true); } function fix_is_last($orderID) { $sql = "update ss_piutang set SsPiutangIsLast = 'N' where SsPiutangT_OrderHeaderID = ?"; $this->db->query($sql, array($orderID)); $sql = "select max(SsPiutangID) mID from ss_piutang where SsPiutangT_OrderHeaderID = ?"; $qry = $this->db->query($sql, array($orderID)); if ($qry) { $rows = $qry->result_array(); if (count($rows) > 0) { $id = $rows[0]["mID"]; $sql = "update ss_piutang set SsPiutangIsLast = 'Y' where SsPiutangID = ?"; $this->db->query($sql, array($id)); } } } function fix_point_date($date) { $sql = "select t_ordermemberdiscount.* from t_ordermemberdiscount join t_orderheader on T_OrderMemberDiscountT_OrderHeaderID = T_OrderHeaderID and T_OrderHeaderDate >= ? and T_OrderHeaderDate <= ? and T_OrderHeaderIsActive = 'Y' and T_OrderMemberDiscountIsActive = 'Y'"; if ($date == "") { $date = date("Y-m-d"); } $sdate = "$date 00:00:00"; $edate = "$date 23:59:59"; $qry = $this->db->query($sql, [$sdate, $edate]); if (!$qry) { echo "No MemberDiscount table"; print_r($this->db->error()); exit; } $rows = $qry->result_array(); $this->db->trans_begin(); foreach ($rows as $r) { $date = date("Y-m-d", strtotime($r["T_OrderMemberDiscountLastUpdated"])); $hid = $r["T_OrderMemberDiscountT_OrderHeaderID"]; $disc = $r["T_OrderMemberDiscountBruto"] - $r["T_OrderMemberDiscountNetto"]; $disc_pct = $r["T_OrderMemberDiscountPercent"]; $xtotal = $r["T_OrderMemberDiscountNetto"]; $this->fix_point_by_header_id($hid, $disc, $disc_pct, $xtotal, $date); } $this->db->trans_commit(); } function fix_point_by_header_id($hid, $disc, $disc_pct, $xtotal, $date) { //update ss_piutang_test // disc dihitung dari T_OrderDetail Test setelah Discount //total disc $sql = "select SsPiutangID, sum(SsPiutangTestTotal * ? / 100) new_disc from ss_piutang_test join ss_piutang on SsPiutangT_OrderHeaderID = ? and SsPiutangID = SsPiutangTestSsPiutangID where SsPiutangDate = ? group by SsPiutangID "; $qry = $this->db->query($sql, [$disc_pct, $hid, $date]); if (!$qry) { echo "ERR: " . print_r($this->db->error()); exit; } $rows = $qry->result_array(); $arr_piutang_disc = []; foreach ($rows as $r) { $id = $r["SsPiutangID"]; $disc = $r["new_disc"]; $arr_piutang_disc[$id] = floatval($disc); } $sql = "select SsPiutangID,SsPiutangTestID, SsPiutangTestTotal * ? / 100 new_disc, SsPiutangTestTotal total from ss_piutang_test join ss_piutang on SsPiutangT_OrderHeaderID = ? and SsPiutangID = SsPiutangTestSsPiutangID where SsPiutangDate = ? "; $qry = $this->db->query($sql, [$disc_pct, $hid, $date]); if (!$qry) { echo "ERR: " . print_r($this->db->error()); exit; } $rows = $qry->result_array(); $sql_u = "update ss_piutang_test set SsPiutangTestDiscTotal = SsPiutangTestDiscTotal + ?, SsPiutangTestTotal = SsPiutangTestTotal - ? where SsPiutangTestID = ?"; $sql_uh = "update ss_piutang set SsPiutangDiscount = SsPiutangDiscount + ?, SsPiutangNet = SsPiutangNet - ?, SsPiutangTotal = SsPiutangTotal - ? where SsPiutangID = ?"; $prevSsPiutangID = 0; foreach ($rows as $r) { $new_disc = floatval($r["new_disc"]); $SsPiutangID = $r["SsPiutangID"]; $SsPiutangTestID = $r["SsPiutangTestID"]; if ($SsPiutangID != $prevSsPiutangID) { $qry = $this->db->query($sql_uh, [ $arr_piutang_disc[$SsPiutangID], $arr_piutang_disc[$SsPiutangID], $arr_piutang_disc[$SsPiutangID], $SsPiutangID ]); if (!$qry) { echo "Err : " . print_r($this->db->error(), true) . "\n"; $this->db->trans_rollback(); exit; } } $qry = $this->db->query($sql_u, [$new_disc, $new_disc, $SsPiutangTestID]); if (!$qry) { echo "Err : " . print_r($this->db->error(), true) . "\n"; $this->db->trans_rollback(); exit; } $prevSsPiutangID = $SsPiutangID; } } function fix_date($date) { $sql = "select * from ss_piutang where SsPiutangType = 'B2' and SsPiutangDate = ?"; $qry = $this->db->query($sql, array($date)); $rows = array(); if ($qry) { $rows = $qry->result_array(); foreach ($rows as $r) { $ssPiutangID = $r["SsPiutangID"]; $ssPiutangTotal = $r["SsPiutangTotal"]; $ssPiutangPayment = $r["SsPiutangPayment"]; $orderID = $r["SsPiutangT_OrderHeaderID"]; $date = $r["SsPiutangDate"]; $sql = "select sum(SsPiutangPayment) as tot from ss_piutang where SsPiutangT_OrderHeaderID = ? and SsPiutangDate < ? "; $qryd = $this->db->query($sql, array($orderID, $date)); if ($qryd) { $rows = $qryd->result_array(); $total = $rows[0]["tot"]; $isLunas = "N"; if ($total == $ssPiutangTotal - $ssPiutangPayment) { $isLunas = "Y"; } $sql = "update ss_piutang set SsPiutangPaymentBefore = ?, SsPiutangIsLunas = ? where SsPiutangID = ? "; $this->db->query($sql, array($total, $isLunas, $ssPiutangID)); $this->fix_is_last($orderID); echo "Update $ssPiutangID : $orderID \n"; } else { print_r($this->db->error()); } } } $this->fix_point_date($date); } function fix_all() { $sql = "select * from ss_piutang where SsPiutangType = 'B2'"; $qry = $this->db->query($sql); $rows = array(); if ($qry) { $rows = $qry->result_array(); foreach ($rows as $r) { $ssPiutangID = $r["SsPiutangID"]; $ssPiutangTotal = $r["SsPiutangTotal"]; $ssPiutangPayment = $r["SsPiutangPayment"]; $orderID = $r["SsPiutangT_OrderHeaderID"]; $date = $r["SsPiutangDate"]; $sql = "select sum(SsPiutangPayment) as tot from ss_piutang where SsPiutangT_OrderHeaderID = ? and SsPiutangDate < ? "; $qryd = $this->db->query($sql, array($orderID, $date)); if ($qryd) { $rows = $qryd->result_array(); $total = $rows[0]["tot"]; $isLunas = "N"; if ($total == $ssPiutangTotal - $ssPiutangPayment) { $isLunas = "Y"; } $sql = "update ss_piutang set SsPiutangPaymentBefore = ?, SsPiutangIsLunas = ? where SsPiutangID = ? "; $this->db->query($sql, array($total, $isLunas, $ssPiutangID)); echo "Update $ssPiutangID : $orderID \n"; } else { print_r($this->db->error()); } } } } }