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()