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

169 lines
4.8 KiB
PHP

<?php
// eworks_process.php
require_once($_SERVER['DOCUMENT_ROOT'] . '/session.php');
header("Content-Type: application/json; charset=utf-8");
// DB 연결
require_once($_SERVER['DOCUMENT_ROOT'] . '/lib/mydb.php');
$pdo = db_connect();
$DB = 'chandj';
$planTable = 'account_plan_juil';
// 1) JSON 바디 파싱
$body = json_decode(file_get_contents('php://input'), true);
$items = $body['items'] ?? [];
if (empty($items)) {
echo json_encode([
'success' => false,
'message' => '전달된 지출 데이터가 없습니다.'
], JSON_UNESCAPED_UNICODE);
exit;
}
// 2) 공통 변수 세팅
$first = $items[0];
$payDate = $first['payDate']; // payDate 키 사용
$indate = $payDate;
$outdate = $payDate;
$mytitle = '일일지출내역서'; // 문서 제목
$content = ''; // 본문
$content_reason = ''; // 사유
$first_writer = $_SESSION['name'] . ' _' . date('Y-m-d H:i:s');
$author = '우지영'; // 결재 작성자
$author_id = 'spring';
$update_log = date('Y-m-d H:i:s')
. ' - ' . $_SESSION['name']
. ' 일일지출내역서 발송&#10';
$suppliercost = array_sum(array_column($items, 'amount'));
$store = '';
$secondordnum = '';
$secondordpaydate = $payDate;
// 3) eworks에 저장할 contents JSON
$eworks_contents = [
'e_title' => $mytitle,
'indate' => $indate,
'author' => $author,
'expense_data' => $items,
];
$contents = json_encode($eworks_contents, JSON_UNESCAPED_UNICODE);
// 4) 결재라인 조회
// try {
// $msql = "SELECT first_approval_id, first_approval_name
// FROM {$DB}.member
// WHERE name = ?";
// $mstmt = $pdo->prepare($msql);
// $mstmt->execute([ $author ]);
// $member = $mstmt->fetch(PDO::FETCH_ASSOC) ?: [];
// $first_approval_id = trim($member['first_approval_id'] ?? '');
// $first_approval_name = trim($member['first_approval_name'] ?? '');
// } catch (PDOException $e) {
// echo json_encode([
// 'success' => false,
// 'message' => '멤버 조회 오류: ' . $e->getMessage()
// ], JSON_UNESCAPED_UNICODE);
// exit;
// }
// 5) 결재 상태 및 라인 결정
$status = 'send';
// $e_line_id = $first_approval_id;
// $e_line = $first_approval_name;
$e_line_id = 'km5130';
$e_line = '이경호 대표';
// 6) eworks 신규 등록 & account_plan 컬럼 업데이트
try {
$pdo->beginTransaction();
// 6a) eworks INSERT
$sql = "INSERT INTO {$DB}.eworks (
indate,
outdate,
outworkplace,
request_comment,
first_writer,
author,
update_log,
contents,
e_title,
eworks_item,
registdate,
author_id,
status,
e_line_id,
e_line,
al_content,
suppliercost,
store,
secondordnum,
secondordpaydate
) VALUES (
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
$indate,
$outdate,
$mytitle,
$content_reason,
$first_writer,
$author,
$update_log,
$contents,
$mytitle,
$mytitle, // eworks_item = 일일지출내역서
date('Y-m-d H:i:s'),
$author_id,
$status,
$e_line_id,
$e_line,
$content, // al_content
$suppliercost,
$store,
$secondordnum,
$secondordpaydate
]);
// 6b) 방금 등록된 eworks num 가져오기
$eworksNum = $pdo->lastInsertId();
// 6c) account_plan 3개 컬럼 업데이트
$uSql = "UPDATE {$DB}.{$planTable}
SET approvalRequest = ?,
eworksNum = ?,
workDone = ?
WHERE num = ?
LIMIT 1";
$uStmt = $pdo->prepare($uSql);
foreach ($items as $item) {
$uStmt->execute([
$indate, // approvalRequest
$eworksNum,
$status === 'send' ? '요청중' : '완료',
(int)$item['num']
]);
}
$pdo->commit();
echo json_encode([
'success' => true,
'message' => count($items) . '건 결재요청 및 eworks 등록 완료',
'eworksNum' => $eworksNum,
], JSON_UNESCAPED_UNICODE);
} catch (PDOException $e) {
$pdo->rollBack();
echo json_encode([
'success' => false,
'message' => 'DB 오류: ' . $e->getMessage()
], JSON_UNESCAPED_UNICODE);
}