feat: POS GUI에 적립포인트 컬럼 추가
- 적립 사용자 정보와 함께 적립포인트 표시 - claim_tokens 테이블에서 claimable_points 조회 - 포인트 포맷: 천단위 콤마 + 'P' 접미사 (예: 1,500P) - 녹색 볼드 텍스트, 우측 정렬 - 테이블 컬럼 수: 7개 → 8개 - 윈도우 너비: 1200px → 1300px Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
30abf18e95
commit
3b8f8b232c
@ -83,7 +83,7 @@ class SalesQueryThread(QThread):
|
|||||||
|
|
||||||
# SQLite에서 적립 사용자 조회
|
# SQLite에서 적립 사용자 조회
|
||||||
sqlite_cursor.execute("""
|
sqlite_cursor.execute("""
|
||||||
SELECT u.nickname, u.phone
|
SELECT u.nickname, u.phone, ct.claimable_points
|
||||||
FROM claim_tokens ct
|
FROM claim_tokens ct
|
||||||
LEFT JOIN users u ON ct.claimed_by_user_id = u.id
|
LEFT JOIN users u ON ct.claimed_by_user_id = u.id
|
||||||
WHERE ct.transaction_id = ? AND ct.claimed_at IS NOT NULL
|
WHERE ct.transaction_id = ? AND ct.claimed_at IS NOT NULL
|
||||||
@ -94,9 +94,11 @@ class SalesQueryThread(QThread):
|
|||||||
if claimed_user and claimed_user['nickname'] and claimed_user['phone']:
|
if claimed_user and claimed_user['nickname'] and claimed_user['phone']:
|
||||||
claimed_name = claimed_user['nickname']
|
claimed_name = claimed_user['nickname']
|
||||||
claimed_phone = claimed_user['phone']
|
claimed_phone = claimed_user['phone']
|
||||||
|
claimed_points = claimed_user['claimable_points']
|
||||||
else:
|
else:
|
||||||
claimed_name = ""
|
claimed_name = ""
|
||||||
claimed_phone = ""
|
claimed_phone = ""
|
||||||
|
claimed_points = 0
|
||||||
|
|
||||||
sales_list.append({
|
sales_list.append({
|
||||||
'order_no': order_no,
|
'order_no': order_no,
|
||||||
@ -105,7 +107,8 @@ class SalesQueryThread(QThread):
|
|||||||
'customer': customer,
|
'customer': customer,
|
||||||
'item_count': item_count,
|
'item_count': item_count,
|
||||||
'claimed_name': claimed_name,
|
'claimed_name': claimed_name,
|
||||||
'claimed_phone': claimed_phone
|
'claimed_phone': claimed_phone,
|
||||||
|
'claimed_points': claimed_points
|
||||||
})
|
})
|
||||||
|
|
||||||
self.query_complete.emit(sales_list)
|
self.query_complete.emit(sales_list)
|
||||||
@ -376,7 +379,7 @@ class POSSalesGUI(QMainWindow):
|
|||||||
def init_ui(self):
|
def init_ui(self):
|
||||||
"""UI 초기화"""
|
"""UI 초기화"""
|
||||||
self.setWindowTitle('POS 판매 조회')
|
self.setWindowTitle('POS 판매 조회')
|
||||||
self.setGeometry(100, 100, 1200, 600)
|
self.setGeometry(100, 100, 1300, 600)
|
||||||
|
|
||||||
# 중앙 위젯
|
# 중앙 위젯
|
||||||
central_widget = QWidget()
|
central_widget = QWidget()
|
||||||
@ -430,9 +433,9 @@ class POSSalesGUI(QMainWindow):
|
|||||||
sales_group.setLayout(sales_layout)
|
sales_group.setLayout(sales_layout)
|
||||||
|
|
||||||
self.sales_table = QTableWidget()
|
self.sales_table = QTableWidget()
|
||||||
self.sales_table.setColumnCount(7)
|
self.sales_table.setColumnCount(8)
|
||||||
self.sales_table.setHorizontalHeaderLabels([
|
self.sales_table.setHorizontalHeaderLabels([
|
||||||
'주문번호', '시간', '금액', '고객명', '품목수', '적립자명', '전화번호'
|
'주문번호', '시간', '금액', '고객명', '품목수', '적립자명', '전화번호', '적립포인트'
|
||||||
])
|
])
|
||||||
self.sales_table.setColumnWidth(0, 160)
|
self.sales_table.setColumnWidth(0, 160)
|
||||||
self.sales_table.setColumnWidth(1, 70)
|
self.sales_table.setColumnWidth(1, 70)
|
||||||
@ -441,6 +444,7 @@ class POSSalesGUI(QMainWindow):
|
|||||||
self.sales_table.setColumnWidth(4, 70)
|
self.sales_table.setColumnWidth(4, 70)
|
||||||
self.sales_table.setColumnWidth(5, 100)
|
self.sales_table.setColumnWidth(5, 100)
|
||||||
self.sales_table.setColumnWidth(6, 120)
|
self.sales_table.setColumnWidth(6, 120)
|
||||||
|
self.sales_table.setColumnWidth(7, 100)
|
||||||
self.sales_table.setSelectionBehavior(QTableWidget.SelectRows)
|
self.sales_table.setSelectionBehavior(QTableWidget.SelectRows)
|
||||||
self.sales_table.doubleClicked.connect(self.show_sale_detail)
|
self.sales_table.doubleClicked.connect(self.show_sale_detail)
|
||||||
|
|
||||||
@ -554,6 +558,16 @@ class POSSalesGUI(QMainWindow):
|
|||||||
claimed_phone_item.setFont(font)
|
claimed_phone_item.setFont(font)
|
||||||
self.sales_table.setItem(row, 6, claimed_phone_item)
|
self.sales_table.setItem(row, 6, claimed_phone_item)
|
||||||
|
|
||||||
|
# 적립포인트 (SQLite)
|
||||||
|
claimed_points_item = QTableWidgetItem(f"{sale['claimed_points']:,}P" if sale['claimed_points'] > 0 else "")
|
||||||
|
if sale['claimed_points'] > 0:
|
||||||
|
claimed_points_item.setForeground(QColor('#4CAF50'))
|
||||||
|
claimed_points_item.setTextAlignment(Qt.AlignRight | Qt.AlignVCenter)
|
||||||
|
font = QFont()
|
||||||
|
font.setBold(True)
|
||||||
|
claimed_points_item.setFont(font)
|
||||||
|
self.sales_table.setItem(row, 7, claimed_points_item)
|
||||||
|
|
||||||
def on_query_error(self, error_msg):
|
def on_query_error(self, error_msg):
|
||||||
"""DB 조회 에러 처리"""
|
"""DB 조회 에러 처리"""
|
||||||
QMessageBox.critical(self, '오류', f'조회 실패:\n{error_msg}')
|
QMessageBox.critical(self, '오류', f'조회 실패:\n{error_msg}')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user