ChangePercenty2/ui/business_settings.py

103 lines
4.4 KiB
Python

from PyQt5.QtWidgets import QDialog, QVBoxLayout, QTabWidget, QWidget, QFormLayout, QLineEdit, QPushButton, QHBoxLayout, QLabel
from utils.config import ConfigManager
class BusinessSettingsDialog(QDialog):
def __init__(self, config: ConfigManager):
super().__init__()
self.config = config
self.setWindowTitle('사업자 설정')
self.init_ui()
def init_ui(self):
layout = QVBoxLayout()
self.tab_widget = QTabWidget()
business_count = int(self.config.get('DEFAULT', 'business_count', fallback='0'))
for i in range(business_count):
self.add_business_tab(i, load=True)
layout.addWidget(self.tab_widget)
button_layout = QHBoxLayout()
add_button = QPushButton('사업자 추가')
add_button.clicked.connect(self.add_new_business_tab)
save_button = QPushButton('저장')
save_button.clicked.connect(self.save_settings)
cancel_button = QPushButton('취소')
cancel_button.clicked.connect(self.reject)
button_layout.addWidget(add_button)
button_layout.addWidget(save_button)
button_layout.addWidget(cancel_button)
layout.addLayout(button_layout)
self.setLayout(layout)
def add_business_tab(self, index, load=False):
tab = QWidget()
form_layout = QFormLayout()
tab.setLayout(form_layout)
alias = QLineEdit(self)
business_number = QLineEdit(self)
business_name = QLineEdit(self)
registration_date = QLineEdit(self)
contact_number = QLineEdit(self)
if load:
alias.setText(self.config.get(f'BUSINESS_{index}', 'alias', fallback=''))
business_number.setText(self.config.get(f'BUSINESS_{index}', 'business_number', fallback=''))
business_name.setText(self.config.get(f'BUSINESS_{index}', 'business_name', fallback=''))
registration_date.setText(self.config.get(f'BUSINESS_{index}', 'registration_date', fallback=''))
contact_number.setText(self.config.get(f'BUSINESS_{index}', 'contact_number', fallback=''))
form_layout.addRow('사업자 별칭:', alias)
form_layout.addRow('사업자 등록번호:', business_number)
form_layout.addRow('상호명:', business_name)
form_layout.addRow('등록 날짜:', registration_date)
form_layout.addRow('응대 전화번호:', contact_number)
self.tab_widget.addTab(tab, f'사업자 {index + 1}')
def add_new_business_tab(self):
business_count = self.tab_widget.count()
max_businesses = int(self.config.get('DEFAULT', 'max_businesses', fallback='5'))
if business_count >= max_businesses:
self.show_error_message(f'최대 {max_businesses}개의 사업자만 추가할 수 있습니다.')
return
self.add_business_tab(business_count)
def show_error_message(self, message):
error_dialog = QDialog(self)
error_dialog.setWindowTitle('에러')
error_layout = QVBoxLayout()
error_label = QLabel(message)
error_layout.addWidget(error_label)
error_button = QPushButton('확인')
error_button.clicked.connect(error_dialog.accept)
error_layout.addWidget(error_button)
error_dialog.setLayout(error_layout)
error_dialog.exec_()
def save_settings(self):
business_count = self.tab_widget.count()
self.config.set('DEFAULT', 'business_count', str(business_count))
for i in range(business_count):
tab = self.tab_widget.widget(i)
form_layout = tab.layout()
alias = form_layout.itemAt(0, QFormLayout.FieldRole).widget().text()
business_number = form_layout.itemAt(1, QFormLayout.FieldRole).widget().text()
business_name = form_layout.itemAt(2, QFormLayout.FieldRole).widget().text()
registration_date = form_layout.itemAt(3, QFormLayout.FieldRole).widget().text()
contact_number = form_layout.itemAt(4, QFormLayout.FieldRole).widget().text()
self.config.set(f'BUSINESS_{i}', 'alias', alias)
self.config.set(f'BUSINESS_{i}', 'business_number', business_number)
self.config.set(f'BUSINESS_{i}', 'business_name', business_name)
self.config.set(f'BUSINESS_{i}', 'registration_date', registration_date)
self.config.set(f'BUSINESS_{i}', 'contact_number', contact_number)
self.accept()