세금계산서 하기 전에 저장

This commit is contained in:
leeheejin 2025-12-08 14:34:18 +09:00 committed by kjs
parent 7f44855bc1
commit 660e889e23
3 changed files with 23 additions and 6 deletions

View File

@ -67,7 +67,7 @@ export class TableHistoryController {
const whereClause = whereConditions.join(" AND "); const whereClause = whereConditions.join(" AND ");
// 이력 조회 쿼리 // 이력 조회 쿼리 (log_id로 정렬 - 시간 데이터 불일치 문제 해결)
const historyQuery = ` const historyQuery = `
SELECT SELECT
log_id, log_id,
@ -84,7 +84,7 @@ export class TableHistoryController {
full_row_after full_row_after
FROM ${logTableName} FROM ${logTableName}
WHERE ${whereClause} WHERE ${whereClause}
ORDER BY changed_at DESC ORDER BY log_id DESC
LIMIT ${limitParam} OFFSET ${offsetParam} LIMIT ${limitParam} OFFSET ${offsetParam}
`; `;
@ -196,7 +196,7 @@ export class TableHistoryController {
const whereClause = whereConditions.length > 0 ? `WHERE ${whereConditions.join(" AND ")}` : ""; const whereClause = whereConditions.length > 0 ? `WHERE ${whereConditions.join(" AND ")}` : "";
// 이력 조회 쿼리 // 이력 조회 쿼리 (log_id로 정렬 - 시간 데이터 불일치 문제 해결)
const historyQuery = ` const historyQuery = `
SELECT SELECT
log_id, log_id,
@ -213,7 +213,7 @@ export class TableHistoryController {
full_row_after full_row_after
FROM ${logTableName} FROM ${logTableName}
${whereClause} ${whereClause}
ORDER BY changed_at DESC ORDER BY log_id DESC
LIMIT ${limitParam} OFFSET ${offsetParam} LIMIT ${limitParam} OFFSET ${offsetParam}
`; `;

View File

@ -1178,7 +1178,15 @@ export class DynamicFormService {
console.log("📝 실행할 DELETE SQL:", deleteQuery); console.log("📝 실행할 DELETE SQL:", deleteQuery);
console.log("📊 SQL 파라미터:", [id]); console.log("📊 SQL 파라미터:", [id]);
const result = await query<any>(deleteQuery, [id]); // 🔥 트랜잭션 내에서 app.user_id 설정 후 DELETE 실행 (이력 트리거용)
const result = await transaction(async (client) => {
// 이력 트리거에서 사용할 사용자 정보 설정
if (userId) {
await client.query(`SET LOCAL app.user_id = '${userId}'`);
}
const res = await client.query(deleteQuery, [id]);
return res.rows;
});
console.log("✅ 서비스: 실제 테이블 삭제 성공:", result); console.log("✅ 서비스: 실제 테이블 삭제 성공:", result);

View File

@ -13,6 +13,13 @@ import {
DialogTitle, DialogTitle,
DialogDescription, DialogDescription,
} from "@/components/ui/dialog"; } from "@/components/ui/dialog";
import {
ResizableDialog,
ResizableDialogContent,
ResizableDialogHeader,
ResizableDialogTitle,
ResizableDialogDescription,
} from "@/components/ui/resizable-dialog";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input"; import { Input } from "@/components/ui/input";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
@ -137,7 +144,9 @@ export function TableHistoryModal({
const formatDate = (dateString: string) => { const formatDate = (dateString: string) => {
try { try {
return format(new Date(dateString), "yyyy년 MM월 dd일 HH:mm:ss", { locale: ko }); // DB는 UTC로 저장, 브라우저가 자동으로 로컬 시간(KST)으로 변환
const date = new Date(dateString);
return format(date, "yyyy년 MM월 dd일 HH:mm:ss", { locale: ko });
} catch { } catch {
return dateString; return dateString;
} }