Files
sam-kd/estimate/insert_detail_output.php
hskwon aca1767eb9 초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
2025-12-10 20:14:31 +09:00

107 lines
5.4 KiB
PHP

<?php
// 견적서 산출내역 저장루틴
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
header("Content-Type: application/json");
$mode = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : '';
$num = isset($_REQUEST['num']) ? $_REQUEST['num'] : '';
// parent_num이 num입니다.
$tablename = 'output_extra';
// JSON 데이터를 POST로 받아 처리
$detailJson = isset($_POST['detailJson']) ? $_POST['detailJson'] : '';
include '_request.php';
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();
try {
// 트랜잭션 시작
$pdo->beginTransaction();
// detailJson이 있는지 확인
$sql = "SELECT COUNT(*) AS cnt FROM $DB.$tablename WHERE parent_num=?";
$stmh = $pdo->prepare($sql);
$stmh->bindValue(1, $num, PDO::PARAM_STR);
$stmh->execute();
$row = $stmh->fetch(PDO::FETCH_ASSOC);
if ($row['cnt'] > 0) {
// detailJson이 이미 존재하므로 업데이트 처리
// 자료수정
$update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " " . $update_log . "&#10";
$sql = "UPDATE $DB.$tablename SET detailJson=?, update_log=?, estimateTotal=?, EstimateFirstSum=?, EstimateUpdatetSum=?, EstimateDiffer=?, estimateSurang=?, EstimateDiscountRate=?, EstimateDiscount=?, EstimateFinalSum=?, ET_total=?, ET_unapproved=? WHERE parent_num=? LIMIT 1";
$stmh = $pdo->prepare($sql);
$stmh->bindValue(1, $detailJson, PDO::PARAM_STR); // JSON 데이터를 text로 저장
$stmh->bindValue(2, $update_log, PDO::PARAM_STR);
$stmh->bindValue(3, intval(str_replace(',', '', $estimateTotal)), PDO::PARAM_INT); // int 형태로 저장
$stmh->bindValue(4, intval(str_replace(',', '', $EstimateFirstSum)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(5, intval(str_replace(',', '', $EstimateUpdatetSum)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(6, intval(str_replace(',', '', $EstimateDiffer)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(7, intval(str_replace(',', '', $estimateSurang)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(8, $EstimateDiscountRate, PDO::PARAM_STR); // 추가된 필드
$stmh->bindValue(9, intval(str_replace(',', '', $EstimateDiscount)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(10, intval(str_replace(',', '', $EstimateFinalSum)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(11, intval(str_replace(',', '', $ET_total)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(12, intval(str_replace(',', '', $ET_unapproved)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(13, $num, PDO::PARAM_STR);
$stmh->execute();
} else {
// detailJson이 없으므로 새로운 데이터로 삽입
$update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " ";
$sql = "INSERT INTO $DB.$tablename (parent_num, detailJson, update_log, estimateTotal, EstimateFirstSum, EstimateUpdatetSum, EstimateDiffer, estimateSurang, EstimateDiscountRate, EstimateDiscount, EstimateFinalSum, ET_total, ET_unapproved)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmh = $pdo->prepare($sql);
$stmh->bindValue(1, $num, PDO::PARAM_STR);
$stmh->bindValue(2, $detailJson, PDO::PARAM_STR); // JSON 데이터를 text로 저장
$stmh->bindValue(3, $update_log, PDO::PARAM_STR);
$stmh->bindValue(4, intval(str_replace(',', '', $estimateTotal)), PDO::PARAM_INT); // int 형태로 저장
$stmh->bindValue(5, intval(str_replace(',', '', $EstimateFirstSum)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(6, intval(str_replace(',', '', $EstimateUpdatetSum)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(7, intval(str_replace(',', '', $EstimateDiffer)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(8, intval(str_replace(',', '', $estimateSurang)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(9, $EstimateDiscountRate, PDO::PARAM_STR); // 추가된 필드
$stmh->bindValue(10, intval(str_replace(',', '', $EstimateDiscount)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(11, intval(str_replace(',', '', $EstimateFinalSum)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(12, intval(str_replace(',', '', $ET_total)), PDO::PARAM_INT); // 추가된 필드
$stmh->bindValue(13, intval(str_replace(',', '', $ET_unapproved)), PDO::PARAM_INT); // 추가된 필드
$stmh->execute();
}
// 트랜잭션 커밋
$pdo->commit();
// 응답 데이터 생성
$data = [
'num' => $num,
'mode' => ($row['cnt'] > 0) ? 'modify' : 'insert',
'estimateTotal' => $estimateTotal,
'EstimateFirstSum' => $EstimateFirstSum,
'EstimateUpdatetSum' => $EstimateUpdatetSum,
'EstimateDiffer' => $EstimateDiffer,
'estimateSurang' => $estimateSurang,
'EstimateDiscountRate' => $EstimateDiscountRate,
'EstimateDiscount' => $EstimateDiscount,
'EstimateFinalSum' => $EstimateFinalSum,
'ET_total' => $ET_total,
'ET_unapproved' => $ET_unapproved,
'status' => 'success'
];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
} catch (PDOException $Exception) {
// 예외 처리
error_log("오류: " . $Exception->getMessage());
$pdo->rollBack(); // 트랜잭션 롤백
http_response_code(500);
echo json_encode(['error' => $Exception->getMessage()]);
} catch (Exception $e) {
error_log("오류: " . $e->getMessage());
$pdo->rollBack(); // 트랜잭션 롤백
http_response_code(500);
echo json_encode(['error' => $e->getMessage()]);
}
?>