У меня есть API квитанции, который генерирует квитанцию. При создании квитанции выполняется несколько операций SQL. Теперь, если я генерирую квитанцию по ошибке, как я могу отменить все последние операции.
Что мне нужно сделать, так это то, что я хочу, чтобы все данные были такими, как перед вызовом API. У меня есть идея о Rollback
, но я не знаю, как я могу использовать это в этом. Если вы поможете, пожалуйста, сделайте это.
Моя квитанция выглядит следующим образом.
<?php
include 'connection.php';
extract($_REQUEST);
$data = array();
$resArr = array();
$payment_type = $_POST['payment_type'];
$cheque_date = $_POST['cheque_date'];
$cheque_no = $_POST['cheque_no'];
$paid_amount = $_POST['paid_amount'];
$query = customSelectQuery(
"SELECT c.emi_amount as customer_emi_amount, ltc.no_of_month as ltc_no_of_month,
ltc.emi_date as ltc_emi_date, ltc.loan_amount as ltc_loan_amount
from loan_to_customer ltc
LEFT JOIN customer c ON c.customer_id = ltc.customer_id
WHERE ltc.customer_id = $customer_id");
// print_r($query);
if (isset($query)) {
$ltc_data = array();
foreach ($query as $row) {
$ltc_data = array(
'ltc_emi_date' => explode(',', $row['ltc_emi_date']),
'ltc_no_of_month' => $row['ltc_no_of_month'],
'ltc_loan_amount' => $row['ltc_loan_amount'],
'customer_emi_amount' => $row['customer_emi_amount']
);
}
}
$ltc_loan_amount = $ltc_data['ltc_loan_amount'];
$remaining_loan_amount = $ltc_loan_amount - $paid_amount;
$receipt_number = 'CMF/EMI/RECEIPT/126';
$receipt_data = array(
'customer_id' => $customer_id,
'payment_type' => $payment_type,
'cheque_date' => $cheque_date,
'cheque_no' => $cheque_no,
'paid_amount' => $paid_amount,
'remain_amount' => $remaining_loan_amount,
'receipt_no' => $receipt_number
);
$insert_in_reciept = insert("receipt", $receipt_data);
$removed_emi_date = array_shift($ltc_data['ltc_emi_date']);
$number_of_month_remaining = count($ltc_data['ltc_emi_date']);
$string_number_of_month_remaining = implode(',', $ltc_data['ltc_emi_date']);
$loan_to_customer_data = array(
'customer_id' => $customer_id,
'loan_amount' => $remaining_loan_amount,
'no_of_month' => $number_of_month_remaining,
'emi_date' => $string_number_of_month_remaining
);
$update_ltc = update("loan_to_customer", $loan_to_customer_data, 'customer_id = ' . $customer_id);
$query1 = customSelectQuery("select r.*, ltc.emi_date as ltc_emi_date, ltc.*, c.first_name,
c.middle_name, c.last_name, c.gender, c.cust_address, c.cust_city,
c.cust_dist, c.cust_state, c.cust_pincode FROM receipt r
LEFT JOIN customer c ON c.customer_id = r.customer_id
LEFT JOIN loan_to_customer ltc ON r.customer_id = ltc.customer_id
WHERE r.customer_id = $customer_id");
if (isset($query1)) {
$d = array();
foreach ($query1 as $row) {
$d = array(
'first_name' => $row['first_name'],
'middle_name' => $row['middle_name'],
'last_name' => $row['last_name'],
'gender' => $row['gender'],
'cust_address' => $row['cust_address'],
'cust_city' => $row['cust_city'],
'cust_state' => $row['cust_state'],
'cust_pincode' => $row['cust_pincode'],
'ltc_emi_date' => explode(',', $row['ltc_emi_date']),
'payment_type' => $row['payment_type'],
'cheque_date' => $row['cheque_date'],
'cheque_no' => $row['cheque_no'],
'paid_amount' => $row['paid_amount'],
'remain_amount' => $row['remain_amount'],
'penalty_amount' => $row['penalty_amount'],
'receipt_no' => $row['receipt_no'],
'emi_date' => $row['emi_date'],
'pending_penalty' => $row['pending_penalty'],
'paid_penalty' => $row['paid_penalty'],
'user' => $row['user'],
'user_branch' => $row['user_branch'],
'verify' => $row['verify'],
);
}
}
$resArr = array("success" => 1, "data" => $d, "message" => "");
header('Content-Type: application/json');
echo str_replace("\/", "/", json_encode($resArr, JSON_UNESCAPED_UNICODE));
?>