fix(items/list): "5월 22일 마감" 발주는 그 날 종일 노출 — 자정 정각이면 23:59:59로 해석
Deploy momo-erp / deploy (push) Successful in 2m14s
Deploy momo-erp / deploy (push) Successful in 2m14s
증상: sale_end_date='2026-05-22 00:00:00' 인 품목들이 5월 22일 0시 1분부터
출고요청 화면에서 사라짐. 사용자 의도는 "5월 22일 종일 마감".
원인: NOW() <= sale_end_date 비교가 자정 정각을 그 날의 끝이 아니라
그 날의 시작으로 해석.
수정: CASE 로 종료시각이 자정 정각이면 (= 시간 명시 안 함)
그 날 23:59:59 까지 노출. 시간 명시(예: 22:00)는 그 시각까지 정확히.
NOW() <= CASE
WHEN sale_end_date = date_trunc('day', sale_end_date)
THEN sale_end_date + INTERVAL '1 day' - INTERVAL '1 second'
ELSE sale_end_date
END
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -109,11 +109,22 @@ export async function POST(req: NextRequest) {
|
|||||||
}
|
}
|
||||||
// 출고요청(orders/new) 메뉴: 판매 가능 기간(sale_start_date ~ sale_end_date) 안의 품목만.
|
// 출고요청(orders/new) 메뉴: 판매 가능 기간(sale_start_date ~ sale_end_date) 안의 품목만.
|
||||||
// 기간이 NULL 인 품목은 상시 노출. USER 항상 적용, ADMIN 도 forSale=true 이면 적용.
|
// 기간이 NULL 인 품목은 상시 노출. USER 항상 적용, ADMIN 도 forSale=true 이면 적용.
|
||||||
// 분 단위 시간까지 비교 (NOW() vs TIMESTAMP)
|
//
|
||||||
|
// 종료일 비교 규칙:
|
||||||
|
// - sale_end_date 시간이 00:00:00 (자정 정각) 이면 → 그 날 23:59:59 까지 노출
|
||||||
|
// ("5월 22일 마감" 의도는 5월 22일 종일 노출이라는 통상 해석)
|
||||||
|
// - 시간이 명시 (예: 22:00) 되어 있으면 → 그 시각까지 정확히 비교
|
||||||
if (isUser || forSale) {
|
if (isUser || forSale) {
|
||||||
conditions.push(
|
conditions.push(
|
||||||
`(I.sale_start_date IS NULL OR NOW() >= I.sale_start_date)
|
`(I.sale_start_date IS NULL OR NOW() >= I.sale_start_date)
|
||||||
AND (I.sale_end_date IS NULL OR NOW() <= I.sale_end_date)`
|
AND (
|
||||||
|
I.sale_end_date IS NULL
|
||||||
|
OR NOW() <= CASE
|
||||||
|
WHEN I.sale_end_date = date_trunc('day', I.sale_end_date)
|
||||||
|
THEN I.sale_end_date + INTERVAL '1 day' - INTERVAL '1 second'
|
||||||
|
ELSE I.sale_end_date
|
||||||
|
END
|
||||||
|
)`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user