debug = false; $this->base_url = "https://mobile.pramita.co.id/"; } function now() { return Date("Y-m-d H:i:s"); } function log($msg) { echo "{$this->now()} $msg\n"; } function duitku_cb($debug = "") { //branch $sql = "select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n . {$this->db->last_query}"; exit(); } $rows = $qry->result_array(); if (count($rows) == 0) { $this->log("ERR : No Default Branch"); exit(); } $branchID = $rows[0]["M_BranchID"]; $url = "{$this->base_url}one-api/hs/r_duitku/download/$branchID"; $this->log("Download Duitku CallBack from $url"); $jresp = file_get_contents($url); $resp = json_decode($jresp, true); if ($resp["status"] != "OK") { $this->log("ERR Download " . $resp["message"]); exit(); } $md5 = $resp["md5"]; $jdata = gzuncompress(base64_decode($resp["data"])); $l_md5 = md5($jdata); if ($md5 != $l_md5) { $this->log(" ERR mD5 $l_md5 <> $md5"); exit(); } $data = json_decode($jdata, true); if (count($data) > 0) { //insert into one_hs.duitku_cb $this->db->trans_begin(); $tot_row = 0; $tot_dl = 0; foreach ($data as $r) { $sql = "select duitkuCbID from one_hs.duitku_cb where duitkuCbID =?"; $id = $r["duitkuCbID"]; $qry = $this->db->query($sql, [$id]); if (!$qry) { $this->log("Err ", $this->db->error()["message"]); $this->db->trans_rollback(); exit; } $rows = $qry->result_array(); if (count($rows) == 0) { $qry = $this->db->insert("one_hs.duitku_cb", $r); if (!$qry) { $this->log("Err " . $this->db->error()["message"]); $this->db->trans_rollback(); exit; } $tot_row++; } $tot_dl++; } $this->db->trans_commit(); $this->log("Done $tot_dl downloaded, $tot_row inserted."); } // process duitku_cb $sql = "select * from one_hs.duitku_cb where duitkuCbIsProcessed = 'N'"; $qry = $this->db->query($sql); if (!$qry) { $this->log("Err ", $this->db->error()["message"]); $this->db->trans_rollback(); exit; } $arr_id = []; $rows = $qry->result_array(); $this->db->trans_begin(); foreach ($rows as $r) { $sql = "update one_hs.t_transaction set T_TransactionIsLunas = 'Y' where T_TransactionNumbering = ? and T_TransactionIsLunas = 'N'"; $orderID = $r["duitkuCbMerchantOrderId"]; $qry = $this->db->query($sql, [$orderID]); if (!$qry) { $this->log("Err ", $this->db->error()["message"]); $this->db->trans_rollback(); exit; } $arr_id[] = $r["duitkuCbID"]; } if (count($arr_id) > 0) { $s_ids = implode(",", $arr_id); $sql = "update one_hs.duitku_cb set duitkuCbIsProcessed = 'Y' where duitkuCbID in ($s_ids)"; $qry = $this->db->query($sql); if (!$qry) { $this->log("Err ", $this->db->error()["message"]); $this->db->trans_rollback(); exit; } $this->log("Done Update one_hs duitku_cb ". count($arr_id)); } $this->db->trans_commit(); } function force($trNo, $debug = "") { //hs_upload $this->log("Force Download Online HS Transaction $trNo"); $this->db->trans_begin(); //branch $sql = "select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n . {$this->db->last_query}"; exit(); } $rows = $qry->result_array(); if (count($rows) == 0) { $this->log("ERR : No Default Branch"); exit(); } $branchID = $rows[0]["M_BranchID"]; $url = "{$this->base_url}one-api/hs/r_hs/force_download/$branchID/$trNo"; $this->log("Download from $url"); $jresp = file_get_contents($url); $resp = json_decode($jresp, true); if ($resp["status"] != "OK") { $this->log("ERR Download " . $resp["message"]); exit(); } if ($resp["total"] == 0) { $this->log(" No Pending Transaction."); exit(); } $md5 = $resp["md5"]; $jdata = gzuncompress(base64_decode($resp["data"])); $l_md5 = md5($jdata); if ($md5 != $l_md5) { $this->log(" ERR mD5 $l_md5 <> $md5"); exit(); } $data = json_decode($jdata, true); if ($debug != "") { print_r($data); } foreach ($data as $table => $rows) { $this->log(" Insert Update ol_$table"); $count = 0; foreach ($rows as $r) { $count++; if ($table == "t_transaction") { unset($r["T_TransactionIsHS"]); $r["T_TransactionLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "t_transactionHS") { $r["t_transactionHSLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "t_order") { $r["T_OrderLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "t_orderdetail") { //saat download di skip //di pakai saat upload unset($r["T_OrderDetailIsAdditional"]); $r["T_OrderDetailLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "t_orderdeliveries") { $r["T_OrderDeliveriesLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "m_patient") { $r["M_PatientLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "m_patientaddress") { $r["M_PatientAddressLastUpdated"] = date("Y-m-d H:i:s"); } list($xstatus, $message) = $this->updateOnDuplicate( "one_hs.ol_{$table}", $r ); if (!$xstatus) { $this->log(" Error one_hs.ol_{$table} | " . $message); $this->db->trans_rollback(); exit(); } } $this->log(" $count records"); } $tx_ids = []; foreach ($data["t_transaction"] as $r) { $tx_ids[] = $r["T_TransactionID"]; } $this->log("Force Download OK"); $this->db->trans_commit(); $this->insert_ol_table(); //rollback for ol table $this->db->trans_commit(); } public function index() { //hs_upload $this->log("Download Online HS Transaction"); $this->db->trans_begin(); //branch $sql = "select * from m_branch where M_BranchIsActive='Y' and M_BranchIsDefault='Y'"; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n . {$this->db->last_query}"; exit(); } $rows = $qry->result_array(); if (count($rows) == 0) { $this->log("ERR : No Default Branch"); exit(); } $branchID = $rows[0]["M_BranchID"]; $url = "{$this->base_url}one-api/hs/r_hs/download/$branchID"; $this->log("Download from $url"); $jresp = file_get_contents($url); $resp = json_decode($jresp, true); if ($resp["status"] != "OK") { $this->log("ERR Download " . $resp["message"]); exit(); } if ($resp["total"] == 0) { $this->log(" No Pending Transaction."); exit(); } $md5 = $resp["md5"]; $jdata = gzuncompress(base64_decode($resp["data"])); $l_md5 = md5($jdata); if ($md5 != $l_md5) { $this->log(" ERR mD5 $l_md5 <> $md5"); exit(); } $data = json_decode($jdata, true); //insert data here ... foreach ($data as $table => $rows) { $this->log(" Insert Update ol_$table"); $count = 0; foreach ($rows as $r) { $count++; if ($table == "t_transaction") { unset($r["T_TransactionIsHS"]); $r["T_TransactionLastUpdated"] = date("Y-m-d H:i:s"); $this->log( " T_TransactionNumber : " . $r["T_TransactionNumbering"] ); } if ($table == "t_transactionHS") { $r["t_transactionHSLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "t_order") { $r["T_OrderLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "t_orderdetail") { //saat download di skip //di pakai saat upload unset($r["T_OrderDetailIsAdditional"]); $r["T_OrderDetailLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "t_orderdeliveries") { $r["T_OrderDeliveriesLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "m_patient") { $r["M_PatientLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "m_patientaddress") { $r["M_PatientAddressLastUpdated"] = date("Y-m-d H:i:s"); } if ($table == "hs_address") { $r["HS_AddressLastUpdated"] = date("Y-m-d H:i:s"); } list($xstatus, $message) = $this->updateOnDuplicate( "one_hs.ol_{$table}", $r ); if (!$xstatus) { $this->log(" Error one_hs.ol_{$table} | " . $message); $this->db->trans_rollback(); exit(); } } $this->log(" $count records"); } $tx_ids = []; foreach ($data["t_transaction"] as $r) { $tx_ids[] = $r["T_TransactionID"]; } if (count($tx_ids) > 0) { $param = ["branchID" => $branchID, "transactionID" => $tx_ids]; $this->log(" Update T_Transaction Download Status"); $url = "{$this->base_url}one-api/hs/r_hs/update_status"; $jparam = json_encode($param); $zparam = gzcompress($jparam); $resp = $this->post($url, $zparam); if ($resp["status"] != "OK") { $this->log(" ERR update status " . $resp["message"]); exit(); } } $this->log("Download OK"); $this->db->trans_commit(); $arrTxIds = $this->insert_ol_table(); //rollback for ol table $this->db->trans_commit(); //Add whatsapp notif if (count($arrTxIds) > 0) { foreach ($arrTxIds as $tx_id) { $add_whatsapp_url = "http://localhost/one-api/hs/new_order_whatsapp/add_order/" . $tx_id; $resp = $this->get($add_whatsapp_url); if ($resp["status"] != "OK") { $this->log(" ERR Add Whatsapp Order $add_whatsapp_url" . $resp["message"]); } else { $this->log(" Add Whatsapp Order $add_whatsapp_url [OK]"); } } } $this->fix_thsaddr(); $this->duitku_cb(); } function get_count($table, $field, $value) { $sql = "select count(*) total from $table where $field = '$value'"; $qry = $this->db->query($sql); if (!$qry) { return [false, 0, $this->db->error()["message"]]; } return [true, $qry->result_array()[0]["total"], ""]; } function fix_thsaddr() { //cari 7 hari terakhir $sql = "select t.t_transactionHSID, t.t_transactionHSOldID, t.t_transactionHSHS_AddressID, ol.t_transactionHSID olID , ol.t_transactionHSHS_AddressID olAddressID, HS_AddressID newAddressID, HS_AddressOldID oldAddressID from one_hs.t_transactionHS t join one_hs.ol_t_transactionHS ol on t.t_transactionHSHS_AddressID = 0 and t.T_TransactionHSIsActive = 'Y' and t.t_transactionHSLastUpdated + interval 7 day > now() and t.t_transactionHSOldID = ol.t_transactionHSID left join one_hs.hs_address on ol.t_transactionHSHS_AddressID = HS_AddressOldID and HS_AddressIsActive = 'Y' "; $qry = $this->db->query($sql); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n . {$this->db->last_query} \n"; exit; } $rows = $qry->result_array(); $sql = "update one_hs.t_transactionHS set t_transactionHSHS_AddressID = ? where t_transactionHSID = ?"; $this->db->trans_begin(); $total = count($rows); foreach ($rows as $r) { $newAddressID = $r["newAddressID"]; $thsID = $r["t_transactionHSID"]; $qry = $this->db->query($sql, [$newAddressID, $thsID]); if (!$qry) { echo "{$this->now()} ERR : {$this->db->error()["message"]}\n . {$this->db->last_query} \n"; $this->db->trans_rollback(); exit; } } echo "{$this->now()} OK : Fix $total t_transactionHSHS_AddressID \n"; $this->db->trans_commit(); } function insert_ol_table($stand_alone = "", $debug = "x") { $this->db->trans_begin(); $this->log(" Inserting ol_t_transaction "); $sql = "select * from one_hs.ol_t_transaction where T_TransactionOldID = 0 or T_TransactionOldID is null"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR insert ol_t_transaction" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $arrTxIds = []; foreach ($qry->result_array() as $r) { $oldID = $r["T_TransactionID"]; unset($r["T_TransactionID"]); $r["T_TransactionOldID"] = $oldID; $this->log(" one_hs.t_transaction $oldID "); $qry = $this->db->insert("one_hs.t_transaction", $r); if (!$qry) { $this->log( " ERR insert one_hs.ol_t_transaction" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $arrTxIds[] = $this->db->insert_id(); $sql = "update one_hs.ol_t_transaction set T_TransactionOldID = ? where T_TransactionID = ?"; $qry = $this->db->query($sql, [$oldID, $oldID]); if (!$qry) { $this->log( " ERR update one_hs.ol_t_transaction" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } //hs_address $this->log(" Inserting ol_hs_address"); $sql = "select * from one_hs.ol_hs_address where HS_AddressOldID = 0 or HS_AddressOldID is null "; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR insert ol_hs_address " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $mapHsAddress = []; foreach ($qry->result_array() as $r) { $oldID = $r["HS_AddressID"]; list($c_status, $c_count, $msg) = $this->get_count( "one_hs.hs_address", "HS_AddressOldID", $oldID ); if (!$c_status) { $this->log( " ERR get existing one_hs.hs_address " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } if ($c_count == 0) { unset($r["HS_AddressID"]); $r["HS_AddressOldID"] = $oldID; $this->log(" one_hs.hs_address $oldID "); $qry = $this->db->insert("one_hs.hs_address", $r); if (!$qry) { $this->log( " ERR insert one_hs.hs_address " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $newHSAddressID = $this->db->insert_id(); $mapHsAddress[$oldID] = $newHSAddressID; } $sql = "update one_hs.ol_hs_address set HS_AddressOldID = ? where HS_AddressID = ?"; $qry = $this->db->query($sql, [$oldID, $oldID]); if (!$qry) { $this->log( " ERR update one_hs.ol_hs_address " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } //re-create mapHsAddress /* $sql = "select HS_AddressID, HS_AddressOldID from one_hs.hs_address */ /* where HS_AddressLastUpdated + interval 3 day > now()"; */ $sql = "select HS_AddressID, HS_AddressOldID from one_hs.hs_address where HS_AddressOldID in ( select HS_AddressID from one_hs.ol_hs_address where HS_AddressLastUpdated + interval 3 day > now() )"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR insert ol_t_transactionHS " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $rows = $qry->result_array(); foreach ($rows as $r) { $mapHsAddress[$r["HS_AddressOldID"]] = $r["HS_AddressID"]; } $this->log(" Inserting ol_t_transactionHS "); $sql = "select * from one_hs.ol_t_transactionHS where T_TransactionHSOldID = 0 or T_TransactionHSOldID is null"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR insert ol_t_transactionHS" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } foreach ($qry->result_array() as $r) { $oldTxID = $r["t_transactionHST_TransactionID"]; $oldID = $r["t_transactionHSID"]; unset($r["t_transactionHSID"]); $r["t_transactionHSOldID"] = $oldID; $r["t_transactionHST_TransactionID"] = 0; $r["t_transactionHST_TransactionOldID"] = $oldTxID; if (isset($mapHsAddress[$r["t_transactionHSHS_AddressID"]])) { $r["t_transactionHSHS_AddressID"] = $mapHsAddress[$r["t_transactionHSHS_AddressID"]]; } else { $r["t_transactionHSHS_AddressID"] = 0; } $qry = $this->db->insert("one_hs.t_transactionHS", $r); $this->log(" one_hs.t_transactionHS $oldID $oldTxID"); if (!$qry) { $this->log( " ERR insert one_hs.ol_t_transactionHS" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $sql = "update one_hs.t_transactionHS join one_hs.t_transaction on t_transactionHST_TransactionID = 0 and t_transactionHST_TransactionOldID = T_TransactionOldID and T_TransactionIsActive = 'Y' set t_transactionHST_TransactionID = T_TransactionID"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR update one_hs.t_transactionHS " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $sql = "update one_hs.ol_t_transactionHS set t_transactionHSOldID = ? where t_transactionHSID = ?"; $qry = $this->db->query($sql, [$oldID, $oldID]); if (!$qry) { $this->log( " ERR update one_hs.ol_t_transactionHS" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } //m_patient $this->log(" Inserting ol_m_patient"); $sql = "select * from one_hs.ol_m_patient where M_PatientOldID = 0 or M_PatientOldID is null"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR insert ol_m_patient " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } foreach ($qry->result_array() as $r) { $oldID = $r["M_PatientID"]; list($c_status, $c_count, $msg) = $this->get_count( "one_hs.m_patient", "M_PatientOldID", $oldID ); if (!$c_status) { $this->log( " ERR get existing one_hs.m_patient " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } if ($c_count == 0) { unset($r["M_PatientID"]); $r["M_PatientOldID"] = $oldID; $qry = $this->db->insert("one_hs.m_patient", $r); $this->log(" one_hs.m_patient $oldID"); if (!$qry) { $this->log( " ERR insert one_hs.m_patient " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } $sql = "update one_hs.ol_m_patient set M_PatientOldID = ? where M_PatientID = ?"; $qry = $this->db->query($sql, [$oldID, $oldID]); if (!$qry) { $this->log( " ERR update one_hs.ol_m_patient " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } $this->log(" Inserting ol_m_patientaddress"); $sql = "select * from one_hs.ol_m_patientaddress where M_PatientAddressOldID = 0 or M_PatientAddressOldID is null"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR get ol_m_patientaddress " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } foreach ($qry->result_array() as $r) { $oldPatientID = $r["M_PatientAddressM_PatientID"]; $oldID = $r["M_PatientAddressID"]; list($c_status, $c_count, $msg) = $this->get_count( "one_hs.m_patientaddress", "M_PatientAddressOldID", $oldID ); if (!$c_status) { $this->log( " ERR get existing one_hs.m_patientaddress " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } if ($c_count == 0) { unset($r["M_PatientAddressID"]); $r["M_PatientAddressOldID"] = $oldID; $r["M_PatientAddressM_PatientOldID"] = $oldPatientID; $r["M_PatientAddressM_PatientID"] = 0; $qry = $this->db->insert("one_hs.m_patientaddress", $r); $this->log(" one_hs.m_patientaddress $oldID"); if (!$qry) { $this->log( " ERR insert one_hs.ol_m_patientaddress " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $newID = $this->db->insert_id(); $sql = " update one_hs.m_patient join one_hs.m_patientaddress on M_PatientOldID = ? and M_PatientAddressID= ? set M_PatientAddressM_PatientID = M_PatientID"; $qry = $this->db->query($sql, [$oldPatientID, $newID]); if (!$qry) { $this->log( " ERR update one_hs.m_patientaddress " . $this->db->error()["message"] ); echo $this->db->last_query(); $this->db->trans_rollback(); exit(); } } $sql = "update one_hs.ol_m_patientaddress set M_PatientAddressOldID = ? where M_PatientAddressID = ?"; $qry = $this->db->query($sql, [$oldID, $oldID]); if (!$qry) { $this->log( " ERR update one_hs.ol_m_patientaddress " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } $this->log(" Inserting ol_t_order"); $sql = "select * from one_hs.ol_t_order where T_OrderOldID = 0 or T_OrderOldID is null"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR insert ol_t_order " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } foreach ($qry->result_array() as $r) { $oldTxID = $r["T_OrderT_TransactionID"]; $oldID = $r["T_OrderID"]; $oldPatientID = $r["T_OrderM_PatientID"]; unset($r["T_OrderID"]); $r["T_OrderOldID"] = $oldID; $r["T_OrderT_TransactionID"] = 0; $r["T_OrderT_TransactionOldID"] = $oldTxID; $r["T_OrderM_PatientOldID"] = $oldPatientID; $r["T_OrderM_PatientID"] = 0; $this->log(" one_hs.t_order $oldID"); $qry = $this->db->insert("one_hs.t_order", $r); if (!$qry) { $this->log( " ERR insert one_hs.t_order" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $newID = $this->db->insert_id(); //update t_order $sql = "update one_hs.t_order join one_hs.t_transaction on T_OrderID=? and T_OrderT_TransactionOldID = T_TransactionOldID set T_OrderT_TransactionID = T_TransactionID"; $qry = $this->db->query($sql, [$newID]); if (!$qry) { $this->log( " ERR update one_hs.t_order " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } //update t_order m_patient $sql = "update one_hs.t_order join one_hs.m_patient on T_OrderID= ? and M_PatientOldID = ? set T_OrderM_PatientID= M_PatientID"; $qry = $this->db->query($sql, [$newID, $oldPatientID]); if (!$qry) { $this->log( " ERR update one_hs.t_order m_patientid " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $sql = "update one_hs.ol_t_order set T_OrderOldID= ? where T_OrderID= ?"; $qry = $this->db->query($sql, [$oldID, $oldID]); if (!$qry) { $this->log( " ERR update one_hs.ol_t_order" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } $this->log(" Inserting ol_t_orderdetail"); $sql = "select * from one_hs.ol_t_orderdetail where T_OrderDetailOldID = 0 or T_OrderDetailOldID is null"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR get ol_t_orderdetail " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } foreach ($qry->result_array() as $r) { $oldOrderID = $r["T_OrderDetailT_OrderID"]; $oldID = $r["T_OrderDetailID"]; unset($r["T_OrderDetailID"]); $r["T_OrderDetailOldID"] = $oldID; $r["T_OrderDetailT_OrderID"] = 0; $r["T_OrderDetailT_OrderOldID"] = $oldOrderID; $this->log(" one_hs.t_orderdetail $oldID"); $qry = $this->db->insert("one_hs.t_orderdetail", $r); if (!$qry) { $this->log( " ERR insert one_hs.ol_t_orderdetail " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $newID = $this->db->insert_id(); //update t_order $sql = "update one_hs.t_orderdetail join one_hs.t_order on T_OrderDetailID = ? and T_OrderDetailT_OrderOldID = T_OrderOldID set T_OrderDetailT_OrderID = T_OrderID"; $qry = $this->db->query($sql, [$newID]); if (!$qry) { $this->log( " ERR update one_hs.t_orderdetail " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $sql = "update one_hs.ol_t_orderdetail set T_OrderDetailOldID= ? where T_OrderDetailID= ?"; $qry = $this->db->query($sql, [$oldID, $oldID]); if (!$qry) { $this->log( " ERR update one_hs.ol_t_orderdetail " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } //$this->db->trans_rollback(); $this->log(" Inserting ol_t_orderdeliveries"); $sql = "select * from one_hs.ol_t_orderdeliveries where T_OrderDeliveriesOldID = 0 or T_OrderDeliveriesOldID is null"; $qry = $this->db->query($sql); if (!$qry) { $this->log( " ERR get ol_t_orderdetail " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } foreach ($qry->result_array() as $r) { $oldOrderID = $r["T_OrderDeliveriesT_OrderID"]; $oldID = $r["T_OrderDeliveriesID"]; unset($r["T_OrderDeliveriesID"]); $r["T_OrderDeliveriesOldID"] = $oldID; $r["T_OrderDeliveriesT_OrderID"] = 0; $r["T_OrderDeliveriesT_OrderOldID"] = $oldOrderID; $this->log(" one_hs.t_orderdeliveries $oldID"); $qry = $this->db->insert("one_hs.t_orderdeliveries", $r); if (!$qry) { $this->log( " ERR insert one_hs.ol_t_orderdeliveries" . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $newID = $this->db->insert_id(); //update t_order $sql = "update one_hs.t_orderdeliveries join one_hs.t_order on T_OrderDeliveriesID = ? and T_OrderDeliveriesT_OrderOldID = T_OrderOldID set T_OrderDeliveriesT_OrderID = T_OrderID"; $qry = $this->db->query($sql, [$newID]); if (!$qry) { $this->log( " ERR update one_hs.t_orderdeliveries " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } $sql = "update one_hs.ol_t_orderdeliveries set T_OrderDeliveriesOldID= ? where T_OrderDeliveriesID= ?"; $qry = $this->db->query($sql, [$oldID, $oldID]); if (!$qry) { $this->log( " ERR update one_hs.ol_t_orderdeliveries " . $this->db->error()["message"] ); $this->db->trans_rollback(); exit(); } } if ($stand_alone != "") { $this->db->trans_commit(); } return $arrTxIds; } function updateOnDuplicate($table, $data) { if (empty($table) || empty($data)) { return [false, "Empty Data"]; } $duplicate_data = []; foreach ($data as $key => $value) { $duplicate_data[] = sprintf("%s='%s'", $key, $value); } $sql = sprintf( "%s ON DUPLICATE KEY UPDATE %s", $this->db->insert_string($table, $data), implode(",", $duplicate_data) ); $qry = $this->db->query($sql); if (!$qry) { return [ false, $this->db->error()["message"] . "\n" . $this->db->last_query(), ]; } return [true, ""]; } function get($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 120); $result = curl_exec($ch); if (curl_errno($ch) > 0) { return [ "status" => "ERR", "message" => curl_error($ch), ]; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode != 200) { return [ "status" => "ERR", "message" => "Http Response : $httpCode", ]; } $j_result = json_decode($result, true); if (!$j_result) { return [ "status" => "ERR", "message" => "JSON invalid: $result", ]; } return $j_result; } function post($url, $data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 120); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/octet-stream", "Content-Length: " . strlen($data), ]); $result = curl_exec($ch); if (curl_errno($ch) > 0) { return [ "status" => "ERR", "message" => curl_error($ch), ]; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode != 200) { return [ "status" => "ERR", "message" => "Http Response : $httpCode", ]; } $j_result = json_decode($result, true); if (!$j_result) { return [ "status" => "ERR", "message" => "JSON invalid: $result", ]; } return $j_result; } }