feat(returns): v8.59 반품 입고 중복 경고 및 송장 공백 매칭 개선
- 반품 입고 시 이미 등록된 송장번호면 중복 경고 안내창 표시 - 송장번호 입력값 strip 및 조회 쿼리 TRIM 적용으로 공백 매칭 문제 해결 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+29
-4
@@ -90,6 +90,7 @@ async def return_lookup(tracking_no: str):
|
||||
@router.post("/request")
|
||||
async def create_return_request(req: ReturnRequest):
|
||||
try:
|
||||
req.tracking_no = req.tracking_no.strip()
|
||||
conn = get_return_db_conn()
|
||||
cur = conn.cursor()
|
||||
if req.id:
|
||||
@@ -117,7 +118,7 @@ async def get_return_requests(tracking_no: Optional[str] = None):
|
||||
conn = get_return_db_conn()
|
||||
cur = conn.cursor()
|
||||
if tracking_no:
|
||||
cur.execute("SELECT * FROM return_requests WHERE tracking_no = %s ORDER BY created_at DESC LIMIT 1", (tracking_no,))
|
||||
cur.execute("SELECT * FROM return_requests WHERE TRIM(tracking_no) = %s ORDER BY created_at DESC LIMIT 1", (tracking_no.strip(),))
|
||||
else:
|
||||
cur.execute("SELECT * FROM return_requests ORDER BY id DESC LIMIT 50")
|
||||
rows = cur.fetchall()
|
||||
@@ -151,7 +152,7 @@ async def create_return_receive_bulk(req: BulkReturnReceive):
|
||||
address = ""
|
||||
|
||||
# 1. Check return_requests
|
||||
cur_return.execute("SELECT mall, receiver_name, phone, address, request_type, remarks FROM return_requests WHERE tracking_no = %s", (tracking_no,))
|
||||
cur_return.execute("SELECT mall, receiver_name, phone, address, request_type, remarks FROM return_requests WHERE TRIM(tracking_no) = %s", (tracking_no,))
|
||||
req_row = cur_return.fetchone()
|
||||
if req_row:
|
||||
mall = req_row['mall'] or ""
|
||||
@@ -203,11 +204,35 @@ async def create_return_receive_bulk(req: BulkReturnReceive):
|
||||
@router.post("/receive")
|
||||
async def create_return_receive(req: ReturnReceive):
|
||||
try:
|
||||
req.tracking_no = req.tracking_no.strip()
|
||||
conn = get_return_db_conn()
|
||||
cur = conn.cursor()
|
||||
|
||||
|
||||
# 중복 송장 검사
|
||||
if req.id:
|
||||
cur.execute("""
|
||||
SELECT receive_date, receiver_name, phone, mall, receive_status, remarks
|
||||
FROM return_receivings
|
||||
WHERE TRIM(tracking_no) = %s AND id != %s
|
||||
""", (req.tracking_no, req.id))
|
||||
else:
|
||||
cur.execute("""
|
||||
SELECT receive_date, receiver_name, phone, mall, receive_status, remarks
|
||||
FROM return_receivings
|
||||
WHERE TRIM(tracking_no) = %s
|
||||
""", (req.tracking_no,))
|
||||
|
||||
dup = cur.fetchone()
|
||||
if dup:
|
||||
conn.close()
|
||||
return {
|
||||
"success": False,
|
||||
"error_type": "duplicate",
|
||||
"data": dict(dup)
|
||||
}
|
||||
|
||||
if not req.id:
|
||||
cur.execute("SELECT request_type, remarks FROM return_requests WHERE tracking_no = %s", (req.tracking_no,))
|
||||
cur.execute("SELECT request_type, remarks FROM return_requests WHERE TRIM(tracking_no) = %s", (req.tracking_no,))
|
||||
req_row = cur.fetchone()
|
||||
if not req_row:
|
||||
if req.remarks:
|
||||
|
||||
Reference in New Issue
Block a user